資源の読み込みに... 荷物...

戦略をフォローする相対強度指数の変化傾向

作者: リン・ハーンチャオチャン,日付: 2024-03-29 16:16:37
タグ:

img

概要

この戦略は,修正相対強度指数 (Modified RSI) をベースに市場トレンドを把握する.この戦略の主なアイデアは,市場トレンドを決定し,トレンド方向に従って取引を行うために,修正RSI指標のクロスオーバー信号とヒストグラム信号を使用することです.

戦略原則

  1. 修正されたRSIのインプットとして価格のEMAを計算する
  2. 修正されたRSI指標を計算する
  3. シグナルラインとして修正されたRSIのEMAを計算する
  4. ヒストグラムとして修正されたRSIと信号ラインの違いを計算します.
  5. 修正されたRSIが信号線上を横切り,ヒストグラムが0より大きいとき,購入信号を生成します.
  6. 修正されたRSIが信号線以下を横断しヒストグラムが0未満になると,売り信号を生成します.

戦略 の 利点

  1. 修正されたRSI指標は,従来のRSI指標と比較して傾向をより良く把握できます.
  2. 改変されたRSIのクロスオーバー信号とヒストグラム信号を組み合わせることで,誤った信号を効果的にフィルタリングすることができます.
  3. パラメータは調整可能で,異なる市場や時間枠に適用できます
  4. このプログラムは簡潔で計算効率が良い

戦略リスク

  1. RSI指標の変更は,範囲限定の市場で誤った信号を生成する傾向があります.
  2. トレンドターニングポイントの捉え方は遅くなる可能性があります
  3. 価格騒音によって,単一の指標が容易に影響を受ける

戦略の最適化方向

  1. シグナル信頼性を向上させるため,移動平均値などの他の傾向指標と組み合わせることができます.
  2. 単一の取引リスクを制御するために,ストップ・ロストとテイク・プロフィートモジュールを追加できます.
  3. パラメータは,異なる市場の特徴に基づいて最適化できます
  4. ポジション管理モジュールは,ポジションを動的に調整するために追加することができます.

概要

この戦略は,トレンドフォローの観点から取引システムを構築するために,修正RSI指標の特徴を利用する.修正RSI指標は,伝統的なRSI指標のいくつかの欠陥を克服し,比較的強いトレンドキャプチャ能力を備えています.しかし,単一の指標に基づく戦略は,しばしば制限があり,他の技術手段と組み合わせて改善する必要があります.戦略パラメータを最適化し,信号源を豊かにし,リスク制御モジュールを追加し,その他の方法により,この戦略の安定性と収益性をさらに改善することができます.


/*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)



もっと