A estratégia de backtest da Transformação de Fisher calcula a transformação de Fisher dos preços para identificar pontos de reversão de preços e gerar sinais de negociação em conformidade. A estratégia processa preços usando a fórmula de transformação de Fisher para remover características não-gaussianas das distribuições de preços, resultando em um indicador padronizado com uma distribuição gaussiana aproximada. A estratégia determina reversões de preços com base em pontos de inflexão da curva de transformação de Fisher e produz sinais longos e curtos.
O núcleo desta estratégia é processar preços usando a fórmula da transformação de Fisher para eliminar características não gaussianas das distribuições de preços naturais.
y = 0,5 * ln (((1+x) / (((1-x))
Aqui x é o preço processado, obtido primeiro encontrando os preços mais altos e mais baixos nos períodos de comprimento mais recentes usando as funções mais altas e mais baixas, e depois normalizando da seguinte forma:
x = (preço - mínimo) / (máximo - mínimo) - 0,5
Os preços processados dessa forma aproximam-se de uma distribuição gaussiana. x é então substituído na fórmula de transformação de Fisher para obter a curva de transformação de Fisher.
Quando a curva de transformação de Fisher passa de positiva para negativa, um sinal de venda é gerado.
A transformação de Fisher remove características não gaussianas dos preços, resultando em preços mais bem comportados e padronizados e menos sinais falsos
Captura pontos de reversão de preços, evitando perseguir altos e baixos
Ajuste flexível dos parâmetros para a sensibilidade de inversão de regulação
Direcionalidade personalizável, adapta-se a vários ambientes de mercado
Lógica simples, fácil de entender e implementar
Ajustes de parâmetros incorretos podem perder curvas ou gerar sinais falsos
O deslizamento na negociação ao vivo pode impedir a execução perfeita do sinal
Difícil de identificar voltas quando os preços são voláteis
Difícil de aplicar na negociação ao vivo com necessidade de confirmar reversões
Soluções:
Optimize os parâmetros ajustando o comprimento
Relaxar os critérios de entrada adequadamente para garantir preenchimentos
Filtrar sinais falsos que combinem outros indicadores
Seguir rigorosamente as regras e gerir os riscos
Optimize o parâmetro de comprimento para encontrar a melhor combinação
Adicionar filtros para evitar sinais falsos, por exemplo, médias móveis, indicadores de volatilidade, etc.
Incorporar o stop loss para controlar a perda por transação
Adicionar um mecanismo de reentrada para acompanhar as tendências contínuas
A estratégia Fisher Transform backtest identifica pontos de reversão de preços removendo características de preços não gaussianas. É uma estratégia de reversão média facilmente implementável. Suas vantagens estão em parâmetros flexíveis para capturar voltas, enquanto sua principal fraqueza é a dificuldade de implementação ao vivo com a necessidade de regras de entrada rígidas. Vários métodos podem ser usados para otimizar essa estratégia para aplicabilidade prática.
/*backtest start: 2023-11-26 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 //////////////////////////////////////////////////////////// // Copyright by HPotter v2.0 22/12/2016 // Market prices do not have a Gaussian probability density function // as many traders think. Their probability curve is not bell-shaped. // But trader can create a nearly Gaussian PDF for prices by normalizing // them or creating a normalized indicator such as the relative strength // index and applying the Fisher transform. Such a transformed output // creates the peak swings as relatively rare events. // Fisher transform formula is: y = 0.5 * ln ((1+x)/(1-x)) // The sharp turning points of these peak swings clearly and unambiguously // identify price reversals in a timely manner. // // For signal used zero. // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="Fisher Transform Indicator by Ehlers Backtest", shorttitle="Fisher Transform Indicator by Ehlers") Length = input(10, minval=1) reverse = input(false, title="Trade reverse") hline(0, color=blue) xHL2 = hl2 xMaxH = highest(xHL2, Length) xMinL = lowest(xHL2,Length) nValue1 = 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1]) nValue2 = iff(nValue1 > .99, .999, iff(nValue1 < -.99, -.999, nValue1)) nFish = 0.5 * log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1]) pos = iff(nFish > 0, 1, iff(nFish < 0, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nFish, color=green, title="Fisher") plot(nz(nFish[1]), color=red, title="Trigger")