
La estrategia se basa en promedios móviles, en el proceso de la tendencia, para abrir más posiciones después de una corrección a corto plazo, pertenece a la estrategia de seguimiento de la tendencia.
La estrategia utiliza 3 líneas de EMA de diferentes períodos, la línea EMA1 para determinar la tendencia a corto plazo, que es más corta que las otras dos líneas de EMA; la línea EMA2 y la línea EMA3 para determinar la tendencia a medio plazo, de las cuales la línea EMA3 es la más larga. Cuando la línea EMA1 de corto plazo está en la tendencia al alza, la línea EMA2 por encima de la línea EMA3 indica que la tendencia a medio plazo también está en la tendencia alza, por lo que es un buen punto de ventaja.
Establezca una línea de parada y una línea de parada para bloquear las pérdidas. En concreto, la línea de parada se mueve de acuerdo con el valor del ATR, y la línea de parada también se establece de acuerdo con el valor del ATR.
La mayor ventaja de esta estrategia es que capta de manera efectiva las tendencias de alza en la línea media y larga, y también considera los ajustes a corto plazo, lo que hace que su tiempo de tenencia y su espacio de ganancias sean considerables.
Además, la instalación de un mecanismo de suspensión y detonador de pérdidas también permite controlar el riesgo.
El mayor riesgo de esta estrategia es no poder determinar el punto de reversión de la tendencia, y si la tendencia de la línea media se invierte y sigue en alza en el corto plazo, esto puede generar una señal de entrada falsa para hacer más, lo que puede causar mayores pérdidas.
Además, puede haber pérdidas innecesarias en la liquidación.
Se puede considerar la posibilidad de ajustar los parámetros de ciclo de la EMA en función de las características de la variedad comercial específica, para que coincida más con el ciclo de la línea media larga de la variedad.
El final del ajuste a corto plazo se puede determinar en combinación con otros indicadores para evitar una entrada errónea.
Se puede considerar ajustar el coeficiente de parada en función del tamaño del valor de ATR, con una tolerancia adecuada de la distancia de parada cuando el ATR es mayor.
Esta estrategia es una estrategia de seguimiento de tendencias de línea media y larga que en general funciona bien. La dirección de la tendencia se determina a través de la media móvil, la señal de retorno determina el momento de entrada y la configuración de stop loss para bloquear las ganancias y pérdidas. Pero también existe el riesgo de un seguimiento ciego, que debe combinarse con el propio juicio del comerciante sobre la situación para decidir si se ingresa o no.
/*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)