Esta estrategia genera señales comerciales basadas en la cruz dorada y cruz muerta de promedios móviles con diferentes ciclos. Pertenece a una estrategia típica de seguimiento de tendencias.
La estrategia primero calcula los promedios móviles a mediano y corto plazo, ma1 y ma2, del precio, donde ma1 tiene un ciclo más corto y ma2 tiene un ciclo más largo. Luego calcula la diferencia entre ma1 y ma2 como ma3, y calcula además el promedio móvil suavizado ma4 de ma3. Cuando ma3 cruza ma4 hacia arriba, se genera una señal de compra. Cuando cruza hacia abajo, se genera una señal de venta.
Así, ma3 refleja la tendencia a mediano plazo del precio, y ma4 filtra algo de ruido de ma3 para formar una señal de trading más confiable.
Las ventajas de esta estrategia incluyen:
También existen algunos riesgos para esta estrategia:
La estrategia se puede optimizar a partir de los siguientes aspectos:
La estrategia genera señales comerciales basadas en la cruz de oro y la cruz muerta de los promedios móviles. Al usar ALMA y el promedio de precios de múltiples ciclos, las señales se vuelven más precisas y confiables. Los parámetros ajustables lo hacen ampliamente aplicable. Además, la lógica es simple y clara y funciona bien en los mercados de tendencia. Por lo tanto, tiene un alto valor práctico.
/*backtest start: 2024-01-08 00:00:00 end: 2024-01-15 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Oracle Move Strategy", overlay=true) maLen = input(30, "ma period") mode = input(defval="wma", options=["alma", "ema", "wma"]) price = close ma(src, len) => mode=="alma" ? alma(src, len, 0.85, 6) : mode=="ema"? ema(src, len) : wma(src, len) ma1 = ma(price, floor(maLen / 2)) ma2 = ma(price, maLen) ma3 = 2.0 * ma1 - ma2 ma4 = ma(ma3, floor(sqrt(maLen))) //plot(ma1, color = red) //plot(ma2, color = green) plot(ma3, color = blue) plot(ma4, color = orange) mafast = ma3 maslow = ma4 if (crossover(mafast, maslow)) strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE") if (crossunder(mafast, maslow)) strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE") //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)