
Esta estrategia se basa en la intersección de las medias móviles simples y las medias móviles ponderadas para generar señales de negociación, mientras que se combinan los paros y las paradas para administrar las posiciones. La estrategia combina factores dinámicos (cruzamiento de medias móviles) y factores estáticos (proporción de paradas y paradas de paradas fijas), logrando un efecto de intersección dinámica.
La lógica central es calcular dos promedios móviles de diferentes períodos, uno de 9 días de promedio móvil simple y otro de 21 días de promedio móvil ponderado. Se genera una señal de compra cuando se cruza una promedio móvil ponderada de 21 días de un período más largo sobre una promedio móvil simple de 9 días de un período más corto; se genera una señal de venta cuando se cruza una línea de período más largo sobre una línea de período más corto.
Después de recibir la señal, el precio de la parada de pérdidas se ordena de acuerdo con la proporción de parada de pérdidas establecida. Por ejemplo, si la proporción de parada se establece en un 5%, el precio de parada se establece como el 95% del precio de entrada. Si la proporción de parada es del 5%, el precio de parada se establece como el 105% del precio de entrada. De esta manera, se logra la fusión de los factores dinámicos (cuando la media móvil cruzada determina el tiempo de entrada y salida) y los factores estáticos (cuando la proporción de parada de pérdidas está fijada).
La estrategia combina indicadores técnicos dinámicos y parámetros de estrategia estáticos, con las ventajas de un sistema dinámico. Los indicadores técnicos pueden capturar dinámicamente las características del mercado, lo que ayuda a captar las tendencias, mientras que la configuración de los parámetros ofrece un control estable de riesgos y ganancias, lo que ayuda a reducir la aleatoriedad de la gestión de posiciones.
En comparación con el sistema puramente dinámico, esta estrategia es más robusta en la gestión de posiciones y puede reducir el impacto de decisiones irracionales. En comparación con el sistema puramente estático, las opciones de entrada de esta estrategia son más flexibles y pueden adaptarse a los cambios en el mercado. Por lo tanto, esta estrategia es más robusta y rentable en general.
El riesgo de esta estrategia proviene principalmente de dos aspectos: primero, la posibilidad de que las medias móviles generen una señal errónea. Cuando el mercado se encuentra en un momento de agitación, las medias móviles pueden cruzarse con frecuencia, lo que hace que la estrategia se encierre.
La contra-medida es evitar los nodos de tiempo clave y reducir la probabilidad de señales erróneas. La contra-medida es activar un algoritmo de parada de pérdidas adaptado en función de la volatilidad del mercado y eventos especiales, para que la parada de pérdidas se ajuste al mercado.
Esta estrategia puede ser optimizada en los siguientes aspectos:
Prueba diferentes combinaciones de parámetros para encontrar el mejor.
Se han incrementado las condiciones de filtración para evitar señales no válidas.
Aplicación de algoritmos adaptativos para detener los pérdidas y conectar con el mercado.
En combinación con otros indicadores para determinar tendencias fuertes y débiles, evitar mercados convulsivos;
Optimización automática de los parámetros mediante métodos de aprendizaje automático.
La estabilidad y la rentabilidad de las estrategias se pueden mejorar aún más mediante la prueba de diferentes parámetros, el aumento de las condiciones de filtración, la mejora de los paradas de pérdidas y la determinación de tendencias.
Esta estrategia combina con éxito los indicadores dinámicos y los parámetros estáticos, con la flexibilidad y la estabilidad. En comparación con las estrategias puramente dinámicas y puramente estáticas, esta estrategia tiene un mejor rendimiento en general.
/*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")