O recurso está a ser carregado... Carregamento...

Fisher Transform Tendência de limiar dinâmico Seguindo estratégia

Autora:ChaoZhang, Data: 2024-06-17 15:01:19
Tags:

img

Resumo

A estratégia de Fisher Transform Dynamic Threshold Trend Following utiliza o indicador Fisher Transform para identificar mudanças nas tendências de preços. A estratégia usa a Fisher Transform para normalizar os preços em uma escala padrão, facilitando a detecção de pontos de reversão de tendências potenciais. Ao ajustar dinamicamente os limiares, a estratégia se adapta a diferentes condições de mercado e melhora a precisão do reconhecimento de tendências. Quando o valor da Fisher Transform cruza limiares positivos ou negativos, a estratégia gera sinais de compra ou venda para seguir as tendências do mercado.

Princípio da estratégia

  1. Calcule o valor da transformação de Fisher: com base nos preços altos e baixos históricos, normalize o preço atual para obter um valor da transformação de Fisher entre -0,999 e 0,999.
  2. Limite dinâmico: ajustar dinamicamente o limiar para os sinais de compra e venda com base na volatilidade histórica do valor da Fisher Transform para se adaptar aos diferentes estados do mercado.
  3. Determinação da tendência: Determinação das alterações nas tendências dos preços através da comparação do valor atual da transformação Fisher com os valores dos dois períodos anteriores.
  4. Signais de compra e venda: geram um sinal de compra quando o valor da transformação de Fisher cruza o limiar negativo de baixo e geram um sinal de venda quando o valor da transformação de Fisher cruza o limiar positivo de cima.

Análise das vantagens

  1. Ajuste dinâmico dos limiares: ajustar de forma adaptativa os limiares de compra e venda com base na volatilidade do mercado para melhorar a precisão do julgamento da tendência.
  2. Seguimento de tendências: O cálculo da tendência do indicador Fisher Transform permite a captura eficaz das tendências do mercado e a negociação de tendências.
  3. Redução do ruído dos preços: A Transformação Fisher normaliza os preços, ajudando a reduzir o impacto do ruído dos preços no julgamento da tendência.
  4. Display de gráfico intuitivo: A estratégia traça a curva de transformação de Fisher e as linhas de limiar no gráfico, permitindo que os comerciantes observem visualmente as tendências do mercado e os sinais de compra / venda.

Análise de riscos

  1. Risco de otimização de parâmetros: o desempenho da estratégia depende da seleção de parâmetros como o período de transformação de Fisher e o método de cálculo do limiar dinâmico.
  2. Retardo de reconhecimento de tendências: O indicador Fisher Transform tem um certo atraso na avaliação das tendências de preços, que podem perder alguns movimentos de tendência.
  3. Mau desempenho em mercados instáveis: em condições de mercado instáveis, mudanças frequentes de tendência podem fazer com que a estratégia gere mais sinais falsos, levando a um desempenho comercial subóptimo.
  4. Risco de mercado extremo: em condições de mercado extremas (como mudanças rápidas e substanciais), o indicador Fisher Transform pode falhar, fazendo com que a estratégia tome decisões comerciais incorretas.

Direcção de otimização

  1. Optimização de parâmetros: Otimização de parâmetros-chave como o período de transformação de Fisher e o método de cálculo de limiar dinâmico para melhorar a adaptabilidade da estratégia a diferentes estados de mercado.
  2. Filtragem de sinais: para além do reconhecimento de tendências, introduzir outros indicadores técnicos ou indicadores de sentimento do mercado para confirmar os sinais de negociação e melhorar a fiabilidade dos sinais.
  3. Stop-loss e take-profit: estabelecer regras razoáveis de stop-loss e take-profit para controlar o risco de transacção única e melhorar a relação risco/recompensa da estratégia.
  4. Gerenciamento de posições: ajustar dinamicamente o tamanho das posições com base em fatores como a força da tendência do mercado e a volatilidade dos preços para reduzir o risco de detenção.

Resumo

A estratégia Fisher Transform Dynamic Threshold Trend Following identifica mudanças nas tendências de preços usando o indicador Fisher Transform e limiares dinâmicos, adaptando-se a diferentes estados de mercado. A estratégia captura efetivamente as tendências do mercado e permite a negociação de tendência. Suas vantagens incluem ajuste dinâmico de limiar, redução da interferência de ruído de preço e exibição intuitiva de gráficos.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Qiuboneminer -  Fisher Transform", overlay=true)

// Parámetros
Len = input.int(10, minval=1)
mult1 = input.int(1, minval=1)
threshold = 2.6

// Función Fisher Transform
fish(Length, timeMultiplier) =>
    var float nValue1 = na
    var float nFish = na
    xHL2 = hl2
    xMaxH = ta.highest(xHL2, Length * timeMultiplier)
    xMinL = ta.lowest(xHL2, Length * timeMultiplier)
    nValue1 := 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1])
    nValue2 = if nValue1 > 0.99
        0.999
    else if nValue1 < -0.99
        -0.999
    else
        nValue1
    nFish := 0.5 * math.log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1])
    nFish

// Cálculo del Fisher Transform para mult1
Fisher1 = fish(Len, mult1)

// Condiciones de entrada y salida
longCondition = Fisher1 > nz(Fisher1[1]) and nz(Fisher1[1]) <= nz(Fisher1[2]) and Fisher1 < -threshold
shortCondition = Fisher1 < nz(Fisher1[1]) and nz(Fisher1[1]) >= nz(Fisher1[2]) and Fisher1 > threshold

// Estrategia de entrada
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Ploteo del Fisher Transform
plot(Fisher1, color=(Fisher1 > nz(Fisher1[1]) ? color.rgb(34, 255, 0) : color.rgb(255, 0, 212)), title="Fisher TF:1")

// Ploteo de líneas de umbral
hline(threshold, "Umbral Superior", color=color.rgb(255, 0, 0), linestyle=hline.style_dotted)
hline(-threshold, "Umbral Inferior", color=#008704, linestyle=hline.style_dotted)


Mais.