La stratégie du double indicateur est une stratégie de trading quantitative qui combine les indicateurs de moyenne mobile simple (SMA) et de convergence moyenne mobile divergence (MACD).
Le cœur de la stratégie du double indicateur repose sur deux indicateurs: la SMA et le MACD. La stratégie adopte des SMA à 7-, 15 et 60 périodes, ainsi que le paramètre MACD standard 12/26/9.
Lorsque la SMA de 7 périodes est supérieure aux SMA de 15 et 60 périodes et que la SMA de 15 périodes est supérieure à la SMA de 60 périodes, elle est considérée comme un signal haussier de l'indicateur SMA, avec une probabilité de 0,5.
Dans le même temps, lorsque la ligne MACD traverse au-dessus de la ligne de signal, elle est considérée comme un signal haussier de l'indicateur MACD, également avec une probabilité de 0,5.
Lorsque les probabilités de signaux haussiers des deux indicateurs s'élèvent à 1, une position longue sera ouverte.
À l'inverse, lorsque la SMA à 7 périodes tombe en dessous de la SMA à 15 et 60 périodes, et que la SMA à 15 périodes est en dessous de la SMA à 60 périodes, elle est considérée comme un signal baissier de l'indicateur SMA, avec une probabilité de 0,5.
Pendant ce temps, lorsque la ligne MACD traverse en dessous de la ligne de signal, elle est considérée comme un signal baissier de l'indicateur MACD, avec une probabilité de 0,5.
Lorsque les probabilités de signaux baissiers des deux indicateurs s'élèvent à 1, une position courte est ouverte.
En outre, la stratégie adopte deux points de prise de profit différents: fermer 50% de la position lorsque le prix augmente ou diminue de 9% et fermer la position restante lorsque le prix augmente ou diminue de 21%.
Si un signal contraire à la position actuelle se produit, la position actuelle sera fermée en premier avant d'ouvrir une nouvelle position basée sur le nouveau signal.
Le plus grand avantage de la stratégie du double indicateur est qu'elle utilise les forces des deux indicateurs SMA et MACD. SMA peut effectivement suivre les changements de tendance des prix et filtrer le bruit du marché, tandis que MACD peut identifier les opportunités d'inversion de tendance à court terme.
En outre, l'adoption de SMA avec des paramètres différents permet de discerner les tendances à long terme et à moyen terme, tandis que la stratégie de prise de bénéfices se limite à des bénéfices partiels et maîtrise les risques.
Il convient de noter certains risques potentiels de la stratégie à double indicateur. Comme elle repose uniquement sur des indicateurs techniques, des signaux incorrects peuvent se produire. De plus, des paramètres de prise de profit inappropriés pourraient entraîner une sortie prématurée, manquant des tendances majeures.
La stratégie peut être optimisée en ajustant les paramètres de la période SMA ou en incorporant des indicateurs de filtrage supplémentaires pour assurer des signaux plus fiables.
Certains aspects de la stratégie à double indicateur peuvent être encore optimisés:
Testez en ajoutant d'autres indicateurs techniques tels que le RSI, les bandes de Bollinger pour le filtrage multi-indicateurs.
Essayez des algorithmes d'apprentissage automatique pour construire des modèles de jugement de signal en utilisant plusieurs variables.
Effectuer le réglage des paramètres en fonction des différents produits et des délais.
Incorporer un stop loss pour contrôler strictement les pertes d'une seule transaction.
Optimiser la stratégie de prise de profit pour suivre les tendances soutenues.
Grâce à un backtesting et à une optimisation systématiques, la stabilité et la rentabilité de la stratégie peuvent être continuellement améliorées.
La stratégie du double indicateur combine les atouts de SMA et MACD pour améliorer la précision du signal tout en contrôlant efficacement les risques.
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA & MACD Dual Direction Strategy", shorttitle="SMDDS", overlay=true, initial_capital=1000) // SMA settings sma7_length = input.int(7, title="7 Candle SMA Length") sma15_length = input.int(15, title="15 Candle SMA Length") sma60_length = input.int(60, title="60 Candle SMA Length") // MACD settings fast_length = input.int(12, title="Fast Length") slow_length = input.int(26, title="Slow Length") signal_length = input.int(9, title="Signal Length") // Leverage leverage = 10 // Calculate the SMAs sma7 = ta.sma(close, sma7_length) sma15 = ta.sma(close, sma15_length) sma60 = ta.sma(close, sma60_length) // Calculate the MACD line and Signal line [macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_length) // SMA-based Probabilities smaBullishProb = (sma7 > sma15 and sma7 > sma60 and sma15 > sma60) ? 0.5 : 0.0 smaBearishProb = (sma7 < sma15 and sma7 < sma60 and sma15 < sma60) ? 0.5 : 0.0 // MACD-based Probabilities macdBullishProb = ta.crossover(macdLine, signalLine) ? 0.5 : 0.0 macdBearishProb = ta.crossunder(macdLine, signalLine) ? 0.5 : 0.0 // Combined Probabilities combinedBullishProb = smaBullishProb + macdBullishProb combinedBearishProb = smaBearishProb + macdBearishProb // Trade logic using `if` conditions if combinedBullishProb == 1.0 strategy.close("Short") strategy.entry("Long", strategy.long, qty=leverage) if combinedBearishProb == 1.0 strategy.close("Long") strategy.entry("Short", strategy.short, qty=leverage) // Exit conditions based on profit points longTargetProfit1 = close * 1.09 longTargetProfit2 = close * 1.21 shortTargetProfit1 = close * 0.91 shortTargetProfit2 = close * 0.79 strategy.exit("Long TP1", from_entry="Long", limit=longTargetProfit1, qty_percent=0.5) strategy.exit("Long TP2", from_entry="Long", limit=longTargetProfit2) strategy.exit("Short TP1", from_entry="Short", limit=shortTargetProfit1, qty_percent=0.5) strategy.exit("Short TP2", from_entry="Short", limit=shortTargetProfit2) // Visualization (optional) plot(sma7, color=color.green, title="7 Candle SMA") plot(sma15, color=color.blue, title="15 Candle SMA") plot(sma60, color=color.red, title="60 Candle SMA") hline(0, "Zero Line", color=color.gray) plot(macdLine - signalLine, color=color.blue, title="MACD Histogram")