RSI ボリンジャー・バンド取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-18 22:13:18
タグ:

全英語コンテンツ

概要

この戦略は,RSIインジケーターを使用してオーバーバイト/オーバーセール条件を決定し,ボリンジャーバンドインジケーターと組み合わせて価格振動範囲を表示することで,取引信号を識別する.RSIがオーバーバイトまたはオーバーセールレベルを示しているときに,価格がボリンジャーバンド上または下帯に近づいているか触れているときに,購入および販売信号を生成する.戦略は動的に機会を探すためにトレンド分析と振動判断を合成する.

戦略の論理

この戦略は主に2つの指標に基づいています.

  1. RSI インディケーター 過剰購入/過剰販売

RSIを計算し,前もって設定されたパラメータに従って,過買い値40と過売値45の値値で過買い値や過売値の区画に入るかどうかを決定します.

  1. 価格振動範囲を示すボリンジャー帯

期間中のボリンジャー帯を計算し,上位帯と下位帯を使用して価格チャネルを形成し,価格振動の範囲を記述します.

上記に基づいて,取引規則は以下のとおりです.

RSIが45を超えて 過売りゾーンに入り,価格がボリンジャー下帯を超えると,買い信号が生成されます. RSIが40を下回り 超買い区間に突入し 価格がボリンジャー上位帯を下回ると 売り信号が生成されます

利点分析

RSIとボリンジャー帯を組み合わせることで得られる利点には以下の通りがあります.

  1. RSIは過買い/過売りレベルを特定し,ボリンジャー帯は価格傾向の方向性を決定し,互いを補完します.

  2. ボリンジャー・バンドはリスク管理のためのストップ・ロスのレベルとして機能します

  3. シンプルなパラメータにより 簡単に実装し バックテストできます

  4. RSI パラメータは最適化され,ベストな過剰購入/過剰販売範囲を決定できます.

  5. 異なる価格インプットを使用して様々な市場環境に適応できます.

リスク と 解決策

この戦略にはいくつかのリスクもあります:

  1. 過剰なボリンジャー帯幅が 悪いストップ・ロスの期待につながります

    • ストップ・ロスの範囲を最適化するためにボリンガー・バンドの幅パラメータを調整します
  2. RSI パラメータの設定が正しくないため,過剰購入/過剰販売レベル判断が間違っている.

    • RSI パラメータをバックテストで最適化し,最適な取引範囲を決定する.
  3. 傾向の逆転点を正確に特定できないため 信号が欠落する危険性があります

    • 傾向逆転を早期に捉えるため,ボリンジャーバンドの期間パラメータを短縮する.
  4. 損失を効果的に制御できないため,ストップロスのリスクは,重要な価格変動によって影響を受ける.

    • ストップ・ロスの方法を最適化するために,移動または動的ストップ・ロスを追加します.

改善 の 方向

戦略を最適化する方法:

  1. 理想的な過買い/過売範囲を決定するために RSI パラメータを最適化します.

  2. ストップ・ロスの範囲を制御するためにボリンジャー・バンドの幅パラメータを最適化します.

  3. 傾向の逆転を特定し,見逃した信号を避けるために他の指標を追加します.

  4. 取引のタイミングを決定するために機械学習モデルを適用する.

  5. 異なる市場環境に基づいて異なるパラメータセットを使用します.

  6. ダイナミックストップ・ロスのメカニズムを追加します

  7. 自動パラメータ最適化プログラムを開発する

結論

RSIとボリンジャーバンドを組み合わせることで,この戦略は比較的堅牢な取引決定を形成する.論理は単純で明確で,リスク管理には良いが,最適化にも余地がある.パラメータ最適化,ストップ損失最適化,アルゴリズム組み込みなどを通じて戦略をさらに強化することで,複雑な市場環境により適応できるようにすることができる.戦略は,取引システムを構築するためのアイデアを提供し,さらなる研究と適用に値する.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 2h
basePeriod: 15m
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/
// © Mdemoio


//@version=4
strategy("Madri", shorttitle="Madri", overlay=true)


// Version 1.1


///////////// RSI
RSIlength = input(2,title="A") 
RSIoverSold = 45
RSIoverBought = 40
price = close
vrsi = rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input(150, minval=1,title="B")
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)


///////////// 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, stop=BBlower,  comment="Buy")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper))
        strategy.entry("RSI_BB_S", strategy.short, stop=BBupper, comment="Sell")
    else
        strategy.cancel(id="RSI_BB_S")

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

もっと