
Esta estrategia calcula un promedio móvil de dos parámetros diferentes para generar una señal de compra cuando la línea rápida atraviesa la línea lenta. Al mismo tiempo, utiliza el rango de fluctuación real promedio para rastrear el precio de parada y genera una señal de venta cuando el precio cae por debajo de ese precio de parada.
La estrategia combina el seguimiento de tendencias y el manejo de stop loss, ya que permite tanto el seguimiento de la dirección de la línea media como el control de las pérdidas individuales mediante el stop loss.
Los parámetros de las medias móviles se pueden optimizar adecuadamente, o se puede ajustar el multiplicador ATR para equilibrar el stop loss. También se puede combinar con otros indicadores como condiciones de filtración para mejorar el tiempo de entrada.
Esta estrategia combina con éxito el seguimiento de tendencias de las medias móviles y el stop loss dinámico de ATR, que se puede adaptar a las diferentes características de las acciones a través de la optimización de los parámetros. La estrategia forma un límite de compra y un límite de stop loss claro y claro, lo que hace que la lógica de la negociación sea simple. En general, la estrategia de stop loss de seguimiento de las medias móviles es estable, simple y fácil de optimizar y se adapta a la estrategia básica de negociación de acciones.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
//created by XPloRR 24-02-2018
strategy("XPloRR MA-Buy ATR-MA-Trailing-Stop Strategy",overlay=true, initial_capital=1000,default_qty_type=strategy.percent_of_equity,default_qty_value=100)
testStartYear = input(2005, "Start Year")
testStartMonth = input(1, "Start Month")
testStartDay = input(1, "Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2050, "Stop Year")
testStopMonth = input(12, "Stop Month")
testStopDay = input(31, "Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Background", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
emaPeriod = input(12, "Exponential MA")
smaPeriod = input(45, "Simple MA")
stopPeriod = input(12, "Stop EMA")
delta = input(6, "Trailing Stop #ATR")
testPeriod() => true
emaval=ema(close,emaPeriod)
smaval=sma(close,smaPeriod)
stopval=ema(close,stopPeriod)
atr=sma((high-low),15)
plot(emaval, color=blue,linewidth=1)
plot(smaval, color=orange,linewidth=1)
plot(stopval, color=lime,linewidth=1)
long=crossover(emaval,smaval)
short=crossunder(emaval,smaval)
//buy-sell signal
stop=0
inlong=0
if testPeriod()
if (long and (not inlong[1]))
strategy.entry("buy",strategy.long)
inlong:=1
stop:=emaval-delta*atr
else
stop:=iff((nz(emaval)>(nz(stop[1])+delta*atr))and(inlong[1]),emaval-delta*atr,nz(stop[1]))
inlong:=nz(inlong[1])
if ((stopval<stop) and (inlong[1]))
strategy.close("buy")
inlong:=0
stop:=0
else
inlong:=0
stop:=0
plot(stop,color=green,linewidth=1)