Estratégia de backtesting baseada no indicador de transformação de Fisher

Autora:ChaoZhang, Data: 2024-01-25 14:22:36
Tags:

img

Resumo

Esta estratégia é uma estratégia de backtesting baseada no indicador de transformação de Fisher. A fórmula de transformação de Fisher pode converter dados de preço em uma distribuição normal para identificar extremos de preços e pontos de virada. Esta estratégia combina o indicador de transformação de Fisher para determinar tendências de preços e alcançar negociação automatizada.

Princípio da estratégia

  1. Calcular o indicador HL2
  2. Calcular o máximo xMaxH e o mínimo xMinL de HL2 nos períodos de comprimento mais recentes
  3. Calcule o indicador de transformação de Fisher:
    • nValue1 é 0,33 × ((HL2 padronizado) + 0,67 × nValue1 do período anterior
    • nValue2 limita o nValue1 entre -0,99 e 0,99
    • nFish é a transformação logarítmica de nValue2
  4. Determinar se nFish é positivo ou negativo para determinar a direção da posição
  5. Posição sinal possig, se a negociação inversa está definida, tomar a posição oposta
  6. sinal de entrada: possig=1 para longo, possig=-1 para curto

Análise das vantagens

  1. O indicador de transformação de Fisher pode identificar extremos de preços e pontos de virada para determinar com precisão as tendências
  2. A filtragem das flutuações através da combinação de indicadores HL2 aumenta a taxa de vitória
  3. A negociação reversa pode ser ajustada para se adaptar a diferentes ambientes de mercado
  4. A negociação automatizada sem julgamento manual reduz os custos de negociação

Análise de riscos

  1. O indicador de transformação de Fisher tem atraso e pode perder mudanças de preço a curto prazo
  2. Risco elevado de stop loss em tendências voláteis
  3. As configurações inadequadas de negociação reversa podem conduzir a operações sistematicamente errôneas
  4. Falta de verificação do ciclo cruzado, existe um certo risco de falso positivo

Soluções de riscos:

  1. Ajustar os parâmetros adequadamente para reduzir os atrasos
  2. Aumentar o intervalo de stop loss para controlar a perda de uma única transação
  3. Otimizar as operações reversas combinadas com outros indicadores de filtragem
  4. Aumentar os mecanismos múltiplos de verificação das tendências, níveis de preços, ciclos, etc.

Orientações para a otimização da estratégia

  1. Combinar indicadores de tendência para garantir a coerência das principais tendências
  2. Aumentar os indicadores cíclicos para melhorar a precisão do julgamento da inversão de preços
  3. Verificação em vários prazos para evitar falsos positivos
  4. Ajuste dinâmico do intervalo de perda de parada
  5. Otimizar os parâmetros para maximizar a taxa de vitória e o fator de lucro

As otimizações acima podem melhorar ainda mais a taxa de vitória da estratégia, bloquear os lucros, controlar os riscos e obter resultados comerciais mais estáveis e eficientes.

Resumo

A estratégia de backtesting do indicador de transformação de Fisher integra o indicador de transformação de Fisher para determinar pontos de reversão de preços e direções de tendência. Esta estratégia tem julgamentos precisos e um alto grau de automação. Através da otimização de parâmetros, resultados comerciais estáveis e eficientes podem ser obtidos. Mas também existem certos riscos, como atraso e falsos positivos.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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(1, color=white)
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")

Mais.