Esta estrategia utiliza una combinación de una simple media móvil doble estrategia de media móvil, complementada por el índice de volatilidad ATR para determinar la volatilidad del mercado. Cuando la línea media a corto plazo cruza por encima de la línea media a largo plazo, se determina como un mercado alcista y se toma una posición larga. Cuando la línea media a corto plazo cruza por debajo de la línea media a largo plazo, se determina como un mercado bajista y se toma una posición corta. Al mismo tiempo, la fiabilidad de la señal de media móvil se juzga combinando el precio promedio ponderado por volumen VWAP. Además, se incorpora el indicador RSI para evitar reversiones.
El núcleo es la estrategia de media móvil doble. La estrategia de media móvil doble generalmente selecciona una media móvil a corto plazo y una media móvil a largo plazo, como la media móvil de 50 días y la media móvil de 200 días. Una señal de compra se genera cuando la media móvil a corto plazo cruza por encima de la media móvil a largo plazo. Una señal de venta se genera cuando la media móvil a corto plazo cruza por debajo de la media móvil a largo plazo. La estrategia de media móvil doble juzga los cambios en las tendencias de mercado a largo y corto plazo, y utiliza avances de la media móvil para capturar los puntos de inflexión de la tendencia.
Esta estrategia selecciona el promedio móvil de 50 días como promedio móvil a corto plazo y el promedio móvil de 200 días como promedio móvil a largo plazo. Combinado con el precio promedio ponderado por volumen VWAP para determinar la confiabilidad de la señal de promedio móvil. Es decir, solo ingrese al mercado cuando la señal de promedio móvil esté alineada con VWAP. Esto filtra algunas señales falsas.
Además, el indicador RSI se incorpora para evitar la sobrecompra y la sobreventa.
Por último, la amplitud media de fluctuación del indicador ATR se utiliza para determinar la volatilidad y el nivel de riesgo del mercado. Cuando el valor de ATR es mayor que 1.18, se define como alta volatilidad. En este punto, al cambiar el color de fondo, se solicita el mayor riesgo y se puede evitar el comercio temporalmente hasta que disminuya la volatilidad.
Las principales ventajas de esta estrategia se reflejan en tres aspectos:
El doble promedio móvil captura el punto de inflexión de la tendencia a mediano y largo plazo del mercado y utiliza el comercio de tendencia para obtener ganancias relativamente altas.
Combinar VWAP para filtrar señales falsas y mejorar la fiabilidad de la señal.
Introducción del indicador RSI para evitar el comercio contra el mercado, lo que puede reducir las pérdidas.
La aplicación del índice de volatilidad ATR para determinar las condiciones de riesgo de mercado evita períodos de alta volatilidad, que pueden reducir las pérdidas.
La combinación de varios indicadores es simple y fácil de entender e implementar, adecuada para la entrada cuantitativa en el comercio.
Esta estrategia también tiene algunos riesgos:
Cuando el promedio móvil genera una señal, el precio puede haber cambiado mucho, lo que plantea el riesgo de sobreventa.
VWAP puede tener errores, lo que resulta en filtrar las señales comerciales correctas.
Al final de la tendencia, el RSI puede permanecer en el área de sobrecompra/sobreventa durante mucho tiempo, perdiendo el punto de inflexión de la reversión de la tendencia.
La solución es combinar el precio más alto, el precio más bajo, etc. para determinar la volatilidad del mercado.
El rendimiento puede no cumplir con las expectativas y los parámetros deben ajustarse en consecuencia.
Todavía hay mucho espacio para la optimización en esta estrategia:
Prueba más combinaciones de promedios móviles para encontrar parámetros óptimos.
Añadir más indicadores auxiliares a las señales de filtro, como MACD, KDJ, etc.
Optimizar los parámetros de stop loss y take profit para reducir las pérdidas y aumentar las ganancias.
Evaluar la diferencia en las estrategias de negociación entre las acciones fuertes y las acciones débiles para el modelado de clasificación.
Incorporar algoritmos de aprendizaje automático como RNN para optimizar automáticamente los parámetros y evaluar las estrategias.
Desarrollar sistemas de negociación automatizados y conectarse a la negociación en vivo para backtesting.
En general, esta estrategia es una estrategia de seguimiento de tendencias relativamente simple. El núcleo utiliza promedios móviles dobles para determinar tendencias a largo y corto plazo. Combina VWAP y RSI para procesar señales y aplica ATR para evaluar riesgos. La idea de la estrategia es simple y fácil de entender y operar. A través de cierto espacio de optimización, se pueden obtener buenos retornos. Como opción para la entrada cuantitativa al comercio, es muy adecuado.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Simple Moving Averages", overlay=true) sma50 = ta.sma(close, 50) sma200 = ta.sma(close, 200) vwap = ta.vwap(close) rsi = ta.rsi(close, 14) [diPlus, diMinus, adx_val] = ta.dmi(14, 14) atr_val = ta.atr(14) plot(sma50, color=color.new(color.green, 0)) plot(sma200, color=color.new(color.red, 0)) plot(vwap) longCondition = ta.crossover(sma50, sma200) and vwap > close shortCondition = ta.crossunder(sma50, sma200) and vwap < close if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) barcolor = sma50 > sma200 ? (vwap < close ? (rsi < 70 ? color.green : color.blue) : color.yellow) : (sma50 < sma200 ? (vwap > close ? (rsi > 30 ? color.red : color.orange) : color.yellow) : na) barcolor(barcolor) bgcolor(adx_val > 25 and atr_val > 1.18 ? color.new(color.gray, 50) : color.new(color.black, 50), transp=90) // ADX and ATR Label Box // label.new(bar_index, high, "ADX: " + str.tostring(adx_val, "#.##") + "\nATR: " + str.tostring(atr_val, "#.##"), color=color.new(color.white, 0), textcolor=color.new(color.black, 0), style=label.style_labeldown, yloc=yloc.price, xloc=xloc.bar_index, size=size.small, textalign=text.align_left) // Exit conditions (optional) strategy.close("Long", when = ta.crossunder(sma50, sma200)) strategy.close("Short", when = ta.crossover(sma50, sma200)) // Take Profit and Stop Loss takeProfitPercentage = 5 stopLossPercentage = 3 strategy.exit("Take Profit / Stop Loss", "Long", profit = takeProfitPercentage, loss = stopLossPercentage) strategy.exit("Take Profit / Stop Loss", "Short", profit = takeProfitPercentage, loss = stopLossPercentage)