複数のRSI指標集約戦略


作成日: 2024-01-02 12:06:14 最終変更日: 2024-01-02 12:06:14
コピー: 0 クリック数: 697
1
フォロー
1621
フォロワー

複数のRSI指標集約戦略

概要

多重RSI指標集約戦略は,複数の相対強度指数 (RSI) を利用して株の選択時に取引する戦略である.この戦略は,同時に1,2,3,4,5つの異なる周期のRSI指標を使用し,任意のRSI指標が設定された限界値を下回ると買入シグナルを生じ,すべてのRSI指標がそれぞれの限界値を超えると売出シグナルを生じ,株のタイミング的なエントリーとエクジットを実現する.

戦略原則

この戦略の核心的な論理は,4周期,7周期,14周期,21周期および28周期のRSIを含む1,2,3,4,5の異なる周期のRSI指標を同時に追跡することです. これらの5つのRSI指標はそれぞれ異なる限界値を設定し,任意のRSI指標が対応する限界値を下回る限り,購入信号が生じます.

例えば,4周期RSIの極限値が15に設定され,4周期RSIが15を下回ると買入シグナルが生じます.策略は同時に,他の周期RSIの指標が対応する極限値を下回っているかどうかを検出し,そうであれば買入シグナルが生じます.

すべての5つのRSI指標がそれぞれの限界値を超えると,売り込み信号が生み出され,利益の結束が実現されます. このように,複数の周期指標の信号を集約することにより,エントリーの正確性を向上させることができます.

戦略的優位性

  1. 複数のRSI指標を利用してEntryの精度を向上させる

この戦略は,5つの異なる周期のRSI指標を同時に使用し,任意のRSIが限界値を下回ると買い信号を生成します.これは信号の信頼性を高め,単一の指標による誤信号を回避します.複数の指標の集約は,エントリーの正確性を向上させることができます.

  1. 異なる周期指標は,さまざまな市場状況に適応

1,2,3,4,5周期のRSI指標を使用すると,異なる周期の株式変動に対応できます.例えば,28周期RSIは長線取引に適しており,4周期RSIは短線取引に適しています.これは,複数の市場状況で戦略が正常に動作することを保証します.

  1. コード構造は明確で分かりやすい.

策略の変数命名とコード構造は非常に明確で,異なる指標と信号の計算流程は目に見える.これは,策略を容易に理解,修正,最適化することを可能にする.これは量化策略の非常に重要な利点である.

戦略リスク

  1. 単一市場は無効

この戦略は,主にオーバーバイオーバーセールシグナル生成に依存し,一方的な上昇または下降のトレンド状況でその効果は割引されます.これは,反転指標を使用する戦略の普遍的な問題です.

  1. パラメータを最適化するのは難しい

戦略には複数の指標とパラメータが含まれているため,パラメータ最適化には大きな困難が生じます.不合理なパラメータの組み合わせは,戦略の効果を大幅に低下させることがあります.これは最適化ツールを使用して最適なパラメータを見つける必要があります.

  1. 多空間の切替が頻繁に行われる

複数の周期指標を使用しているため,戦略の多空切替はより頻繁に起こり,取引コストと滑り場リスクが高くなります.

戦略最適化の方向性

  1. トレンド指数と組み合わせた

MAやBOLLなどのトレンド指標に加入し,一方的な状況下での割引を回避できます.例えば,トレンド指標も逆転に同意した場合にのみ入場してください.

  1. 減量する

RSIの指標を少なくして,パラメータの最適化を難しくする.実験では,2〜3の指標の組み合わせで良い結果が得られることが示されている.

  1. パラメータの最適化範囲

ステップ長最適化,ランダム最適化などの方法を使用して,各RSIパラメータの最適な範囲と組み合わせを探し,戦略のパフォーマンスを最大限に向上させる.

要約する

複数のRSI指標を集約する戦略は,複数の周期RSIの signalsをコンゴレーションすることによって,エントリーの正確性を向上させ,株式のタイミング取引を実現する.それは,複数の指標を使用する利点がありますが,一方的な動きの失敗,最適化の難しさなどの問題もあります.トレンド指標を追加し,指標の数を減らす,最適化パラメータなどの方法により,戦略のRobustnessをさらに向上させることができます.

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

//Noro
//2018

//@version=2
strategy(title = "Noro's Symphony v1.0", shorttitle = "Symphony 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 20)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
usersi1 = input(true, defval = true, title = "Use RSI 1")
rsiperiod1 = input(4, defval = 4, minval = 2, maxval = 100, title = "RSI 1 Period")
rsilimit1 = input(15, defval = 15, minval = 2, maxval = 50, title = "RSI 1 Limit")
usersi2 = input(true, defval = true, title = "Use RSI 2")
rsiperiod2 = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI 2 Period")
rsilimit2 = input(20, defval = 20, minval = 2, maxval = 50, title = "RSI 2 Limit")
usersi3 = input(true, defval = true, title = "Use RSI 3")
rsiperiod3 = input(14, defval = 14, minval = 2, maxval = 100, title = "RSI 3 Period")
rsilimit3 = input(25, defval = 25, minval = 2, maxval = 50, title = "RSI 3 Limit")
usersi4 = input(true, defval = true, title = "Use RSI 4")
rsiperiod4 = input(21, defval = 21, minval = 2, maxval = 100, title = "RSI 4 Period")
rsilimit4 = input(30, defval = 30, minval = 2, maxval = 50, title = "RSI 4 Limit")
usersi5 = input(true, defval = true, title = "Use RSI 5")
rsiperiod5 = input(28, defval = 28, minval = 2, maxval = 100, title = "RSI 5 Period")
rsilimit5 = input(35, defval = 35, minval = 2, maxval = 50, title = "RSI 5 Limit")
cf = input(false, defval = false, title = "Use color filter")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")

//RSI
rsi1 = rsi(close, rsiperiod1)
rsi2 = rsi(close, rsiperiod2)
rsi3 = rsi(close, rsiperiod3)
rsi4 = rsi(close, rsiperiod4)
rsi5 = rsi(close, rsiperiod5)

//Signals
up1 = rsi1 < rsilimit1 and usersi1  
up2 = rsi2 < rsilimit2 and usersi2
up3 = rsi3 < rsilimit3 and usersi3
up4 = rsi4 < rsilimit4 and usersi4
up5 = rsi5 < rsilimit5 and usersi5

up = up1 or up2 or up3 or up4 or up5
exit = rsi1 > rsilimit1 and rsi2 > rsilimit2 and rsi3 > rsilimit3 and rsi4 > rsilimit4 and rsi5 > rsilimit5
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Background
col = up ? lime : na
bgcolor(col, transp = 0)

//Trading
if up and (close < open or cf == false)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
 
if  exit
    strategy.close_all()