Cette stratégie utilise le croisement de deux moyennes mobiles avec des périodes différentes pour générer des signaux de trading.
La stratégie utilise un MA à court terme de 9 périodes (SMA) et un MA à long terme de 50 périodes (LMA). Lorsque le SMA traverse au-dessus du LMA, un signal d'achat est généré.
La stratégie intègre également l'indicateur RSI pour mesurer la force de la tendance. Les signaux de trading ne sont générés que lorsque le RSI est au-dessus d'un seuil (défaut 55).
La stratégie négocie 30% du capital total à chaque fois, avec une seule position ouverte à la fois.
Les risques peuvent être réduits par l'optimisation des paramètres, l'utilisation d'autres indicateurs, une gestion stricte du capital et un stop loss.
La stratégie capture les opportunités de tendance en utilisant un système de croisement MA simple. Les paramètres par défaut sont optimisés avec des rendements réguliers, adaptés au trading algorithmique. Des améliorations supplémentaires peuvent être apportées en ajoutant d'autres indicateurs, en optimisant les paramètres et en mettant en œuvre un stop loss. Dans l'ensemble, il s'agit d'une stratégie de suivi de tendance efficace pour les marchés en utilisant des signaux de croisement.
/*backtest start: 2023-09-16 00:00:00 end: 2023-10-16 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/ // © relevantLeader16058 //@version=4 strategy(shorttitle='Maximized Moving Average Crossing ',title='Maximized Moving Average Crossing (by Coinrule)', overlay=true, initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" //MA inputs and calculations inlong=input(50, title='MA long period') inshort=input(9, title='MA short period') MAlong = sma(close, inlong) MAshort= sma(close, inshort) // RSI inputs and calculations lengthRSI = (14) RSI = rsi(close, lengthRSI) RSI_Signal = input(55, title = 'RSI Trigger', minval=1) //Entry and Exit bullish = crossover(MAshort, MAlong) bearish = crossunder(MAshort, MAlong) strategy.entry(id="long", long = true, when = bullish and RSI > RSI_Signal and window()) strategy.close(id="long", when = bearish and window()) plot(MAshort, color=color.purple, linewidth=2) plot(MAlong, color=color.red, linewidth=2)