La stratégie de contre-tendance à moyenne mobile double est principalement conçue pour le swing trading appliqué au marché FOREX. Cette stratégie génère des signaux de trading en utilisant deux moyennes mobiles de délais différents. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, une position courte est prise pour rechercher un renversement; lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, une position longue est prise pour rechercher un renversement.
Cette stratégie utilise des moyennes mobiles de 1 heure et de 1 jour. La moyenne mobile d'une heure reflète les changements de prix de manière plus sensible et peut servir de moyenne mobile rapide; la moyenne mobile d'un jour répond aux changements de prix plus lentement et peut servir de moyenne mobile lente. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, on considère que le marché actuel est haussier et un signal court sera généré; lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, on considère que le marché actuel est baissier et un signal long sera généré.
Le principe d'entrer long ou court pour rechercher un renversement lorsque les moyennes mobiles rapides et lentes ont des croix dorées ou des croix mortes est que lorsque les moyennes mobiles rapides et lentes se croisent, cela indique que le marché a peut-être inversé, et les croisements de la ligne rapide et de la ligne lente sont le moment de générer des signaux d'inversion.
Cette stratégie définit également les conditions de sélection de l'heure et de la date de négociation. Elle ne négocie que dans la fourchette de dates et les heures de négociation fixées pour éviter de négocier pendant des périodes inappropriées.
La stratégie de contre-trend à moyenne mobile double présente les avantages suivants:
Les stratégies d'inversion ont l'avantage d'avoir un grand espace de profit.
L'utilisation de combinaisons doubles de moyennes mobiles filtre les signaux et évite les faux signaux. Un seul indicateur est sujet aux faux signaux, tandis que les combinaisons de doubles indicateurs peuvent améliorer la fiabilité des signaux en filtrant certains faux signaux, rendant les opportunités de trading plus fiables.
La fixation des heures de négociation et des conditions de date permet d'éviter les périodes d'inactivité du marché et d'éviter d'être pris au piège.
Les stratégies d'inversion sont adaptées aux transactions à moyen terme, les stratégies à moyen terme sont plus stables que les opérations à haute fréquence et évitent des achats et des ventes fréquents.
Le contrôle maximal du prélèvement est bénéfique pour la gestion des capitaux, car la fixation du taux maximal de prélèvement permet de contrôler efficacement le risque du jour au lendemain et d'éviter d'énormes pertes de fonds.
La stratégie de contre-trend à moyenne mobile double comporte également les risques suivants:
Les signaux d'inversion peuvent échouer et conduire à des pertes. Les signaux d'inversion de prix ne sont pas toujours fiables. Il existe un risque de perte lorsque les prix continuent la tendance sans inversion. Les pertes peuvent être contrôlées en définissant un stop loss.
L'écart de tendance entraîne des pertes. Lorsque les deux moyennes mobiles se sont séparées de manière significative avant l'inversion, il peut y avoir un risque de perte. Le moment de l'inversion peut être déterminé en observant la distance entre les moyennes mobiles.
Si les horaires de négociation sont trop stricts, certaines opportunités de négociation peuvent être manquées.
L'échec de l'arrêt des pertes immédiatement après l'inversion entraîne des pertes accrues.
La stratégie de contre-trend de la moyenne mobile double peut également être optimisée dans les aspects suivants:
Les indicateurs tels que MACD, KDJ peuvent être testés en combinaison avec des moyennes mobiles doubles pour améliorer la précision du signal.
Optimiser les paramètres du cycle de moyenne mobile pour trouver les paramètres optimaux.
Élargir ou réduire les heures de négociation pour trouver les heures de négociation optimales. Tester les effets de l'ajustement des heures de négociation en fonction des différentes caractéristiques du produit.
Ajoutez des conditions de filtrage de tendance pour éviter les écarts. Des indicateurs tels que ADX peuvent être ajoutés pour juger de la force de la tendance et éviter un renversement lorsqu'il n'y a pas de tendance évidente.
Ajouter des modèles d'apprentissage automatique pour la vérification du signal. Les modèles peuvent être formés pour juger de la fiabilité des signaux d'inversion et filtrer certains signaux de mauvaise qualité.
La stratégie de contre-tendance de moyenne mobile double est adaptée au trading à moyen terme sur le marché des changes. Elle utilise des croix dorées et des croix mortes entre les moyennes mobiles rapides et lentes pour générer des signaux de renversement, effectuant des contre-opérations à des points clés du marché, ce qui présente l'avantage d'un grand espace de profit.
/*backtest start: 2023-12-08 00:00:00 end: 2024-01-07 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SoftKill21 //@version=4 strategy("gbpnzd 1h", overlay=true) src = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", type=input.resolution, defval="60") len = input(28, title="Moving Average Length - LookBack Period") //periodT3 = input(defval=7, title="Tilson T3 Period", minval=1) factorT3 = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0) atype = input(2,minval=1,maxval=8,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3") fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true res = useCurrentRes ? timeframe.period : resCustom resCustom2 = input(title="plm", type=input.resolution, defval="D") res2 = resCustom2 //hull ma definition hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))) //TEMA definition ema1 = ema(src, len) ema2 = ema(ema1, len) ema3 = ema(ema2, len) tema = 3 * (ema1 - ema2) + ema3 //Tilson T3 factor = factorT3 *.10 gd(src, len, factor) => ema(src, len) * (1 + factor) - ema(ema(src, len), len) * factor t3(src, len, factor) => gd(gd(gd(src, len, factor), len, factor), len, factor) tilT3 = t3(src, len, factor) avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : atype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3 out = avg ema20 = security(syminfo.tickerid, res, out) plot3 = security(syminfo.tickerid, res2, ema20) plot33 = security(syminfo.tickerid, res, ema20) plot(plot3,linewidth=2,color=color.red) plot(plot33,linewidth=2,color=color.white) // longC = crossover(close[2], plot3) and close[1] > close[2] and close > close[1] // shortc = crossunder(close[2],plot3) and close[1] < close[2] and close < close[1] volumeMA=input(24) ema_1 = ema(volume, volumeMA) timeinrange(res, sess) => time(res, sess) != 0 //entrytime = timeinrange(timeframe.period, "0900-0915") myspecifictradingtimes = input('0900-2300', type=input.session, title="My Defined Hours") entrytime = time(timeframe.period, myspecifictradingtimes) != 0 longC = crossover(plot33,plot3) and time_cond and entrytime shortc = crossunder(plot33,plot3) and time_cond and entrytime // exitlong = crossunder(plot33,plot3) // exitshort = crossover(plot33,plot3) distanta=input(1.0025) exitshort = plot33/plot3 > distanta exitlong = plot3/plot33 > distanta inverse = input(true) exit = input(false) if(inverse==false) strategy.entry("long",1,when=longC) strategy.entry("short",0,when=shortc) if(inverse) strategy.entry("long",1,when=shortc) strategy.entry("short",0,when=longC) if(exit) strategy.close("long",when=exitlong) strategy.close("short",when=exitshort) // if(dayofweek==dayofweek.friday) // strategy.close_all() // risk = input(25) // strategy.risk.max_intraday_loss(risk, strategy.percent_of_equity)