Esta estratégia adota a ruptura do canal de oscilação dinâmica para determinar pontos de entrada e stop loss com base no movimento do preço.
A estratégia primeiro calcula a maior alta e a menor baixa nos últimos 20 dias para obter um canal de oscilação dinâmica. Em seguida, calcula as médias móveis exponenciais de 8 dias e 32 dias. Quando o preço de fechamento atravessa a faixa superior do canal e a EMA de 8 dias está acima da EMA de 32 dias, ele vai longo. Quando o preço atravessa a faixa inferior ou a EMA de 8 dias cruza abaixo da EMA de 32 dias, ele sai. O stop loss é definido abaixo da faixa média do canal.
Especificamente, as condições de entrada são as seguintes:
O preço de fechamento rompe a faixa dinâmica superior formada pela maior alta dos últimos 20 dias.
A EMA de 8 dias está acima da EMA de 32 dias.
As condições de saída são:
Stop loss desencadeado quando o preço cai abaixo da faixa média.
A EMA de 8 dias cruza abaixo da EMA de 32 dias.
A estratégia identifica a direcção da tendência utilizando o canal dinâmico e o estado actual da tendência ascendente utilizando o cruzamento da EMA.
Os riscos podem ser geridos através da otimização do período de canal, dos períodos de EMA e do posicionamento de stop loss.
A estratégia de breakout de oscilação dinâmica tem uma lógica clara para identificar tendência e entrar com base no breakout do canal e cruzamento da EMA. O stop loss ajuda a controlar o risco. A regulação de parâmetros como período do canal e períodos da EMA pode melhorar o fator de lucro. Esta estratégia funciona bem para ações com padrões de continuação, especialmente quebrando máximos anteriores.
/*backtest start: 2022-11-09 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Robrecht99 //@version=5 strategy("My Strategy", overlay=true, margin_long=100, margin_short=100) fast = ta.sma(close, 8) slow = ta.sma(close, 32) plot(fast, color=color.red) plot(slow, color=color.navy) entrycondition1 = ta.crossover(fast, slow) entrycondition2 = fast > slow sellcondition1 = ta.crossunder(fast, slow) sellcondition2 = slow > fast atr = ta.atr(14) //Donchian Channels days = 20 h1 = ta.highest(high[1], days) l1 = ta.lowest(low[1], days) mid = math.avg(h1, l1) plot(mid, "channel", color=#FF6D00) u = plot(h1, "Upper", color=#2962FF) l = plot(l1, "Lower", color=#2962FF) fill(u, l, color.new(color.blue, 90)) if (close > h1 and entrycondition2) strategy.entry("long", strategy.long) stoploss = close - atr * 3 trail = close - atr * 3 strategy.exit("exit", "long", stop=stoploss, trail_offset=trail) if (sellcondition1 and sellcondition2) strategy.close(id="long")