ボーアバンドRSIスイングトレード戦略


作成日: 2023-09-16 18:48:44 最終変更日: 2023-09-16 18:48:44
コピー: 2 クリック数: 487
1
フォロー
1236
フォロワー

概要

ボール帯のRSI振動トレード戦略は,ボール帯の指標と相対的に強い指数 (RSI) の指標を組み合わせたショートライン振動トレード戦略である.この戦略は,ボール帯の上下軌道間の価格の振動をキャプチャすることによって利益を得る.

原則

まず,この戦略は,ボール帯の指標を使用して価格変動の上下限を分析する.価格が上線に近づくと超買い,下線に近づくと超売りである.

第二に,RSI指標と組み合わせて,超買いと超売りの強さを判断する.RSI70以上は超買い,30未満は超売りである.

価格がボールの帯を下回り,RSIがオーバーセールを示しているときに,多めに;価格がボールの帯上回り,RSIがオーバーバイを示しているときに,空いてください.

利点

  • ボール帯指数は価格の変動範囲を正確に判定する.

  • RSIは盲目な空白を避ける

  • 価格回帰の特性を利用して,利益の確率が高くなる.

  • 頻繁に取引し,継続的な収益性を有する.

  • 異なる品種と時間周期に適用されます.

リスク

  • ボール帯のパラメータは正しく設定されず,鍵値の設定ができません.

  • RSIパラメータは不合理に設定され,偽信号を生成する.

  • 抵抗力が不足し,止損が発動する.

  • 高取引頻度によるスライドポイントコストを負担する.

  • 波動する市場では,トレンドを把握するのは難しい.

どう対処するか

  • ボール帯は実際の波動範囲に近いようにパラメータを最適化します.

  • RSIサイクルを調整して,ノイズをフィルターする.

  • モバイルストップは価格を追跡し,利回りの損失を減らす.

  • 滑り場の影響を減らすために,取引量の高い品種を選択してください.

  • 他の指標は,トレンドの方向を決定するのに役立ちます.

要約する

ボール帯RSI振動トレード戦略は,価格の範囲内の双方向の変動を効果的に捕捉することができる.パラメータ調整とリスク管理により,安定した収益を得ることができる.これは,短線量化トレード戦略として推奨される.

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

//@version=4
strategy("Swing trading strategy FOREX ", shorttitle="BB+RSI", overlay=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2022, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
// 
// 


///////////// RSI
RSIlength = input(6,title="RSI Period Length") 
RSIoverSold = input(defval = 65, title = "RSIoverSold", minval = 1, maxval = 100)
RSIoverBought = input(defval = 35, title = "RSIoverBought", minval = 1, maxval = 100)
price = close
vrsi = rsi(price, RSIlength)



///////////// Bollinger Bands
BBlength = input(200, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
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=color.aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=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] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)


///////////// RSI + Bollinger Bands Strategy
//for buy
cond1=crossover(vrsi, RSIoverSold)
cond2=crossover(source, BBlower) 
//for sell
cond3=crossunder(vrsi, RSIoverBought)
cond4=crossunder(source, BBupper)
if (not na(vrsi))

    if (cond1 and cond2 and time_cond)
        strategy.entry("RSI_BB_LONG", strategy.long, stop=BBlower, comment="LONG",alert_message = "long")
    else
        strategy.cancel(id="RSI_BB_LONG")
        
    if (cond3 and cond4 and time_cond)
        strategy.entry("RSI_BB_SHORT", strategy.short, stop=BBupper,  comment="SHORT",alert_message = "short")
        //strategy.close("RSI_BB_LONG")

    else
        strategy.cancel(id="RSI_BB_SHORT")
        
//strategy.exit("closelong", "RSI_BB_LONG" , profit = close * 0.01 / syminfo.mintick, loss = close * 0.01 / syminfo.mintick, alert_message = "closelong")
//strategy.exit("closeshort", "RSI_BB_SHORT" , profit = close * 0.01 / syminfo.mintick, loss = close * 0.01 / syminfo.mintick, alert_message = "closeshort")


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