Cette stratégie capture les tendances du marché basées sur l'indice de force relative modifiée (RSI modifié). L'idée principale de la stratégie est d'utiliser les signaux croisés et les signaux d'histogramme de l'indicateur RSI modifié pour déterminer la tendance du marché et effectuer des transactions selon la direction de la tendance.
Cette stratégie utilise les caractéristiques de l'indicateur RSI modifié pour construire un système de trading dans la perspective du suivi de tendance. L'indicateur RSI modifié surmonte certains des défauts de l'indicateur RSI traditionnel et a une capacité de capture de tendance relativement forte. Cependant, les stratégies basées sur un seul indicateur ont souvent des limites et doivent être améliorées en combinaison avec d'autres moyens techniques. En optimisant les paramètres de la stratégie, en enrichissant les sources de signaux, en ajoutant des modules de contrôle des risques et d'autres méthodes, la stabilité et la rentabilité de cette stratégie peuvent être encore améliorées.
/*backtest start: 2023-03-23 00:00:00 end: 2024-03-28 00:00:00 period: 1d basePeriod: 1h 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/ // © YogirajDange //@version=5 // Verical lines // // Define the times // t1 = timestamp(year, month, dayofmonth, 09, 15) // 9:15 // t2 = timestamp(year, month, dayofmonth, 11, 15) // 11:15 // t3 = timestamp(year, month, dayofmonth, 13, 15) // 1:15 // t4 = timestamp(year, month, dayofmonth, 15, 25) // 3:25 // // Check if the current bar is on the current day // is_today = (year(time) == year(timenow)) and (month(time) == month(timenow)) and (dayofmonth(time) == dayofmonth(timenow)) // // Draw a vertical line at each time // if is_today and (time == t1 or time == t2 or time == t3 or time == t4) // line.new(x1 = bar_index, y1 = low, x2 = bar_index, y2 = high, extend = extend.both, color=color.red, width = 1) strategy('Modified RSI') col_grow_above = input(#02ac11, "Above Grow", group="Histogram", inline="Above") col_fall_above = input(#6ee47d, "Fall", group="Histogram", inline="Above") col_grow_below = input(#e5939b, "Below Grow", group="Histogram", inline="Below") col_fall_below = input(#dd0000, "Fall", group="Histogram", inline="Below") EMA_length = input.int(13, 'Price_EMA', minval=1) RSI_length = input.int(14, 'RSI_Period', minval=1) Avg_length = input.int(5, 'RSI_Avg_EMA', minval=1) fastMA = ta.ema(close, EMA_length) modrsi = ta.rsi(fastMA, RSI_length) RSIAVG = ta.ema(modrsi, Avg_length) plot(modrsi, color=color.rgb(38, 0, 255), linewidth=2) plot(RSIAVG, color=color.rgb(247, 0, 0)) rsiUpperBand = hline(60, 'RSI Upper Band', color=#099b0e) //hline(50, "RSI Middle Band", color=color.new(#787B86, 50)) rsiLowerBand = hline(40, 'RSI Lower Band', color=#e90101) RSI_hist = modrsi - RSIAVG //plot(RSI_hist,"RSI_Histogram", color = #c201e9, style = plot.style_columns,linewidth= 5) plot(RSI_hist, title="RSI_Histogram", style=plot.style_columns, color=(RSI_hist>=0 ? (RSI_hist[1] < RSI_hist ? col_grow_above : col_fall_above) : (RSI_hist[1] < RSI_hist ? col_grow_below : col_fall_below))) /////// Moving Averages 20 50 EMA fast_ma = input.int(20, minval=2, title="Fast_EMA") slow_ma = input.int(50, minval=2, title="Slow_EMA") src = input.source(close, title="Source") out = ta.ema(src, fast_ma) out1 = ta.ema(src, slow_ma) //plot(out, title="20 EMA", color=color.rgb(117, 71, 247), linewidth = 2) //plot(out1, title="50 EMA", color=color.rgb(0, 0, 0), linewidth = 2) longCondition = ((ta.crossover(modrsi, RSIAVG)) and (RSI_hist > 0)) if longCondition strategy.entry('B', strategy.long) shortCondition = ((ta.crossunder(modrsi, RSIAVG)) and (RSI_hist < 0)) if shortCondition strategy.entry('S', strategy.short)