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

Estratégia de ruptura do momento estocástico

Autora:ChaoZhang, Data: 2023-10-24 16:35:24
Tags:

img

Resumo

A estratégia Momentum Breakout usa principalmente o indicador do oscilador estocástico para determinar a direção da tendência do mercado, combinado com o indicador ADX para julgar a força da tendência, para gerar sinais de negociação.

Estratégia lógica

A estratégia baseia-se em dois indicadores técnicos:

  1. Oscilador estocástico: usado para determinar a direção da tendência do mercado. O valor do oscilador estocástico varia de 0 a 100. Um valor entre 45 e 55 quando o período é 14 significa que não há uma tendência clara. Um estocástico acima de 55 é um sinal de alta e abaixo de 45 é um sinal de baixa.

  2. Indicador ADX: usado para avaliar a força da tendência.

A estratégia julga primeiro se há uma tendência de alta ou baixa clara com base no valor do oscilador estocástico. Quando o estocástico está acima de 55, ele sinaliza uma tendência de alta. Quando está abaixo de 45, ele sinaliza uma tendência de queda.

Se o ADX for acima de 20, significa que a tendência é forte o suficiente para a negociação de tendências.

Ao combinar o oscilador estocástico e o ADX, os sinais de negociação são gerados quando ambas as seguintes condições são satisfeitas:

  1. Estocástico acima de 55, sinalizando uma tendência de alta.
  2. ADX acima de 20, confirmando a tendência de alta é forte.

Os sinais de venda são gerados quando ambas as seguintes condições são satisfeitas:

  1. Estocástico abaixo de 45, sinalizando uma tendência de queda.
  2. ADX acima de 20, confirmando a tendência de queda é forte.

Com estas regras, a estratégia constitui um sistema de seguimento de tendências a médio e longo prazo.

Vantagens

As vantagens desta estratégia incluem:

  1. Captura de tendências de médio a longo prazo: Ao combinar o Stochastic e o ADX, ele pode determinar efetivamente a direção e a força da tendência do mercado, captando as principais tendências.

  2. Controle de retirada: somente a negociação quando a tendência é clara pode ajudar a controlar os golpes desnecessários.

  3. Ajuste de parâmetros: Os períodos do Estocástico e do ADX podem ser otimizados para diferentes mercados.

  4. Simplicidade: a lógica geral é simples e intuitiva, consistindo em dois indicadores técnicos comuns.

  5. Universalidade: a estratégia pode ser aplicada a diferentes mercados com ajuste de parâmetros.

Riscos

Alguns riscos da estratégia:

  1. Pontos de ruptura em falta: Como indicadores de tendência, o Stochastic e o ADX podem perder pontos de reversão de tendência potenciais e operações de ruptura precoce.

  2. Riscos de reversão da tendência: podem julgar erroneamente que a tendência continua perto do fim de uma tendência, perdendo oportunidades de sair em tempo hábil, levando a perdas amplificadas.

  3. Dificuldade na otimização de parâmetros: os parâmetros precisam ser ajustados para diferentes mercados, o que representa alguma dificuldade.

  4. Whipsaws: Pode gerar múltiplos sinais inválidos em mercados de gama sem uma tendência clara.

  5. Divergência: quando a tendência de preços entra em conflito com a tendência do oscilador estocástico, surge a divergência, o que pode levar a operações perdedoras.

Os riscos poderiam ser mitigados por:

  1. Adicionar outros indicadores para identificar tendências locais e pontos de ruptura potenciais.

  2. Incorporar sinais de inversão de tendência para sair em tempo útil quando as tendências se inverterem substancialmente.

  3. Usando aprendizado de máquina para otimizar automaticamente parâmetros.

  4. Aumentar o limiar ADX para filtrar sinais de tendência fracos em mercados variados.

  5. Aplicação de indicadores adicionais para confirmar os sinais estocásticos e evitar operações de divergência.

Orientações para melhorias

Algumas formas de melhorar a estratégia:

  1. Otimizar parâmetros estocásticos como os períodos K e D para localizar pontos de virada com precisão.

  2. Otimizar o período ADX para determinar os melhores parâmetros para avaliar a força da tendência.

  3. Adicionar sinais de reversão da tendência, tais como o aumento do tamanho da posição nas zonas estocásticas de sobrecompra/supervenda com stop loss.

  4. Combinar outros indicadores como RSI e MACD para refinar o tempo de entrada e saída.

  5. Usando aprendizagem de máquina para encontrar as combinações ótimas de parâmetros.

  6. Implementar estratégias de stop loss como mover o stop loss ou reverter o stop loss para controlar a perda de uma única negociação.

  7. Trailong stop loss: adicionar stop loss para bloquear os lucros à medida que a tendência se estende.

  8. Gestão de fundos: Otimizar a gestão de riscos ajustando o dimensionamento das posições com base na força do ADX.

Resumo

Em resumo, esta estratégia Momentum Breakout é, em geral, um sistema de tendência, usando Stochastic para determinar a direção da tendência e ADX para medir a força, formando uma estratégia de negociação de médio a longo prazo. As vantagens estão em capturar tendências e controlar drawdowns com uma lógica simples e intuitiva. As fraquezas são potenciais negócios de ruptura precoce perdidos e riscos de reversão da tendência. Podemos otimizá-lo por meio de métodos como ajuste de parâmetros, adição de sinais, implementação de stop loss para melhorar a recompensa / risco enquanto controlamos riscos.


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

//Created by Bitcoinduke
//Original Creator is Jake Bernstein 
// Link: https://school.stockcharts.com/doku.php?id=trading_strategies:stochastic_pop_drop
// Tested: XBTUSD 3h | BTCPERP FTX 3h
//@version=4
// strategy(shorttitle="Stochastic Pop and Drop", title="Pop and Drop", overlay=false, 
//      calc_on_every_tick=false, pyramiding=0, default_qty_type=strategy.cash, 
//      default_qty_value=1000, currency=currency.USD, initial_capital=1000,
//      commission_type=strategy.commission.percent, commission_value=0.075)

upper_threshold_buy = input(55, minval=50, title="Buy Entry/Exit Line")
lower_threshold_sell = input(45, maxval=50, title="Sell Entry/Exit Line")

oscillator_length = input(14, minval=1, title="Stochastic Length - Default 14")
sma_length = input(2, minval=1, title="SMA Length - 3-day (3 by default) simple moving average of stoch")

stoch_oscillator = sma(stoch(close, high, low, oscillator_length), sma_length)

//Upper and Lower Entry Lines
upper_line = upper_threshold_buy
lower_line = lower_threshold_sell

stoch_color = stoch_oscillator >= upper_line ? green : stoch_oscillator <= lower_line ? red : purple

//Charts
plot(stoch_oscillator, title="Stochastic", style=histogram, linewidth=4, color=stoch_color)
upper_threshold = plot(upper_line, title="Upper Line", style=line, linewidth=4, color=green)
lower_threshold = plot(lower_line, title="Lower Line", style=line, linewidth=4, color=red)

// Strategy Logic
LongSignal = stoch_oscillator >= upper_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false
ShortSignal = stoch_oscillator <= lower_line and not (stoch_oscillator > lower_line and stoch_oscillator < upper_line) ? true : false

strategy.entry("POP_Short", strategy.short, when=ShortSignal)
strategy.entry("POP_Long", strategy.long, when=LongSignal)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(5, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END



Mais.