Cette stratégie juge l'évolution des prix en calculant le croisement des moyennes mobiles doubles et en émettant des signaux d'achat et de vente avec certaines restrictions de paramètres. Elle se compose principalement de trois parties: premièrement, juger l'évolution des prix en calculant le croisement des moyennes mobiles rapides et lentes; deuxièmement, définir certaines restrictions de paramètres pour éviter de mauvaises transactions; troisièmement, utiliser le stop profit et le stop loss pour contrôler les risques.
Le noyau de cette stratégie réside dans le calcul des moyennes mobiles rapides et lentes. La moyenne mobile rapide a une période de la moitié de la période moyenne mobile totale, qui est plus sensible aux changements de prix; la moyenne mobile lente a une période de la période moyenne mobile totale, qui reflète les changements de prix plus en douceur. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, on pense que le prix augmente; quand il est en dessous, il baisse.
En outre, la stratégie définit certains paramètres pour éviter de mauvaises transactions. Par exemple, le seuil de décision est de s'assurer que les signaux ne sont émis que lorsque la différence entre les deux moyennes mobiles dépasse un certain niveau; le paramètre de confiance est utilisé pour filtrer les petites fluctuations de prix.
Enfin, le stop profit et le stop loss sont utilisés pour contrôler les risques. Si le profit ouvert est inférieur au point de stop loss ou supérieur au point de stop profit, les positions seront fermées. Cela limite efficacement la perte d'un seul commerce.
Le plus grand avantage de cette stratégie est de combiner le jugement de la tendance des prix et des caractéristiques de volatilité à travers des indicateurs de moyenne mobile. Le croisement des moyennes mobiles doubles est une approche technique classique efficace pour déterminer les tendances des prix. Avec l'optimisation des paramètres, il peut capturer avec précision les tendances. Le paramètre de confiance peut filtrer efficacement les marchés agités et éviter les erreurs fréquentes.
En outre, des paramètres tels que le seuil de décision, le stop profit et le stop loss peuvent également réduire considérablement les risques commerciaux en évitant de courir après les hauts et de vendre les bas.
Le principal risque de cette stratégie est la possibilité de signaux erronés des doubles moyennes mobiles. Les moyennes mobiles rapides et lentes sont des moyennes mobiles pondérées qui réagissent lentement à des événements soudains, manquant ainsi des renversements de prix à court terme.
En outre, des paramètres raisonnables doivent être définis en fonction des caractéristiques des différents produits de négociation et de la volatilité.
La stratégie peut être optimisée dans les aspects suivants:
Optimiser les périodes de moyennes mobiles, définir des moyennes mobiles adaptatives pour mieux modéliser les fluctuations des prix de différents cycles;
Mettre en place des mécanismes de suivi dynamiques pour le stop-profit et le stop-loss, calculer la volatilité en temps réel en fonction des conditions du marché afin que les points d'arrêt puissent changer de manière dynamique;
Augmenter les modèles d'apprentissage automatique pour juger des tendances des prix, utiliser plus de données historiques pour déterminer les mouvements actuels des prix et réduire les mauvais signaux.
En général, il s'agit d'une stratégie de trading de tendance classique simple et efficace. Il utilise une double moyenne mobile croisée pour déterminer les tendances, définit des paramètres pour contrôler les risques et a une grande configuration pour le trading multi-produits.
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend strategy("Trade Signal", shorttitle="Trade Alert", overlay=true ) keh=input(title="Double HullMA",defval=14, minval=1) dt = input(defval=0.0010, title="Decision Threshold (0.001)", type=float, step=0.0001) SL = input(defval=-10.00, title="Stop Loss in $", type=float, step=1) TP = input(defval=100.00, title="Target Point in $", type=float, step=1) ot=1 n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma sqn=round(sqrt(keh)) n2ma1=2*wma(close[1],round(keh/2)) nma1=wma(close[1],keh) diff1=n2ma1-nma1 sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) b=n1>n2?lime:red c=n1>n2?green:red d=n1>n2?red:green confidence=(request.security(syminfo.tickerid, '5', close[1])-request.security(syminfo.tickerid, '60', close[1]))/request.security(syminfo.tickerid, '60', close[1]) conversionPeriods = input(9, minval=1, title="Conversion Line Periods") basePeriods = input(26, minval=1, title="Base Line Periods") laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods") displacement = input(26, minval=1, title="Displacement") donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) LS=close, offset = -displacement MACD_Length = input(9) MACD_fastLength = input(12) MACD_slowLength = input(26) MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength) aMACD = ema(MACD, MACD_Length) closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD if (shortCondition) strategy.entry("Short",strategy.short) //alerts alertcondition(closelong, title='Close Buy Position', message='Close Buy Position') alertcondition(closeshort, title='Close Short Position', message='Close Short Position') alertcondition(longCondition, title='Buy Signal', message='Buy Signal Alert') alertcondition(shortCondition, title='Sell Signal', message='Sell Signal Alert') //a1=plot(n1,color=c) //a2=plot(n2,color=c)plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4) //plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4) plot(conversionLine, color=#0496ff, title="Conversion Line") plot(baseLine, color=#991515, title="Base Line") plot(close, offset = -displacement, color=#459915, title="Lagging Span") p1=plot (leadLine1, offset = displacement, color=green, title="Lead 1") p2=plot (leadLine2, offset = displacement, color=red, title="Lead 2") fill(p1, p2, color = leadLine1 > leadLine2 ? green : red) // remove the "//" from before the plot script if want to see the indicators on chart