ADX EFI 50 Média móvel Estratégia de recuperação do canal

Autora:ChaoZhang, Data: 2023-09-19 17:10:51
Tags:

Resumo

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.

Estratégia lógica

  1. 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.

  2. 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).

  3. Calcular os índices energéticos do EFI a longo prazo (120 períodos) e a curto prazo (15 períodos).

  4. 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.

  5. 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.

Análise das vantagens

Esta estratégia combina sinais de tendência, impulso e retração para filtrar efetivamente a maioria das falhas.

  1. O canal de 50 MA determina claramente a principal direcção da tendência.

  2. O índice ADX garante que as negociações só ocorram durante tendências claras, evitando falhas em mercados variáveis.

  3. O índice EFI capta os aumentos de tendência energética para os pontos de entrada de baixo risco.

  4. Esperar por retrações permite melhores rácios risco-recompensa.

  5. As combinações de múltiplos indicadores filtram eficazmente os riscos de false breakout.

Análise de riscos

Os principais riscos desta estratégia são:

  1. As tendências fortes também podem ter retrações maiores, exigindo intervalos de stop-loss mais amplos.

  2. Em mercados variáveis, o EFI pode dar sinais falsos, exigindo a combinação com indicadores de filtragem de tendências como o ADX.

  3. Os pullbacks que são muito profundos podem perder pontos de entrada, possivelmente exigindo ajuste MA.

  4. Um único instrumento de negociação não diversifica os riscos sistemáticos do mercado.

Orientações de otimização

Esta estratégia pode ser melhorada em vários aspectos:

  1. Teste em mais instrumentos para encontrar parâmetros universais ideais.

  2. Adicionar lucro através de perdas de parada de atraso.

  3. Optimização de parâmetros de configurações ADX, EFI e mais.

  4. Incorporar aprendizagem de máquina para a detecção de tendências robustas versus falhas.

  5. Adicionar análise de vários prazos com dimensionamento de posição entre os prazos.

  6. Avaliar mais indicadores de filtragem de tendências para melhorar a qualidade do sinal.

Resumo

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)


Mais.