Estrategia de trailing stop de media móvil


Fecha de creación: 2023-09-19 21:33:48 Última modificación: 2023-09-19 21:33:48
Copiar: 2 Número de Visitas: 691
1
Seguir
1617
Seguidores

Descripción general

La estrategia genera una señal de compra mediante el cruce de la línea de compra-promedio de la EMA rápida y la línea de venta-promedio de la SMA lenta, y utiliza el stop loss de seguimiento dinámico de ATR para lograr el control del riesgo, con el objetivo de superar la estrategia de compra-tenencia a través de un pequeño número de operaciones.

Principio de estrategia

  1. Calcula el EMA rápido para comprar la media y el SMA lento para comprar la media, que genera una señal de compra cuando la línea rápida atraviesa la línea lenta y alcanza una cierta intensidad de compra.

  2. Calcula el EMA rápido para vender la línea media y el SMA lento para vender la línea media, generando una señal de venta cuando la línea rápida atraviesa la línea lenta.

  3. La multiplicación del promedio diario N del indicador ATR como un stop loss de seguimiento dinámico para el control de riesgo.

  4. Iniciar la estrategia durante el periodo de retrospectiva y ejecutar la compra y venta.

  5. Cada acción optimiza una combinación diferente de parámetros para encontrar el mejor.

La estrategia combina las ventajas de los indicadores de medias móviles para determinar la tendencia y las señales cruzadas y el seguimiento dinámico de las paradas ATR, adaptándose a las características de cada variedad mediante la optimización de los parámetros, con el objetivo de obtener ganancias excedentarias por encima de las compras realizadas con un pequeño número de operaciones de precisión.

Análisis de las ventajas

  1. El cruce entre EMA rápido y SMA lento genera señales de negociación para identificar tendencias.

  2. ATR Stop ajusta su posición de stop en función de las fluctuaciones del mercado para controlar el riesgo de manera efectiva.

  3. La optimización de los parámetros de cada acción puede aumentar la tasa de ganancia.

  4. Lógica y reglas de transacción simples, fáciles de implementar y verificar.

  5. La detección está completa para verificar la efectividad de la estrategia.

  6. La búsqueda de estabilidad trasciende las ganancias excedentarias de compra y tenencia.

Análisis de riesgos

  1. Los parámetros optimizados no siempre se aplican en el futuro y pueden necesitar ser re-optimizados periódicamente.

  2. El cruce entre EMA y SMA puede generar una señal errónea o un retraso de señal.

  3. El stop ATR puede ser demasiado radical, por lo que se puede relajar el rango de stop adecuadamente.

  4. La frecuencia de las transacciones es demasiado baja y se puede perder una buena oportunidad de negociación.

  5. El impacto en el costo de la transacción debe ser considerado.

Dirección de optimización

  1. Continúa probando diferentes combinaciones de parámetros para encontrar el mejor.

  2. Intentar introducir otros indicadores para filtrar la señal.

  3. Optimización de los parámetros de ciclo de ATR para equilibrar la sensibilidad de los puntos de parada.

  4. Evaluar el efecto de la relajación adecuada del margen de pérdidas.

  5. Considere la búsqueda automática de parámetros de optimización en combinación con métodos como el aprendizaje automático.

  6. Estudiar el efecto de aumentar la frecuencia de apertura de las reservas.

Resumir

La estrategia de seguimiento de pérdidas de las medias móviles, que combina las ventajas de la generación de señales de cruce uniforme y el riesgo de control de pérdidas ATR, es una estrategia de sobrecompra y mantenimiento simple y práctica que se adapta a las características de cada acción mediante la optimización de los parámetros. Aunque los parámetros optimizados no garantizan el efecto futuro, la estrategia tiene una lógica de negociación clara y práctica, es digna de ser mejorada y probada, y es una buena inspiración.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//created by XPloRR 04-03-2018

strategy("XPloRR 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)

ema1Period = input(12, "Fast EMA Buy")
sma1Period = input(54, "Slow SMA Buy")
strength1 = input(52, "Minimum Buy Strength")

ema2Period = input(18, "Fast EMA Sell")
sma2Period = input(55, "Slow SMA Sell")
strength2 = input(100, "Minimum Sell Strength")

delta = input(8, "Trailing Stop (#ATR)")

testPeriod() => true

ema1val=ema(close,ema1Period)
sma1val=sma(close,sma1Period)
ema1strength=10000*(ema1val-ema1val[1])/ema1val[1]

ema2val=ema(close,ema2Period)
sma2val=sma(close,sma2Period)
ema2strength=10000*(ema2val-ema2val[1])/ema2val[1]

plot(ema1val,color=blue,linewidth=1)
plot(sma1val,color=orange,linewidth=1)
plot(ema2val,color=navy,linewidth=1)
plot(sma2val,color=red,linewidth=1)

long=crossover(ema1val,sma1val) and (ema1strength > strength1) 
short=crossunder(ema2val,sma2val) and (ema2strength < -strength2)

stopval=ema(close,6)
atr=sma((high-low),15)

inlong=0
buy=0
stop=0
if testPeriod()
    if (inlong[1])
        inlong:=inlong[1]
        buy:=close
        stop:=iff((stopval>(stop[1]+delta*atr)),stopval-delta*atr,stop[1])
    if (long) and (not inlong[1])
        strategy.entry("buy",strategy.long)
        inlong:=close
        buy:=close
        stop:=stopval-delta*atr
plot(buy,color=iff(close<inlong,red,lime),style=columns,transp=90,linewidth=1)
plot(stop,color=iff((short or (stopval<stop)) and (close<inlong),red,lime),style=columns,transp=60,linewidth=1)
if testPeriod()
    if (short or (stopval<stop)) and (inlong[1])
        strategy.close("buy")
        inlong:=0
        stop:=0
        buy:=0