Cette stratégie utilise l'indicateur RSI cumulatif pour identifier les tendances et prendre des décisions d'achat et de vente lorsque la valeur cumulée du RSI dépasse les seuils clés.
L'indicateur RSI cumulatif est l'accumulation des valeurs du RSI. En définissant le paramètre cumulé, les valeurs du RSI au cours des derniers jours cumulés sont additionnées pour dériver l'indicateur RSI cumulatif.
Lorsque l'indicateur RSI cumulatif franchit le niveau supérieur de la bande de Bollinger, une position longue est ouverte. Lorsque l'indicateur RSI cumulatif franchit le niveau inférieur de la bande de Bollinger, la position ouverte est fermée.
En outre, une option de filtre de tendance est ajoutée. Les transactions longues ne seront ouvertes que lorsque le prix est supérieur à la moyenne mobile de 100 jours, ce qui signifie qu'il est dans un canal de tendance haussière. Ce filtre évite les transactions erronées pendant les fluctuations du marché.
La stratégie de rupture du RSI cumulatif a un flux logique lisse et identifie avec précision les tendances à moyen et long terme en filtrant avec le RSI cumulatif et en ajoutant le jugement de tendance. Les résultats des tests de retour sont exceptionnels au cours de la dernière décennie. Il y a encore place à des améliorations dans des domaines tels que l'ajustement des paramètres, l'ajout d'indicateurs, l'enrichissement des conditions de sortie pour rendre la stratégie plus robuste.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h 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/ // @version=5 // Author = TradeAutomation strategy(title="Cumulative RSI Strategy", shorttitle="CRSI Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_contract, commission_value=.0035, slippage = 1, margin_long = 75, initial_capital = 25000, default_qty_type=strategy.percent_of_equity, default_qty_value=110) // Cumulative RSI Indicator Calculations // rlen = input.int(title="RSI Length", defval=3, minval=1) cumlen = input(3, "RSI Cumulation Length") rsi = ta.rsi(close, rlen) cumRSI = math.sum(rsi, cumlen) ob = (100*cumlen*input(94, "Oversold Level")*.01) os = (100*cumlen*input(20, "Overbought Level")*.01) // Operational Function // TrendFilterInput = input(false, "Only Trade When Price is Above EMA?") ema = ta.ema(close, input(100, "EMA Length")) TrendisLong = (close>ema) plot(ema) // Backtest Timeframe Inputs // startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31) startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12) startYear = input.int(title="Start Year", defval=2010, minval=1950, maxval=2100) endDate = input.int(title="End Date", defval=1, minval=1, maxval=31) endMonth = input.int(title="End Month", defval=1, minval=1, maxval=12) endYear = input.int(title="End Year", defval=2099, minval=1950, maxval=2100) InDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0)) // Buy and Sell Functions // if (InDateRange and TrendFilterInput==true) strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os) and TrendisLong, comment="Buy", alert_message="buy") strategy.close("Long", when = ta.crossover(cumRSI, ob) , comment="Sell", alert_message="Sell") if (InDateRange and TrendFilterInput==false) strategy.entry("Long", strategy.long, when = ta.crossover(cumRSI, os), comment="Buy", alert_message="buy") strategy.close("Long", when = ta.crossover(cumRSI, ob), comment="Sell", alert_message="sell") if (not InDateRange) strategy.close_all()