Estratégia de oscilador estocástico duplo

Autora:ChaoZhang, Data: 2023-09-17 18:26:16
Tags:

Resumo

Esta estratégia usa dois osciladores estocásticos com parâmetros diferentes para determinar as condições bull/bear. É um sistema típico de cruzamento de média móvel. O oscilador mais rápido julga tendências de curto prazo e sinais de entrada, enquanto o mais lento confirma a direção geral da tendência. Os sinais são gerados a partir da combinação.

Estratégia lógica

  1. O rápido %K mostra a direção da tendência a curto prazo.

  2. Quando o oscilador rápido fornece um sinal de reversão, verifique a validade do oscilador lento.

  3. %K cruzamento rápido acima do SM1 indica sinal de alta. %K lento acima de 50 significa tendência de alta, satisfazendo a condição longa.

  4. O cruzamento rápido de %K abaixo de SM1 indica um sinal de baixa.

  5. Fixar pontos de lucro e stop loss em percentagens fixas.

Análise das vantagens

  1. A combinação rápida e lenta reduz os riscos de ficar preso.

  2. O parâmetro SM1 mais pequeno torna %K sensível à captura de oportunidades de curto prazo.

  3. Os ciclos maiores julgam a tendência geral, os ciclos menores captam reversões.

  4. Pontos fixos de lucro e stop loss tornam o risco controlado sem grandes oscilações.

Análise de riscos

  1. A divergência entre os indicadores pode causar trocas perdidas ou sinais errados.

  2. Os pontos fixos de obtenção de lucro e de stop loss não têm flexibilidade para se adaptarem aos mercados.

  3. Parâmetros estocásticos precisam de otimização repetitiva, configurações inadequadas levam ao fracasso.

  4. A alta frequência de negociação da negociação a curto prazo aumenta os custos de transação.

Orientações de otimização

  1. Adicionar outros indicadores ou filtros para garantir a qualidade do sinal.

  2. Teste diferentes combinações de parâmetros para encontrar configurações ideais.

  3. Incorporar medidas de volatilidade para tornar dinâmicos os níveis de captação de lucros e stop loss.

  4. Use filtros de tempo para evitar eventos-chave e oscilações irracionais de preços.

  5. Otimizar as estratégias de gestão de capital, como o dimensionamento das posições, para melhorar a eficiência do capital.

Resumo

Esta estratégia integra osciladores estocásticos rápidos e lentos em um sistema bidirecional. A otimização adicional de parâmetros e a adição de filtros como indicadores de tendência e volatilidade podem melhorá-lo. Com controle de risco adequado, esta estratégia pode alcançar retornos excessivos relativamente constantes.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Double Stochastic", overlay=true)

//-----------------------Stochastics------------------------//

c= security(syminfo.tickerid,timeframe.period , close)  
h= security(syminfo.tickerid, timeframe.period, high)  
l= security(syminfo.tickerid, timeframe.period, low)  

c1= security(syminfo.tickerid, timeframe.period, close)  
h2= security(syminfo.tickerid, timeframe.period, high)  
l1= security(syminfo.tickerid, timeframe.period, low)  

K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)

K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)

// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50) 
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50

//-----------------------Mechanics------------------------//

buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0

buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)

buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)

//------------------------Buy/Sell-------------------------//

longCondition = buy == 1
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

close_long = close >= buy_close
if (close_long)
    strategy.close("My Long Entry Id")
    
sellCondition = sell == 1
if (sellCondition)
    strategy.entry("My Short Entry Id", strategy.short)

close_short = close <= sell_close
if (close_short)
    strategy.close("My Short Entry Id")    

Mais.