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


作成日: 2024-03-28 18:11:08 最終変更日: 2024-03-28 18:11:08
コピー: 0 クリック数: 665
1
フォロー
1617
フォロワー

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

概要

この戦略は,ブリン帯と比較的強い指標 ((RSI) を組み合わせて,買入シグナルを判断する.価格がブリン帯を突破して下線に下り,RSIが設定された下限を下回ったときに買入シグナルを生成する.価格がブリン帯を突破して上線に上線し,RSIが設定された上限を超えたときに売出シグナルを生成する.また,この戦略は,買い入りの間隔パラメータを導入し,頻繁に取引を避け,ピラミッド型のポジション管理を実現するのに役立ちます.

戦略原則

  1. RSIは,価格の過剰買いと過剰売りを測定する指標である.
  2. 価格の突破を判断するために,ブリン帯の上下を計算する.
  3. RSIとブリン帯の組み合わせで 買い/売却のシグナルが設定されます.
    • 閉盘価格がブリン帯下位線を下回り,RSIが設定された下限レベルを下回ったとき,買取シグナルが生成されます.
    • 閉盘価格がブリン帯線上より高く,RSIが設定された上限レベルより高くなる時,セールシグナルが生成されます.
  4. 連続購入の頻度を制限する買入間隔パラメータを導入し,ピラミッド型のポジション管理を実現する.

戦略的優位性

  1. 双重確認:戦略はブリン帯とRSIの両方の指標を同時に使用することで,トレンドのターニングポイントをより確実に捉え,偽信号のリスクを軽減します.
  2. ピラミッド式ポジション構築: 買入間隔のパラメータを設定することで,戦略はトレンドが確立された後に徐々にポジションを増やすことができ,リスクを制御し,利益を最適化するのに役立ちます.
  3. パラメータの柔軟性:RSIの上下限や買取間隔などのパラメータを,市場の特徴や個人の好みに合わせて柔軟に設定できます.

戦略リスク

  1. トレンド再開リスク: ブリン帯を突破した後に価格が一時的に引き下がった場合,戦略が早急に平定し,後続のトレンドを逃す可能性があります.
  2. パラメータ最適化リスク:異なる市場環境において,最適なパラメータの組み合わせは大きく異なる可能性があり,戦略は過適合リスクに直面する可能性がある.
  3. ブラック・スワン事件: 戦略は歴史的なデータに基づいて作られており,極端な状況に対して効果的でない可能性があります.

戦略最適化の方向性

  1. ストップ・ストップの導入:単一取引のリスクをさらに制御するために,戦略に移動ストップまたは固定ストップ・ストップの論理を追加する.
  2. ダイナミックパラメータ最適化:市場の状況の変化に応じて,RSIの上下限と買取間隔などのパラメータを動的に調整し,戦略の適応性を向上させる.
  3. 他の技術指標と組み合わせる: 戦略の安定性を高めるために,補助判断として他のトレンドクラスまたは振動クラスの指標を導入する.

要約する

この戦略は,ブルイン帯とRSIの2つのクラシックな技術指標を巧妙に組み合わせて,二重確認メカニズムでトレンドの機会を捕捉します. 同時に,戦略は,リスクを制御しながら収益を最適化しようとするピラミッド型のポジション構築方法を導入します. しかし,戦略には,トレンド継続リスク,パラメータ最適化リスク,ブラック天候のリスクがあります.

ストラテジーソースコード
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
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/

//@version=4
strategy(overlay=true, shorttitle="cakes'Strategy For RSI", default_qty_type = strategy.percent_of_equity, initial_capital = 100000, default_qty_value = 100, pyramiding = 0, title="cakes'Strategy", currency = 'USD')

////////// ** Inputs ** //////////

// Stoploss and Profits Inputs

v1 = input(true, title="GoTradePlz")

////////// ** Indicators ** //////////

// RSI

len = 14
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)



//  Bollinger Bands

length1 = 20
src1 = close
mult1 = 1.0
basis1 = sma(src1, length1)
dev1 = mult1 * stdev(src1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1



////////// ** Triggers and Guards ** //////////


// 输入
RSILowerLevel1 = input(30, title="RSI 下限水平")
RSIUpperLevel1 = input(70, title="RSI 上限水平")

// 购买间隔
buyInterval = input(5, title="购买间隔(K线数量)")

// 跟踪购买间隔
var int lastBuyBar = na
lastBuyBar := na(lastBuyBar[1]) ? bar_index : lastBuyBar

// 策略信号
BBBuyTrigger1 = close < lower1
BBSellTrigger1 = close > upper1
rsiBuyGuard1 = rsi < RSILowerLevel1
rsiSellGuard1 = rsi > RSIUpperLevel1

Buy_1 = BBBuyTrigger1 and rsiBuyGuard1 and (bar_index - lastBuyBar) >= buyInterval
Sell_1 = BBSellTrigger1 and rsiSellGuard1

if (Buy_1)
    lastBuyBar := bar_index

strategy.entry("Long", strategy.long, when = Buy_1, alert_message = "Buy Signal!")
strategy.close("Long", when = Sell_1, alert_message = "Sell Signal!")