Estratégia de cruzamento estocástico de vários prazos

Autora:ChaoZhang, Data: 23 de outubro de 2021 às 14:44:00
Tags:

img

Resumo

A Estratégia de Crossover Estocástico Multi-Tempo é uma estratégia típica de tendência. Ela calcula os valores de desvio padrão em diferentes prazos (por exemplo, diários, semanais, mensais, etc.), constrói várias linhas K e D, leva a média dessas linhas para construir médias móveis e vai longo quando a linha rápida cruza acima da linha lenta e vai curto quando a linha rápida cruza abaixo da linha lenta. Combinando linhas de desvio padrão em vários prazos, essa estratégia pode efetivamente filtrar o ruído do mercado e capturar a tendência predominante.

Estratégia lógica

A lógica central desta estratégia é calcular o desvio padrão em vários prazos e, em seguida, tomar a média para gerar sinais de negociação.

Em primeiro lugar, a estratégia calcula os valores K do desvio-padrão sob diferentes parâmetros em 5 grupos, correspondentes a prazos diários, semanais e mensais:

smoothK = input(55)
SMAsmoothK = input(13)  
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)

smoothK1 = input(89) 
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1) 

...

smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)

Então ele calcula D linhas com diferentes parâmetros, respectivamente:

smoothD = input(34)
d = sma(k, smoothD)  

...

smoothD4 = input(233) 
d4 = sma(k4, smoothD4)

Em seguida, ele calcula a média das linhas K e D para obter a linha rápida Kavg e linha lenta Davg:

Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)

Finalmente, ele vai longo quando Kavg cruza acima de Davg, e vai curto quando Kavg cruza abaixo de Davg:

long = crossover(Kavg, Davg)  
short = crossunder(Kavg, Davg)

Ao combinar linhas de desvio padrão em vários prazos, esta estratégia pode filtrar o ruído do mercado em prazos maiores e capturar a direção predominante da tendência.

Vantagens

  • Utiliza o poder preditivo do desvio padrão em vários prazos para filtrar o ruído e capturar tendências
  • Flexibilidade para ajustar o período de retenção ajustando os parâmetros do quadro temporal
  • O próprio desvio-padrão apresenta uma forte tendência
  • O cruzamento da média móvel evita ser induzido em erro por falhas individuais
  • Fácil de otimizar períodos de média móvel para maior estabilidade

Riscos e soluções

  • Crossovers de média móvel de vários prazos podem gerar muitos sinais falsos, otimizar períodos de média móvel
  • Desvio padrão propenso a erros de movimentos voláteis, considerar a adição de filtros
  • Os períodos fixos não podem adaptar-se às alterações do mercado, adoptando períodos de adaptação
  • Períodos de detenção longos de risco de perseguir altos e baixos, usar paradas de atraso para bloquear os lucros
  • Confiança apenas no indicador KDJ é limitada, combinar com outros indicadores

Soluções:

  1. Adicionar filtros para evitar falsos sinais de fuga

  2. Utilização de períodos de adaptação baseados na volatilidade do mercado

  3. Empregar trailing stops para sair das negociações em tempo hábil

  4. Otimizar períodos de média móvel para melhor equilíbrio

  5. Incorporar mais indicadores para melhorar a robustez

Oportunidades de melhoria

Esta estratégia pode ser melhorada nos seguintes domínios:

  1. Incorporar outros sinais de indicadores como MACD, Bollinger Bands para melhorar a qualidade do sinal

  2. Adicionar filtros de tendência como direção SMA, ADX para evitar negociações contra tendência

  3. Utilização de períodos de adaptação baseados na volatilidade do mercado

  4. Implementar trailing stops com base em parâmetros de estratégia para transações de saída

  5. Otimizar períodos de média móvel rápida e lenta para melhores parâmetros

  6. Adicionar filtros de entrada para evitar falsos sinais de ruído de curta duração

  7. Entrada de ruptura do ensaio após cruzamento de médias móveis

  8. Avalie diferentes estratégias de saída como Chandelier Exit para otimizar saídas

Conclusão

A Estratégia de Crossover Estocástico Multi Timeframe combina a capacidade de seguir a tendência do indicador estocástico e a estabilidade das estratégias de média móvel. Ao tomar a média das linhas de desvio padrão K e D de vários períodos para gerar sinais, ele utiliza efetivamente o poder preditivo do desvio padrão em diferentes prazos, filtra o ruído do mercado e capta a tendência predominante. Esta estratégia tem espaço para ajuste de parâmetros e melhorias adicionais como filtros, paradas, etc. No geral, integra os pontos fortes de várias ferramentas de análise técnica e é uma estratégia de tendência eficiente que vale a pena explorar e otimizar.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100)


price = input(close)

///////////////////////////////
smoothK = input(55) 

SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)



smoothD = input(34)
d = sma(k, smoothD)


///////////////////////////

smoothK1 = input(89) 

SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)

smoothD1 = input(55)
d1 = sma(k1, smoothD1)

//////////////////////////////////////

smoothK2 = input(144) 

SMAsmoothK2 = input(5)
k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2)

smoothD2 = input(89)
d2 = sma(k2, smoothD2)

/////////////////////////////////////

smoothK3 = input(233) 

SMAsmoothK3 = input(3)
k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3)

smoothD3 = input(144)
d3 = sma(k3, smoothD3)

////////////////////////////////////////////////

smoothK4 = input(377) 

SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)

smoothD4 = input(233)
d4 = sma(k4, smoothD4)

/////////////////////////////////////////////////

Kavg = avg(k,k1,k2,k3,k4, k4)
plot(Kavg, color=green)

Davg = avg(d,d1,d2,d3,d4, d4)
plot(Davg, color=red)


///////////////////////////////////////
hline(50, color=gray)


long = crossover(Kavg, Davg)// and d < 50
short = crossunder(Kavg, Davg)// and d > 50


last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) 
short_signal = crossover(last_short, last_long)



strategy.entry("Long", strategy.long, when=long_signal)
strategy.entry("Short", strategy.short, when=short_signal) 

//len1 = input(3)

//closelong = d[1] < k[len1]
//closeshort = d[1] > k[len1]

//strategy.close("Long", when=closelong)
//strategy.close("Short", when=closeshort)



Mais.