La estrategia de ruptura de la media móvil doble es una estrategia de negociación cuantitativa basada en una media móvil rápida y una media móvil lenta. Utiliza dos medias móviles exponenciales (EMA) con diferentes períodos como señales de negociación. Cuando la EMA rápida cruza por encima de la EMA lenta, se genera una señal de compra. Cuando la EMA rápida cruza por debajo de la EMA lenta, se genera una señal de venta.
La lógica central de esta estrategia es utilizar un promedio móvil rápido y un promedio móvil lento para formar señales de negociación. La estrategia define el período EMA rápido como 12 días y el período EMA lento como 26 días. El método de cálculo es el siguiente:
El uso del cruce de la media móvil rápida y lenta para determinar las tendencias del mercado y generar señales de negociación es una estrategia típica de media móvil dual.
La estrategia de ruptura de la media móvil doble tiene las siguientes ventajas:
La estrategia de ruptura de la media móvil doble también tiene algunos riesgos:
Soluciones:
La estrategia de ruptura de la media móvil doble puede optimizarse en los siguientes aspectos:
La estrategia de ruptura de promedio móvil dual es una estrategia de negociación cuantitativa simple y práctica. Tiene ventajas como la lógica y la implementación fáciles, y también tiene algunos problemas de adaptabilidad al mercado. Podemos hacer que sea un sistema de negociación rentable estable a través de la optimización de parámetros, filtración de señales, control de riesgos, etc. En general, la estrategia de promedio móvil dual es un gran prototipo de estrategia que vale la pena una investigación en profundidad y aplicación para los operadores cuantitativos.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CDC Action Zone V.2", overlay=true) // CDC ActionZone V2 29 Sep 2016 // CDC ActionZone is based on a simple 2MA and is most suitable for use with medium volatility market // 11 Nov 2016 : Ported to Trading View with minor UI enhancement LSB = input(title="Long/Short", defval="Long only", options=["Long only", "Short only" , "Both"]) src = input(title="Data Array",type=input.source,defval=ohlc4) prd1=input(title="Short MA period", type=input.integer,defval=12) prd2=input(title="Long MA period",type=input.integer,defval=26) AP = ema(src,2) Fast = ema(AP,prd1) Slow = ema(AP,prd2) Bullish = Fast>Slow Bearish = Fast<Slow Green = Bullish and AP>Fast Red = Bearish and AP<Fast Yellow = Bullish and AP<Fast Blue = Bearish and AP>Fast Buy = Bullish and Bearish[1] Sell = Bearish and Bullish[1] alertcondition(Buy,"Buy Signal","Buy") alertcondition(Sell,"Sell Signal","Sell") //Plot l1=plot(Fast,"Fast", linewidth=1,color=color.red) l2=plot(Slow,"Slow", linewidth=2,color=color.blue) bcolor = Green ? color.lime : Red ? color.red : Yellow ? color.yellow : Blue ? color.blue : na barcolor(color=bcolor) fill(l1,l2,bcolor) // === INPUT BACKTEST RANGE === FromYear = input(defval = 2000, title = "From Year", minval = 1920) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 1921) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" if LSB == "Long only" and Buy and window() strategy.entry("L",true) if LSB == "Long only" and Sell and window() strategy.close("L",qty_percent=100,comment="TP Long") if LSB == "Both" and Buy and window() strategy.entry("L",true) if LSB == "Both" and Sell and window() strategy.entry("S",false) if LSB == "Short only" and Sell and window() strategy.entry("S",false) if LSB == "Short only" and Buy and window() strategy.close("S",qty_percent=100,comment="TP Short")