
A estratégia é baseada em médias móveis, e é uma estratégia de tipo de seguimento de tendência, que se baseia em posições de alta durante a tendência e em posições de alta após uma reversão de curto prazo.
A estratégia usa 3 linhas de EMA de diferentes períodos, a linha EMA1 para determinar a tendência de curto prazo, que é mais curta do que as outras duas linhas de EMA; A linha EMA2 e a linha EMA3 para determinar a tendência de médio prazo, da qual a linha EMA3 é a mais longa. Quando a linha EMA1 de curto prazo está em uma tendência de alta de curto prazo, a linha EMA2 acima da linha EMA3 indica a tendência de alta de médio prazo.
A linha de parada e a linha de parada são definidas para bloquear o ganho e o prejuízo. Concretamente, a linha de parada move-se de acordo com o valor do ATR, e a linha de parada também é definida de acordo com o valor do ATR.
A principal vantagem da estratégia é a capacidade de capturar de forma eficaz as tendências de alta de linha média e longa, levando em consideração também os ajustes de curto prazo, o que permite um tempo de detenção e um espaço de lucro consideráveis.
O sistema de suspensão e travamento também permite que os riscos sejam controlados.
O maior risco da estratégia é não poder determinar o ponto de reversão da tendência, e se a tendência da linha média inverter e permanecer em alta no curto prazo, isso pode gerar um sinal de entrada de múltiplos erros, o que pode causar grandes perdas.
Além disso, pode haver uma perda de transação desnecessária na liquidação.
Pode-se considerar ajustar os parâmetros do ciclo do EMA de acordo com as características da variedade de negociação específica, para que seja mais compatível com o ciclo da linha média da variedade.
O fim de um ajustamento de curto prazo pode ser determinado em combinação com outros indicadores, evitando a entrada errada.
Pode-se considerar ajustar o coeficiente de parada de acordo com o tamanho do valor do ATR, com uma distância de parada adequadamente relaxada quando o ATR é maior.
Esta estratégia é, em geral, uma estratégia de acompanhamento de tendências de linha média e longa de bom desempenho. A direção da tendência é determinada pela média móvel, o sinal de retorno determina o momento de entrada e a configuração de stop loss para bloquear o lucro. Mas também existe o risco de um certo acompanhamento cego, que deve ser combinado com o próprio julgamento do comerciante sobre a situação para decidir se entrará ou não.
/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Trend Continuation', shorttitle='Trend_Continuation', overlay=true)
// Input
price = input(close)
MA1_Length = input.int(50, step=1, title='EMA 1 Length')
MA2_Length = input.int(80, step=1, title='EMA 2 Length')
MA3_Length = input.int(200, step=1, title='EMA 3 Length')
numberOfCandles = input(1)
slATRFactor = input(3.5)
tpATRFactor = input(3.5)
ATRLength = input(14)
// switch1=input(true, title="Show Bar Color?")
// switch2=input(true, title="Show Moving Averages?")
// Calculation
MA1 = ta.ema(price, MA1_Length)
MA2 = ta.ema(price, MA2_Length)
MA3 = ta.ema(price, MA3_Length)
prev_price = close[numberOfCandles]
// Strategy
allPositive = true
for i = 0 to numberOfCandles - 1 by 1
if close[i] < close[i + 1] or close[i] < MA1
allPositive := false
break
long = MA2 > MA3 and price > MA1 and ta.crossunder(prev_price, MA1) and allPositive
// short = crossover(price, MA3) or ( change(price)>0 and change(MA1)>0 and crossover(price,MA1) and change(MA2)<0 )
if long
strategy.entry('Long', strategy.long, comment='Long')
bought = strategy.position_size[0] > strategy.position_size[1]
atrAtLong = ta.valuewhen(bought, ta.atr(ATRLength), 0)
// Stop loss and take profit
slPrice = strategy.position_avg_price - slATRFactor * atrAtLong
tpPrice = strategy.position_avg_price + tpATRFactor * atrAtLong
SL = plot(slPrice, title='SL', style=plot.style_linebr, linewidth=1, color=color.new(color.red, 0))
if price >= tpPrice and price < MA1
strategy.close('Long')
if price < strategy.position_avg_price
strategy.exit('Stop Loss', 'Long', stop=slPrice)
// Strategy Alert
alertcondition(long, title='Long Alert', message='Go Long!')
// alertcondition(short, title='EMA Slope + EMA Cross Strategy, Short Alert', message='Go Short!')
// MA trend bar color
// up = change(MA2)>0 and change(MA3)>0
// dn = change(MA2)<0 and change(MA3)<0
// bar_color = up?green:dn?red:blue
// barcolor(switch1?bar_color:na)
// MA trend output color
change_1 = ta.change(MA2)
MA2_color = ta.change(MA2) > 0 ? color.lime : change_1 < 0 ? color.red : color.blue
change_2 = ta.change(MA3)
MA3_color = ta.change(MA3) > 0 ? color.lime : change_2 < 0 ? color.red : color.blue
// MA output
// EMA2 = plot(switch2?MA2:na, title="EMA 2", style=linebr, linewidth=2, color=MA2_color)
// EMA3 = plot(switch2?MA3:na, title="EMA 3", style=linebr, linewidth=4, color=MA3_color)
// fill(EMA2, EMA3, color=silver, transp=50)
color_1 = MA2 > MA3 ? color.green : color.red
EMA1 = plot(MA1, title='EMA 1', style=plot.style_linebr, linewidth=1, color=color_1)
// EMA2 = plot(MA2, title="EMA 2", style=linebr, linewidth=2, color=blue)
// EMA3 = plot(MA3, title="EMA 3", style=linebr, linewidth=3, color=red)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)