
La estrategia de doble promedio móvil cruzado es una estrategia de comercio cuantitativa que utiliza un promedio de doble promedio y un promedio de doble promedio para determinar la entrada y la salida. La estrategia combina el promedio de diferentes períodos y forma un filtro de múltiples capas, lo que puede reducir eficazmente las señales falsas y mejorar la fiabilidad de las señales de comercio.
La lógica central de esta estrategia es seguir 2 medias móviles en 3 períodos de tiempo (línea de 10 y línea de 200 días) (línea de 180 minutos, 60 minutos y 120 minutos). Cuando la línea rápida cruza la línea lenta desde la dirección inferior, produce una señal de horquilla dorada, lo que representa que la variedad entra en una situación de más cabeza; cuando la línea rápida cruza la línea lenta desde la dirección superior, produce una señal de horquilla muerta, lo que representa que la variedad entra en una situación de cabeza vacía.
La estrategia comienza calculando la línea de 10 días y la línea de 200 días en los ciclos de 180 minutos y 60 minutos respectivamente. Cuando la línea de 10 días de 180 minutos atraviesa la línea de 200 días desde abajo, produce una señal de horquilla dorada; cuando atraviesa desde arriba hacia abajo, produce una señal de horquilla muerta. Esto equivale a una señal de negociación en ciclos rápidos.
Luego, la estrategia introduce la línea de 200 días en un período de 120 minutos como línea de control. Sólo cuando ocurre un tenedor de oro o un tenedor muerto, se decide si se inicia la operación para eliminar parte de las falsas señales al juzgar si la línea de 200 días en un período de 60 minutos es superior o inferior a la línea de 200 días en un período de 120 minutos.
Por ejemplo, cuando 180 minutos producen un tenedor de oro, se ve más si la línea de 200 días de 60 minutos es más alta que la línea de 200 días de 120 minutos; solo en esta condición, se abrirá más. Por el contrario, si la línea de 200 días de 60 minutos es inferior a la línea de 200 días de 120 minutos, no se ve más y no se abrirá la posición.
En resumen, la estrategia se basa en la comparación de las relaciones de la línea media de diferentes períodos de tiempo, la formación de filtros de múltiples capas, lo que mejora la fiabilidad de la señal, pertenece a la estrategia de negociación de tipo filtrado común.
Confirmación de múltiples ciclos, mejora la precisión de la señal. En comparación con el juicio de un solo ciclo, la estrategia utiliza tres ciclos de 180 minutos, 60 minutos y 120 minutos para confirmar la relación de la línea media, lo que reduce considerablemente las señales falsas y mejora la calidad de la señal de negociación.
La frecuencia de operación es moderada. En comparación con la estrategia de negociación de alta frecuencia, la estrategia de negociación es más baja, no requiere operaciones frecuentes y es más adecuada para el seguimiento manual.
Implementación simple y fácil de entender. La estrategia utiliza solo indicadores de línea media, no tiene lógica compleja, es muy fácil de entender la implementación, el umbral es bajo y es adecuado para los principiantes.
Se puede optimizar en función de diferentes ciclos y parámetros. El ciclo y el tipo de línea media de la estrategia se pueden ajustar y se puede estudiar una combinación de parámetros adecuada para diferentes variedades y entornos de mercado.
La estrategia depende principalmente de la relación de equilibrio, la respuesta a los cambios en los precios es algo retrasada, y es fácil perderse una rápida reversión.
En mercados con grandes fluctuaciones, la correlación de tendencia puede cruzarse con frecuencia, lo que provoca la apertura y el cierre de posiciones frecuentes, lo que aumenta los costos de transacción y el riesgo de pérdidas.
El exceso de dependencia de la optimización de parámetros, fácil de sobreajuste. Esta estrategia se obtiene principalmente a través de la optimización de parámetros para obtener Alfa, y esta dependencia de los resultados de un solo conjunto de datos puede conducir a problemas de optimización excesiva y sobreajuste.
Las soluciones para los riesgos son:
Se recortan adecuadamente los parámetros de la línea media para acelerar la velocidad de reacción.
Aumentar las condiciones de filtración para evitar la apertura frecuente de posiciones en mercados convulsivos.
Prueba de datos de diferentes variedades y períodos de tiempo para evaluar la solidez de los parámetros.
La estrategia aún tiene espacio para ser optimizada:
Prueba diferentes combinaciones de periodicidad y parámetros de la línea media para encontrar mejores parámetros. Se puede encontrar una mejor combinación de parámetros a través de métodos de optimización por esfuerzo y aprendizaje automático.
Aumentar el volumen y la confirmación de indicadores de tendencia a gran escala. Esto puede filtrar aún más las señales falsas, por ejemplo, no abrir una posición cuando el volumen no es suficiente.
El uso de modelos de aprendizaje profundo como RNN para la predicción de precios futuros, ayuda a la toma de decisiones.
Utiliza una línea media adaptativa para mejorar la lógica de filtración. Cuando el mercado entra en un estado de agitación, ajusta dinámicamente la longitud de la línea media y reduce la frecuencia de apertura de posiciones.
La estrategia de negociación de algoritmos de doble horquilla de oro es una estrategia de negociación de algoritmos de filtración más común. Es fácil de implementar, adecuada para el aprendizaje de los principiantes, y también puede ampliarse y optimizarse en varias dimensiones.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle = "ALGO 3-1-2", title="ALGO 3h, 1h, 2h", overlay=true)
bool startLONGBOTandDEAL = false
bool stopLONGBOTandDEAL = false
bool openLONG = false
bool closeLONG = false
bool startSHORTBOTandDEAL = false
bool stopSHORTBOTandDEAL = false
bool openSHORT = false
bool closeSHORT = false
MA1Period = ema(close, 10)
MA2Period = ema(close, 200)
MA3Period = ema(close, 200)
MA1 = security(syminfo.tickerid, "180", MA1Period)
MA2 = security(syminfo.tickerid, "60", MA2Period)
MA3 = security(syminfo.tickerid, "120", MA3Period)
MA12Crossover = crossover(MA1, MA2)
MA12Crossunder = crossunder(MA1, MA2)
MA23Crossover = crossover(MA2, MA3)
MA23Crossunder = crossunder(MA2, MA3)
if MA23Crossover
startLONGBOTandDEAL := true //stop shortBOT and DEAL code in the TV alert as well, probably stop first w/ a delay on startlong
lblBull = label.new(bar_index, na, ' BULL Time Open LONG', color=color.blue, textcolor=color.black, style=label.style_label_up, size=size.small)
label.set_y(lblBull, MA2)
strategy.close("go Short")
strategy.entry("go Long", strategy.long, comment="go Long")
if MA23Crossunder
//not sure if i should set alert for stop and start each bot, or just put start appropriate bot and stop its opposite in the same alert.
startSHORTBOTandDEAL := true
lblBull = label.new(bar_index, na, ' BEAR Time - Open SHORT', color=color.orange, textcolor=color.black, style=label.style_label_down, size=size.small)
label.set_y(lblBull, MA2)
strategy.close("go Long")
strategy.entry("go Short", strategy.short, comment="go Short")
if MA12Crossover
if MA2 >= MA3
openLONG := true
lup1 = label.new(bar_index, na, ' OPEN LONG ', color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
strategy.entry("go Long", strategy.long, comment="go Long")
if MA2 <= MA3
closeSHORT := true
lup1 = label.new(bar_index, na, ' CLOSE SHORT ', color=color.gray, textcolor=color.black, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
strategy.close("go Short")
if MA12Crossunder
if MA2 >= MA3
closeLONG := true
lun1 = label.new(bar_index, na, ' CLOSE LONG ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
strategy.close("go Long")
if MA2 <= MA3
openSHORT := true
lun1 = label.new(bar_index, na, ' OPEN SHORT ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
strategy.entry("go Short", strategy.short, comment="go Short")
plot(MA1, color=color.green, linewidth=2, title="MA1")
plot(MA2, color=color.yellow, linewidth=3, title="MA2")
plot(MA3, color=color.red, linewidth=4, title="MA3")
alertcondition(startLONGBOTandDEAL, title="Start LONG BOT and DEAL", message="Start Long Bot and Deal")
alertcondition(stopLONGBOTandDEAL, title="Stop LONG BOT and DEAL", message="Stop Long Bot and Deal")
alertcondition(openLONG, title="Open LONG DEAL", message="Open Long Deal")
alertcondition(closeLONG, title="Close LONG DEAL", message="Close Long Deal")
alertcondition(stopSHORTBOTandDEAL, title="Stop SHORT BOT and DEAL", message="Stop Short Bot and Deal")
alertcondition(openSHORT, title="Open SHORT DEAL", message="Open Short Deal")
alertcondition(closeSHORT, title="Close SHORT DEAL", message="Close Short Deal")