Estrategia de suspensión de pérdidas de seguimiento de la media móvil doble

El autor:¿ Qué pasa?, fecha: 2024-02-05 13:45:51
Las etiquetas:

img

Resumen general

Esta estrategia genera señales de compra cuando el promedio móvil rápido cruza el promedio móvil lento. Al mismo tiempo, calcula el precio de stop loss basado en el Rango Verdadero Promedio para establecer señales de venta. Esta estrategia puede rastrear de manera efectiva las tendencias del mercado y reducir las pérdidas de manera oportuna al tomar ganancias.

Principios

  1. Promedio móvil rápido (EMA): promedio móvil exponencial de 12 días que responde rápidamente a los cambios de precios.
  2. Promedio móvil lento (SMA): promedio móvil simple de 45 días que muestra tendencias a medio y largo plazo.
  3. Las señales de compra se generan cuando el MA rápido cruza el MA lento.
  4. El intervalo medio verdadero (ATR) de 15 días se calcula como el punto de referencia para el stop loss.
  5. Se establecerá la amplitud de la pérdida de detención posterior basada en el ATR (por ejemplo, 6 x ATR) y se actualizará el precio de detención en tiempo real.
  6. Las señales de venta se generan cuando el precio cae por debajo del precio de stop loss.

Esta estrategia combina las ventajas del seguimiento de tendencias y la gestión de pérdidas de parada.

Análisis de ventajas

  1. Las combinaciones de MA identifican eficazmente las tendencias y aumentan la fiabilidad de la señal.
  2. Las pérdidas se detendrán de forma dinámica para evitar daños en los fondos.
  3. El stop loss basado en ATR hace que el precio de stop sea razonable y evita la hipersensibilidad.
  4. La lógica de la estrategia es simple y los parámetros son flexibles.

Análisis de riesgos

  1. Los MA tienen retrasos que pueden perder oportunidades a corto plazo.
  2. El exceso de pérdidas de parada sueltas socava la rentabilidad.
  3. El exceso de pérdidas de detención de operaciones aumenta la frecuencia de las operaciones y las comisiones.
  4. La variación de la volatilidad puede influir en la estabilidad del parámetro ATR.

Los parámetros se pueden optimizar para equilibrar la amplitud de la pérdida de parada.

Direcciones de optimización

  1. Prueba más combinaciones de parámetros para encontrar los MA óptimos.
  2. Ajustar el multiplicador ATR de acuerdo con las características específicas del stock.
  3. Añadir condiciones de filtrado como indicadores de volumen para evitar operaciones innecesarias.
  4. Acumular más datos históricos para probar la estabilidad de los parámetros.

Conclusión

Esta estrategia combina con éxito la capacidad de seguimiento de tendencia de MA y la capacidad de stop loss dinámico de ATR. Los parámetros se pueden optimizar para adaptarse a diferentes acciones. Forma límites claros de compra y venta, lo que hace que la lógica sea simple y clara. En conclusión, esta estrategia de stop loss de seguimiento de doble MA presenta estabilidad, simplicidad y facilidad de optimización. Funciona bien como una estrategia fundamental para el comercio 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)


Más.