Esta estrategia genera señales comerciales basadas en el cruce de promedios móviles simples y promedios móviles ponderados, combinados con stop loss y take profit para gestionar posiciones.
La lógica central es calcular dos promedios móviles con períodos diferentes, uno es el promedio móvil simple de 9 días y el otro es el promedio móvil ponderado de 21 días. Cuando el SMA de 9 días de corto período cruza por encima del WMA de 21 días de largo período, se genera una señal de compra. Cuando la línea de corto período cruza por debajo de la línea de largo período, se genera una señal de venta.
Después de recibir la señal, las órdenes se colocan de acuerdo con las tasas de stop loss y take profit establecidas. Por ejemplo, si la tasa de stop loss se establece en el 5%, entonces el precio de stop loss se establecerá en el 95% del precio de entrada. Si la tasa de take profit es del 5%, entonces el precio de take profit se establecerá en el 105% del precio de entrada. Esto realiza la fusión de factores dinámicos (cruce de promedio móvil que decide el momento de entrada y salida) y factores estáticos (tasas de stop loss y take profit fijas).
La estrategia combina indicadores técnicos dinámicos y parámetros de estrategia estáticos, que poseen los beneficios de los sistemas dinámicos y estáticos. Los indicadores técnicos pueden capturar dinámicamente las características del mercado, lo que es beneficioso para detectar tendencias.
En comparación con los sistemas puramente dinámicos, esta estrategia es más robusta en la gestión de posiciones, lo que reduce el impacto de las decisiones irracionales. En comparación con los sistemas puramente estáticos, esta estrategia es más flexible en las selecciones de entrada, lo que se adapta mejor a los cambios del mercado. Por lo tanto, esta estrategia tiene una buena robustez y rentabilidad general.
Los riesgos de esta estrategia provienen principalmente de dos aspectos. Primero, la posibilidad de señales erróneas de los promedios móviles. Cuando el mercado está limitado al rango, los promedios móviles pueden tener cruces frecuentes, lo que hace que la estrategia se desvíe.
En segundo lugar, el riesgo de que el stop loss fijo y el take profit no puedan adaptarse a condiciones extremas de mercado.
Las contramedidas son: en primer lugar, evitar los nodos de tiempo clave para reducir la probabilidad de señales erróneas; en segundo lugar, habilitar algoritmos de stop loss adaptativos de acuerdo con la volatilidad del mercado y eventos especiales, haciendo que el stop loss y el take profit se ajusten con el mercado.
Esta estrategia se puede optimizar a partir de los siguientes aspectos:
ensayar diferentes combinaciones de parámetros para encontrar los parámetros óptimos;
Añadir condiciones de filtrado para evitar señales no válidas;
Aplicar algoritmos de stop loss adaptativos para moverse con el mercado;
Incorporar otros indicadores para evaluar la fuerza de la tendencia, evitando los mercados de rango;
Utilice métodos de aprendizaje automático para optimizar automáticamente los parámetros.
Mediante la prueba de parámetros, la adición de filtros, la mejora de las paradas, la evaluación de las tendencias, etc., la estabilidad y la rentabilidad de la estrategia pueden mejorarse aún más.
La estrategia combina con éxito indicadores dinámicos y parámetros estáticos, equilibrando flexibilidad y robustez. En comparación con las estrategias dinámicas y estáticas puras, esta estrategia tiene un mejor rendimiento en general. Por supuesto, todavía hay espacio para la optimización mediante el ajuste de parámetros, la adición de filtros, paradas adaptativas, aprendizaje automático, etc., para hacer que la estrategia sea más efectiva.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("WMA vs MMA Crossover Strategy with SL/TP", shorttitle="WMA_MMA_Cross_SL_TP", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Définition des périodes pour les moyennes mobiles wmaLength = input.int(9, title="WMA Length") mmaLength = input.int(21, title="MMA Length") // Paramètres de Stop Loss et Take Profit en pourcentage stopLossPercentage = input.float(5, title="Stop Loss (%)") / 100 takeProfitPercentage = input.float(5, title="Take Profit (%)") / 100 // Calcul des moyennes mobiles wmaValue = ta.wma(close, wmaLength) mmaValue = ta.sma(close, mmaLength) // Conditions pour les signaux d'achat et de vente buySignal = ta.crossover(wmaValue, mmaValue) sellSignal = ta.crossunder(wmaValue, mmaValue) // Génération des ordres en fonction des signaux if buySignal strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", "Buy", stop=strategy.position_avg_price * (1 - stopLossPercentage), limit=strategy.position_avg_price * (1 + takeProfitPercentage)) if sellSignal strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", "Sell", stop=strategy.position_avg_price * (1 + stopLossPercentage), limit=strategy.position_avg_price * (1 - takeProfitPercentage)) // Affichage des moyennes mobiles sur le graphique plot(wmaValue, color=color.blue, title="WMA") plot(mmaValue, color=color.red, title="MMA") // Affichage des signaux sur le graphique pour référence plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")