Strategi ini menangkap trend pasaran berdasarkan Indeks Kekuatan Relatif Dimodifikasi (RSI Dimodifikasi). Idea utama strategi adalah menggunakan isyarat silang dan isyarat histogram penunjuk RSI Dimodifikasi untuk menentukan trend pasaran dan membuat perdagangan mengikut arah trend.
Strategi ini menggunakan ciri-ciri penunjuk RSI yang diubah suai untuk membina sistem perdagangan dari perspektif trend berikut. Penunjuk RSI yang diubah suai mengatasi beberapa kelemahan penunjuk RSI tradisional dan mempunyai keupayaan menangkap trend yang agak kuat. Walau bagaimanapun, strategi berdasarkan satu indikator sering mempunyai batasan dan perlu ditingkatkan dalam kombinasi dengan cara teknikal lain. Dengan mengoptimumkan parameter strategi, memperkaya sumber isyarat, menambah modul kawalan risiko, dan kaedah lain, kestabilan dan keuntungan strategi ini dapat ditingkatkan lagi.
/*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)