La stratégie de suivi de tendance des moyennes mobiles doubles est une stratégie qui utilise une combinaison de moyennes mobiles rapides et lentes pour déterminer la tendance du marché et génère des signaux de trading lorsque la direction de la tendance change.
La stratégie de suivi de tendance de la moyenne mobile double utilise deux moyennes mobiles - une moyenne mobile rapide (5 périodes) et une moyenne mobile lente (21 périodes). La moyenne mobile rapide est utilisée pour générer des signaux de trading tandis que la moyenne mobile lente est utilisée pour déterminer la direction de la tendance du marché.
La stratégie utilise également un indicateur de canal de prix pour aider à déterminer la tendance. Le canal de prix est déterminé par les moyennes mobiles des prix les plus élevés et les plus bas. Lorsque les prix traversent le canal, cela indique un renversement de tendance. Cette stratégie utilise deux canaux de prix avec des périodes de 21 et 5 respectivement, correspondant aux périodes MA.
Lors de la détermination des signaux d'achat et de vente, la stratégie exige que des bougies rouges/vertes consécutives apparaissent (réglables par l'utilisateur) comme condition de filtre supplémentaire.
En résumé, la logique pour déterminer la tendance de cette stratégie est la suivante:
En évaluant la tendance à travers les délais, le bruit du marché peut être filtré efficacement et la direction de la tendance confirmée.
La stratégie de suivi de la tendance des doubles moyennes mobiles présente les avantages suivants:
En conclusion, cette stratégie présente une stabilité globale relativement bonne et présente de bons résultats sur des marchés où la tendance est forte.
La stratégie de suivi de la tendance des moyennes mobiles doubles comporte également certains risques, principalement:
Les mesures correspondantes visant à réduire les risques comprennent:
La stratégie peut être encore optimisée, principalement dans les domaines suivants:
Ces orientations d'optimisation peuvent encore améliorer la stabilité, l'adaptabilité et le niveau d'intelligence de la stratégie.
En conclusion, la stratégie de suivi de tendance des moyennes mobiles doubles est une stratégie de suivi de tendance relativement robuste. Elle combine les moyennes mobiles et les canaux de prix pour déterminer la direction et la force de la tendance, générant des signaux de trading avec le MA rapide. Les filtres de bougies supplémentaires aident également à éviter les mauvais signaux. Les paramètres réglables permettent l'adaptation à différents environnements de marché.
/*backtest start: 2023-12-24 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, "long") needshort = input(true, "short") needstops = input(false, "stops") stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %") useohlc4 = input(false, defval = false, title = "Use OHLC4") usefastsma = input(true, "Use fast MA Filter") fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period") slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period") bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q") needbg = input(false, defval = false, title = "Need trend Background?") needarr = input(false, defval = false, title = "Need entry arrows?") src = useohlc4 == true ? ohlc4 : close fastsma = ema(src, 5) //PriceChannel 1 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //PriceChannel 2 lasthigh2 = highest(src, fastlen) lastlow2 = lowest(src, fastlen) center2 = (lasthigh2 + lastlow2) / 2 //Trend //ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0 //trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1] trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1] trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1] trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -1 : trend[1] //Bars bar = close > open ? 1 : close < open ? -1 : 0 redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0 greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0 //Signals up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0 dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0 //Lines colorfastsma = usefastsma == true ? red : na plot(fastsma, color = colorfastsma, title = "Fast MA") plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2") //Arrows plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0) plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0) //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //Alerts alertcondition(up == 1, title='buy', message='Uptrend') alertcondition(dn == 1, title='sell', message='Downtrend') //Trading stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] longCondition = up == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) strategy.exit("Stop Long", "Long", stop = stoplong) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na) strategy.exit("Stop Short", "Short", stop = stopshort)