RSIとボリンジャーバンドの定量戦略


作成日: 2024-01-24 14:56:02 最終変更日: 2024-01-24 14:56:02
コピー: 3 クリック数: 637
1
フォロー
1617
フォロワー

RSIとボリンジャーバンドの定量戦略

概要

この戦略は,主に相対的に強い指標 ((RSI) とブリン帯の取引信号判断を活用しています.具体的には,RSIの低い値がブリン帯の下線交差時に多し,RSIの高い値がブリン帯上線交差時に空しです.

戦略原則

この戦略は,まず,RSIとブリン帯を計算する. RSIは,取引品の相対的な強さを反映し,RSIが超売区 (デフォルト30) よりも低くなると,取引品が超売区に位置するので,購入する. ブリン帯は,上線,中線,下線を構成し,価格の波動範囲をよく反映する. ブリン帯は,下線近くで購入し,上線近くで販売し,比較的に安定したシグナルを得ることができる. この戦略は,RSIとブリン帯を組み合わせて取引シグナルを判断し,RSIが超売区から上線まで上昇すると,購入シグナルを発生させ,価格がブリン帯の下線から上線まで上昇すると,購入シグナルを発生させる.

戦略的優位性

  1. RSIとブリン帯を組み合わせて,信号判断の精度を高めます.
  2. RSIは部分的なノイズ信号をフィルターしています.
  3. ブリン帯は,現在の市場波動の大幅な範囲を反映し,信号はより信頼性があります.
  4. 取引戦略は厳格で,無効取引の発生を防ぎます.

戦略リスク

  1. ブリン帯のパラメータの設定が不適切である場合,取引信号が不正確になる可能性があります.
  2. RSI 超買超売区のパラメータの設定が不適切であることも,信号判断に影響を与える
  3. 戦略が厳格で,取引の機会を逃す可能性もある.

リスク対策:

  1. ブリン帯のパラメータとRSIのパラメータを最適化して最適なパラメータの組み合わせを見つける
  2. 適正な緩和策の取引条件,より多くの機会を得るために無効取引の一定量を追加する

戦略最適化の方向性

  1. RSIパラメータとブリン帯のパラメータをテストして最適化し,最適なパラメータを見つける
  2. 取引リスクをコントロールするためのストップ・ロスの強化
  3. MACDなどの他の技術指標を信号検証に追加することを検討する
  4. 異なる品種と時間周期のパラメータ最適化の効果をテストする

要約する

この戦略は,全体的により堅牢であり,RSI指標とブリン帯のストップを効果的に組み合わせている.パラメータのテストと最適化により,戦略の効果をさらに向上させることができる.しかしながら,より厳格な戦略がもたらす可能性のある信号損失のリスクにも注意する必要があります.全体的に,この戦略は,信頼性の高い量化取引戦略です.

ストラテジーソースコード
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BB + RSI 20MIN,", shorttitle="BBRSI 20MIN", overlay=true )
     
     // Strategy Tester Start Time
sYear = input(2019, title = "Start Year")
sMonth = input(04, title = "Start Month", minval = 01, maxval = 12)
sDay = input(01, title = "Start Day", minval = 01, maxval = 31)
sHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
sMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = true


///////////// RSI
RSIlength = input(9,title="RSI Period Length") 
RSIoverSold = input(30, minval=1,title="RSIL")
RSIoverBought = input(69, minval=1,title="RSIh")
price = open
vrsi = rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input(60, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50,title="Bb")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = crossover(source, BBlower)
sellEntry = crossunder(source, BBupper)
plot(BBbasis, color=aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=silver,title="Bollinger Bands Lower Line")
fill(p1, p2)


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)


///////////// RSI + Bollinger Bands Strategy
if (not na(vrsi))

    if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower))
        strategy.entry("RSI_BB_L", strategy.long and startTime, stop=BBlower,  comment="RSI_BB_L")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper))
        strategy.entry("RSI_BB_S", strategy.short and startTime, stop=BBupper,comment="RSI_BB_S")
    else
        strategy.cancel(id="RSI_BB_S")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)