Cette stratégie utilise des croisements moyens mobiles entre différents délais pour générer des signaux de trading. Elle permet d'observer des MAs sur des délais plus longs sur le graphique actuel pour détecter des tendances plus importantes.
La stratégie utilise deux moyennes mobiles calculées sur des délais distincts.
Par exemple, sur le graphique de 15 minutes, il utilise 20MA et 50MA:
Lorsque 15min 20MA dépasse 50MA par jour, il va long.
Il est ainsi possible d'observer des tendances sur des périodes plus longues sur la période en cours.
Les points de croisement peuvent être marqués pour des signaux commerciaux clairs.
Les risques peuvent être réduits par:
La stratégie peut être améliorée par:
Tester plus de combinaisons de périodes de MA pour optimisation
Ajout de confirmation secondaire lorsque le croisement se produit
Par exemple, vérifier le momentum MACD
Optimisation des arrêts pour éviter une sortie prématurée
Considérez les preuves Post123 pour décider des sorties
Différents filtres pour la TF courte et longue
Plus stricte pour la TF courte, plus détendue pour la TF longue
Considérez différents ensembles de paramètres pour différentes sessions
Les conditions du marché varient d'une session à l'autre
Cette stratégie observe des croisements entre les MAs de plusieurs délais pour déterminer la direction de la tendance et découvrir des tendances plus importantes. Cela filtre les bruits à court terme et se concentre sur les mouvements de prix plus importants. Cependant, des défis tels que le réglage des délais et les signaux en retard existent. Des améliorations peuvent être apportées par le biais d'un backtesting rigoureux et d'une optimisation pour des paramètres robustes, en ajoutant des filtres pour la confirmation, une validation en direct pour des améliorations continues en fonction des commentaires du marché.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 7d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //Run script on a long interval gives better result for e.g. 1 Day //Plots The Majority of Moving Averages //Defaults to Current Chart Time Frame --- But Can Be Changed to Higher Or Lower Time Frames //2nd MA Capability with Show Crosses Feature //study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true) strategy("Stratergy CM_Ultimate_MA_MTF", shorttitle = "Stratergy CM_Ultimate_MA_MTF", overlay = true) //,default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //inputs src = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="D") len = input(20, title="Moving Average Length - LookBack Period") atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA") cc = input(true,title="Change Color Based On Direction?") smoothe = input(2, minval=1, maxval=10, title="Color Smoothing - 1 = No Smoothing") doma2 = input(false, title="Optional 2nd Moving Average") len2 = input(50, title="Moving Average Length - Optional 2nd MA") atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA") cc2 = input(true,title="Change Color Based On Direction 2nd MA?") warn = input(false, title="***You Can Turn On The Show Dots Parameter Below Without Plotting 2nd MA to See Crosses***") warn2 = input(false, title="***If Using Cross Feature W/O Plotting 2ndMA - Make Sure 2ndMA Parameters are Set Correctly***") sd = input(false, title="Show Dots on Cross of Both MA's") res = useCurrentRes ? timeframe.period : resCustom //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 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) : tema //2nd Ma - hull ma definition hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2))) //2nd MA TEMA definition sema1 = ema(src, len2) sema2 = ema(sema1, len2) sema3 = ema(sema2, len2) stema = 3 * (sema1 - sema2) + sema3 avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src,len2) : tema out = avg out_two = avg2 out1 = security(syminfo.tickerid, res, out) out2 = security(syminfo.tickerid, res, out_two) ma_up = out1 >= out1[smoothe] ma_down = out1 < out1[smoothe] col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua circleYPosition = out2 chk=col==red?1:0 if (not na(chk)) if (chk[1]==1 and chk==0) strategy.entry("RsiLE", strategy.long, comment="RsiLE") else strategy.exit("RsiLE") if (chk[1]==0 and chk==1) strategy.entry("RsiSE", strategy.short, comment="RsiLE") else strategy.exit("RsiSE") plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col) plot(doma2 and out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2) plot(sd and cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)