Transformação aleatória Fisher Paragem temporária Indicador inverso STOCH Estratégia quantitativa

Autora:ChaoZhang, Data: 2024-01-02 11:14:12
Tags:

img

Resumo

A ideia central desta estratégia é combinar o Random Fisher Transform e o indicador Temporary Stop Reverse STOCH para tomar decisões de compra e venda.

Princípio da estratégia

Esta estratégia primeiro calcula o indicador padrão STOCH, em seguida, executa uma transformação de Fisher sobre ele para obter o INVLine. Quando o INVLine cruza acima do limiar inferior dl, um sinal de compra é gerado. Quando o INVLine cruza abaixo do limiar superior ul, um sinal de venda é gerado. Ao mesmo tempo, esta estratégia também define um mecanismo de parada de atraso para bloquear lucros e reduzir perdas.

Especificamente, a lógica central desta estratégia é a seguinte:

  1. Calcular o indicador STOCH: utilizar a fórmula padrão para calcular o valor STOCH rápido do estoque
  2. Transformação de Fisher: Execute uma transformação de Fisher no valor STOCH para obter INVLine
  3. Gerar sinais de negociação: comprar quando a INVLine cruza acima dl, vender quando cruza abaixo ul
  4. Paragem de tração: habilitar um mecanismo de rastreamento temporário de paragem para uma perda de paragem oportuna

Análise das vantagens

As principais vantagens desta estratégia são:

  1. A transformação de Fisher melhora efetivamente a sensibilidade do indicador STOCH e pode detectar oportunidades de reversão da tendência mais cedo
  2. O mecanismo de parada temporária pode controlar eficazmente os riscos e bloquear os lucros
  3. É adequado para operações a médio prazo, especialmente para as operações quantitativas de alta frequência actualmente populares.
  4. O desempenho é bom em condições de mercado estáveis com rendimentos constantes

Análise de riscos

Esta estratégia tem também alguns riscos:

  1. O indicador STOCH é propenso a gerar sinais falsos, o que pode causar negociações desnecessárias
  2. A transformação de Fisher também amplifica o ruído do indicador STOCH, resultando em mais sinais falsos
  3. É fácil parar perdas em mercados oscilantes e não conseguir obter lucros sustentáveis
  4. Os períodos de detenção relativamente curtos são necessários para obter alfa.

Para mitigar estes riscos, considerar a otimização dos seguintes aspectos:

  1. Ajustar os parâmetros do STOCH para suavizar a curva e reduzir o ruído
  2. Otimizar as posições da linha de limiar para reduzir as probabilidades de negociação falsa
  3. Adicionar condições de filtro para evitar a negociação em mercados oscilantes
  4. Ajustar a duração do tempo de espera para corresponder ao ciclo de funcionamento

Orientações de otimização

As principais direcções para otimizar esta estratégia incluem:

  1. Otimizar os parâmetros da transformação de Fisher para curva INVLine suave
  2. Optimizar o comprimento do período STOCH para encontrar combinações ótimas de parâmetros
  3. Otimizar os parâmetros da linha de limiar para reduzir as probabilidades de negociação falsa
  4. Adicionar confirmação de preço de volume para evitar paragem desnecessária
  5. Adicionar filtros de ruptura intradiária para reduzir sinais falsos em mercados oscilantes
  6. Incorporar indicadores de tendência para evitar negociações contra tendência

Conclusão

Esta estratégia combina a Transformação aleatória de Fisher e o indicador STOCH para implementar uma estratégia quantitativa de curto prazo simples e prática. Sua vantagem reside na alta frequência de operação, que é adequada para a negociação quantitativa de alta frequência atualmente popular. Ao mesmo tempo, esta estratégia também tem alguns riscos comuns de estratégia de indicadores técnicos. Parâmetros e condições de filtro precisam ser otimizados para reduzir riscos e melhorar a estabilidade.


/*backtest
start: 2022-12-26 00:00:00
end: 2024-01-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("IFT Stochastic + Trailing Stop", overlay=false, pyramiding = 0, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0.0454, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//INPUTS
stochlength=input(19, "STOCH Length")
wmalength=input(4, title="Smooth")
ul = input(0.64,step=0.01, title="UP line")
dl = input(-0.62,step=0.01, title="DOWN line")
uts = input(true, title="Use trailing stop")
tsi = input(title="trailing stop actiation pips",defval=245)                                                                       
tso = input(title="trailing stop offset pips",defval=20)

//CALCULATIONS
v1=0.1*(stoch(close, high, low, stochlength)-50)
v2=wma(v1, wmalength)
INVLine=(exp(2*v2)-1)/(exp(2*v2)+1)

//CONDITIONS
sell = crossunder(INVLine,ul)? 1 : 0
buy = crossover(INVLine,dl)? 1 : 0

//PLOTS
plot(INVLine, color=aqua, linewidth=1, title="STOCH")
hline(ul, color=red)
hline(dl, color=green)
bgcolor(sell==1? red : na, transp=30, title = "sell signal")
bgcolor(buy==1? lime : na, transp=30, title = "buy signal")
plotchar(buy==1, title="Buy Signal", char='B', location=location.bottom, color=white, transp=0, offset=0)
plotchar(sell==1, title="Sell Signal", char='S', location=location.top, color=white, transp=0, offset=0)

//STRATEGY
strategy.entry("BUY", strategy.long, when = buy==1)
strategy.entry("SELL", strategy.short, when = sell==1)

if  (uts)
    strategy.entry("BUY", strategy.long, when = buy)
    strategy.entry("SELL", strategy.short, when = sell)
    strategy.exit("Close BUY with TS","BUY", trail_points = tsi, trail_offset = tso)
    strategy.exit("Close SELL with TS","SELL", trail_points = tsi, trail_offset = tso)


Mais.