Esta estratégia usa uma combinação do canal de média móvel de 50 períodos, do índice direcional ADX e do índice de energia EFI para negociação de tendências.
Calcular o canal da média móvel de 50 períodos, sendo a faixa superior a média móvel dos preços elevados e a faixa inferior a média móvel dos preços baixos.
Calcular o índice direcional ADX para determinar a força da tendência e considerar apenas a negociação durante tendências fortes (ADX>20).
Calcular os índices energéticos do EFI a longo prazo (120 períodos) e a curto prazo (15 períodos).
Quando os índices EFI de longo e curto prazo dão um sinal de compra e o preço retorna para o canal de 50 MA, é tomada uma posição longa.
Quando os índices EFI de longo e curto prazo dão um sinal de venda e o preço retorna para o canal de 50 MA, é tomada uma posição curta.
Esta estratégia combina sinais de tendência, impulso e retração para filtrar efetivamente a maioria das falhas.
O canal de 50 MA determina claramente a principal direcção da tendência.
O índice ADX garante que as negociações só ocorram durante tendências claras, evitando falhas em mercados variáveis.
O índice EFI capta os aumentos de tendência energética para os pontos de entrada de baixo risco.
Esperar por retrações permite melhores rácios risco-recompensa.
As combinações de múltiplos indicadores filtram eficazmente os riscos de false breakout.
Os principais riscos desta estratégia são:
As tendências fortes também podem ter retrações maiores, exigindo intervalos de stop-loss mais amplos.
Em mercados variáveis, o EFI pode dar sinais falsos, exigindo a combinação com indicadores de filtragem de tendências como o ADX.
Os pullbacks que são muito profundos podem perder pontos de entrada, possivelmente exigindo ajuste MA.
Um único instrumento de negociação não diversifica os riscos sistemáticos do mercado.
Esta estratégia pode ser melhorada em vários aspectos:
Teste em mais instrumentos para encontrar parâmetros universais ideais.
Adicionar lucro através de perdas de parada de atraso.
Optimização de parâmetros de configurações ADX, EFI e mais.
Incorporar aprendizagem de máquina para a detecção de tendências robustas versus falhas.
Adicionar análise de vários prazos com dimensionamento de posição entre os prazos.
Avaliar mais indicadores de filtragem de tendências para melhorar a qualidade do sinal.
No geral, esta é uma excelente estratégia de pullback de tendência para iniciantes, combinando sinais de tendência, impulso e pullback para filtrar falhas. Com refinamentos em stop-loss, ajuste de parâmetros, prazos e muito mais, pode se tornar um sistema robusto de tendência.
/*backtest start: 2023-08-19 00:00:00 end: 2023-09-18 00:00:00 period: 1h basePeriod: 15m 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/ // © trent777brown //@version=5 // strategy("adx efi 50 ema channel, trend pullback", overlay=true, margin_long=100, margin_short=100, currency=currency.USD, initial_capital= 100000, close_entries_rule="ANY") //bollingerbands [basis, upperband, lowerband]= ta.bb(ohlc4, 50, 3) [basis2, upperband2, lowerband2]= ta.bb(ohlc4, 50, 2) psar= ta.sar(.1, .1, .09) ema50= ta.ema(hlc3, 50) ema50hi= ta.ema(high, 50) ema50lo= ta.ema(low, 50) ema18= ta.wma(hlc3, 15) wma9= ta.wma(open, 9) wma5= ta.wma(ohlc4, 5) ema34= ta.rma(hlc3, 10) [macdline, signalline, histline]= ta.macd(hlc3, 5, 34, 5) [macdline2, signalline2, histline2]= ta.macd(hlc3, 15,70, 24) [diplus, diminus, adx]= ta.dmi(20, 20) [diplus2, diminus2, adx2]= ta.dmi(12, 12) rsi= ta.rsi(hlc3, 14) rsisma= ta.sma(rsi, 10) stoch= ta.stoch(close, high, low, 21) k= ta.wma(stoch, 3) d= ta.wma(k, 3) trendline5= ta.wma(hlc3, 300) trendline9= ta.wma(open, 540) trendline18= ta.wma(open, 1080) atr=ta.atr(14) plot(psar, color=color.red, style=plot.style_circles) plot(ema50, color=color.white, linewidth=4) plot(ema50hi, color=color.yellow, linewidth=4) plot(ema50lo, color=color.yellow, linewidth=4) plot(ema34, color=color.aqua, linewidth=4) plot(wma9, color=color.gray, linewidth=4) plot(wma5, color=color.lime, linewidth=4) plot(trendline18, color=color.orange, linewidth=4) plot(upperband, color=color.navy, linewidth=4) plot(lowerband, color=color.navy, linewidth=4) plot(upperband2, color=color.navy, linewidth=4) plot(lowerband2, color=color.navy, linewidth=4) plot(trendline9, color=color.maroon, linewidth=4) plot(trendline5, color=color.yellow, linewidth=4) efi = ta.rma(ta.change(close) * volume, 15) efi2= ta.rma(ta.change(close) * volume, 120) buy= efi2 > 0 and efi < 0 and efi[1] < efi and adx >= 20 and open < ema50hi sell= efi2 < 0 and efi > 0 and efi[1] > efi and adx >= 20 and open > ema50lo //ell= rsi > 50 and ta.crossunder(wma5, wma9) and psar > high and ema18 <= ema50hi and macdline > 0 and macdline < signalline //buy= ta.crossunder(close, ema50) and rsi < 50 and adx2 < adx2[1] and k < 25 and psar > high //uy= rsi < 60 and ta.crossover(wma5, wma9) and psar < low and ema18 >= ema50 and macdline2 > 0 and diplus2 < 30 // and histline2 < 0 //buy= ema18 > ema50 and ta.crossunder(rsi, 45) and open < ema50hi and adx2[3] < adx2 and diplus2 < 25 and macdline < 0 and adx < 10 //sell= ta.crossover(close, ema50) and rsi > 50 and adx2 < adx2[1] and k > 75 and psar < low //ell= ema18 < ema50 and ta.crossover(rsi, 60) and open > ema50lo and diminus2 < 30 and macdline2 < 0 and adx2[2] < adx2 //buy sell conditions 1 //buy= ta.crossover(wma5, ema18) and ema18 > ema50lo and diplus > 22 and diminus < 22 and adx > 15 //ell= ta.crossover(psar, high) and macdline2 < signalline2 and rsi < rsisma //when conditions buytrig= ema34 >= ema50lo selltrig= ema34 <= ema50hi //strategy sl= low - atr * 8 tp= high + atr * 4 sellsl= high + atr * 8 selltp= low - atr * 4 if(buy) strategy.entry("buy", strategy.long, when= buytrig) strategy.exit("exit buy", "buy", limit= tp, stop= sl) strategy.close("close", when= ta.crossunder(ema34, ema50lo)) if(sell) strategy.entry("sell", strategy.short, when= selltrig) strategy.exit("exit sell", "sell", limit= selltp, stop= sellsl)