トリプル相対力指数定量取引戦略

RSI SMA
作成日: 2024-05-15 10:23:08 最終変更日: 2024-05-15 10:23:08
コピー: 0 クリック数: 841
1
フォロー
1617
フォロワー

トリプル相対力指数定量取引戦略

概要

この戦略は,相対的に強い指数 ((RSI)) を利用して,市場が過買過売を判断し,価格が200日単一の移動平均 ((SMA)) の上にある傾向フィルター条件として組み合わせて,取引を決定する.この戦略は,三重のRSI指標を使って,開店条件を共同構築し,短期RSIが35未満で,連続して3つの周期が下降傾向にあるときのみ,第三の周期RSIが60未満で,現在の閉店価格が200日SMAの上にあるときのみ,多額の取引を行う.平仓条件はRSIを50を越える.

戦略原則

  1. RSIを指定した周期で計算する
  2. ポジション開設の条件は以下の通りです.
    • RSIが35未満で
    • 現在のRSIは,前1サイクルRSI,前1サイクルRSIは,前2サイクルRSI,前2サイクルRSIは,前3サイクルRSIより小さい
    • RSIが60未満の最初の3サイクル
    • 現在閉店価格は200日SMAより大きい.
  3. この4つの条件を同時に満たすなら, ポジションを開くことができます.
  4. RSIが50を超えると,持仓中に平仓します.
  5. ステップ2から4を繰り返して,次の取引を行う.

戦略的優位性

  1. RSIによって超買いと超売りを判断し,超売りの領域でポジションを開き,市場逆転の機会を捉えることができます
  2. 三重RSIで共同でポジション開設シグナルを構築することで,偽シグナルの可能性を低減し,シグナル信頼性を向上させる
  3. 価格が200日平均線以上でトレンド条件として追加され,下降傾向で取引を避ける
  4. 平仓の条件はシンプルで明快で,利益の引き出しも時間通りです.
  5. 戦略の論理は明確で,理解し,実行しやすい.

戦略リスク

  1. RSIはシグナル遅延により,ポジション開設の最適なタイミングを逃している可能性があります.
  2. ポジション開設条件は比較的厳格で,取引頻度は低いため,一部の取引を逃す可能性があります.
  3. 市場が不振を起こす可能性のある状況で,頻繁に空調を入れている.
  4. 戦略は,一方的な上昇を捉えるだけで,トレンドが逆転した後の下降を捉えることはできません.

戦略最適化の方向性

  1. 移動停止または固定停止を加え,単一取引のリスクを制御することを考慮することができます.
  2. RSIと他の補助指標の組み合わせを研究し,ポジション開設シグナルの信頼性とタイミングを向上させる
  3. ポジション開設条件を最適化し,信号の信頼性を確保しながら取引頻度を向上させる
  4. ポジション管理を導入し,市場トレンドの強さや変動率に応じてポジションを動的に調整する
  5. ショートラインとミドルラインの組み合わせを考慮し,異なる市場状況に対応する戦略のバージョンを開発する

要約する

この戦略は,三重RSIによってポジション開設条件を構成し,長期平均線上での価格をトレンドフィルターとして組み合わせて,このように超売り反転状況を捕捉する.戦略の論理は単純で,実行しやすく,最適化できる.しかし,戦略には,信号遅れ,取引頻度が低い,一方的な動きのみを捕捉できるなどのリスクと不足も存在し,実用的なアプリケーションで継続的に调整と改善が必要である.ストップ・ローズ・ストップ・ポジション,管理,その他の指標と組み合わせた方法などの導入により,戦略の安定性と収益性をさらに向上させることができる.

ストラテジーソースコード
/*backtest
start: 2023-05-15 00:00:00
end: 2024-05-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@author Honestcowboy
//
strategy("Triple RSI [Honestcowboy]" )

  
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> User Inputs <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

rsiLengthInput = input.int(5, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")

// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> VARIABLE CALCULATIONS <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> CONDITIONALS <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

rule1   = rsi<35
rule2   = rsi<rsi[1] and rsi[1]<rsi[2] and rsi[2]<rsi[3]
rule3   = rsi[3]<60
rule4   = close>ta.sma(close, 200)

longCondition = rule1 and rule2 and rule3 and rule4
closeCondition = rsi>50

// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> GRAPHICAL DISPLAY <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

hline(30, title="Long Condition Line")
hline(50, title="Exit Condition Line")
plot(rsi)
plotshape(longCondition ? rsi-3 : na, title="Long Condition", style=shape.triangleup, color=color.lime, location=location.absolute)
plotshape(closeCondition and rsi[1]<50? rsi+3 : na, title="Exit Condition", style=shape.triangledown, color=#e60000, location=location.absolute)

// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> AUTOMATION AND BACKTESTING <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

if longCondition and strategy.position_size==0
    strategy.entry("LONG", strategy.long)
if closeCondition
    strategy.close("LONG")