Cette stratégie utilise une combinaison de moyennes mobiles rapides et lentes pour déterminer la direction de la tendance et capturer les tendances à moyen et long terme pour le trading de tendance.
La stratégie s'appuie principalement sur la croix dorée et la croix de mort des moyennes mobiles pour déterminer les tendances du marché.
Lorsque le MA rapide traverse au-dessus du MA lent, il indique une tendance haussière sur le marché, et la stratégie sera longue à l'ouverture de la barre suivante.
En outre, le paramètre
Pour le trading de crypto, la stratégie intègre également une logique de valeur extrême - seulement lorsque les MAs rapides et lents atteignent des zones extrêmes, les signaux de trading seront déclenchés.
La règle de sortie est simple et directe - position de fermeture lorsque l'arrêt de perte est atteint.
Les risques peuvent être réduits par:
La stratégie peut être améliorée par les aspects suivants:
Tester plus de combinaisons d'AM pour trouver les paramètres optimaux pour le marché actuel, par exemple une AM rapide de 10 périodes et une AM lente de 50 périodes.
Testez en ajoutant le MACD, le KDJ et d'autres indicateurs pour établir des règles d'entrée plus strictes et éviter de faux signaux.
L'entrée simple actuelle en double MA peut être améliorée:
Testez d'autres mécanismes d'arrêt tels que l'arrêt de traction pour éviter un arrêt prématuré.
Permettre les réentrées après les arrêts, pour éviter de manquer les tendances.
En résumé, cette stratégie de base de suivi des tendances a une logique simple et directe - en utilisant des MAs doubles pour la direction de la tendance et des arrêts en mouvement pour la gestion des risques. Les avantages sont faciles à comprendre, peuvent tirer profit des tendances et gérer les risques. Mais des limitations existent également, comme de mauvais signaux lors de consolidations, des arrêts prématurés, etc. Un réglage et une optimisation en direct sont nécessaires, tels que l'ajout de filtres, l'ajustement des arrêts, pour la rendre adaptable à différents environnements de marché. En tant que stratégie de trading de tendance d'introduction, elle convient aux débutants pour apprendre et appliquer. Mais ses limitations doivent être notées et des stratégies plus avancées doivent être explorées.
/*backtest start: 2023-08-21 00:00:00 end: 2023-09-20 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", 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, %") 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?") needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") src = close //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 trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[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 //Fast RSI fastup = rma(max(change(close), 0), 2) fastdown = rma(-min(change(close), 0), 2) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //CryptoBottom mac = sma(close, 10) len = abs(close - mac) sma = sma(len, 100) max = max(open, close) min = min(open, close) //Signals up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1 dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1 up2 = high < center and high < center2 and bar == -1 and needex dn2 = low > center and low > center2 and bar == 1 and needex up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //Lines plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA") plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Trading stoplong = up1 == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn1 == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] if up1 or up2 or up3 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.exit("Stop Long", "Long", stop = stoplong) if dn1 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.exit("Stop Short", "Short", stop = stopshort) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()