Bollinger Bands と RSI トレーディング 戦略

作者: リン・ハーンチャオチャン, 日付: 2024-03-28 18:11:08
タグ:

img

概要

この戦略は,ボリンジャーバンドと相対強度指数 (RSI) を組み合わせて買い売りシグナルを生成する.価格が下のボリンジャーバンドを下回り,RSIが指定された下位レベルを下回ると買い買いシグナルが起動する.価格が上部のボリンジャーバンドを下回り,RSIが指定された上位レベルを下回ると売れシグナルが起動する.さらに,この戦略は,ピラミッドポジション管理に有利な頻繁な取引を避けるために購入間隔パラメータを導入する.

戦略の原則

  1. RSI指標を計算し,過剰購入と過剰販売を測定する.
  2. 価格ブレイクを決めるために上下ボリンジャー帯を計算します.
  3. RSIとボリンジャー・バンドに基づいて購入・売却信号をセットします.
    • 閉じる価格がボリンジャー帯の下位を下回り,RSIが指定された下位値を下回ると買い信号が生成されます.
    • 閉店価格がボリンジャーバンド上位,RSIが指定された上位値を超えるとセールシグナルが生成されます.
  4. 連続購入の頻度を制限する買い間隔パラメータを導入し,ピラミッドポジションの管理を容易にする.

戦略 の 利点

  1. 双重確認: この戦略は,ボリンジャーバンドとRSIインジケーターの両方を使用し,より信頼性の高いトレンド逆転検出と偽信号の減少を提供します.
  2. ピラミッドのポジション構築: 購入間隔パラメータを設定することで,戦略は傾向が確立されるにつれて徐々にポジションを追加し,リスクを制御し収益を最適化するのに役立ちます.
  3. 柔軟なパラメータ:ユーザーは柔軟にRSI上位と下位を設定し,市場特性と個人的な好みに応じて間隔パラメータを購入することができます.

戦略リスク

  1. トレンド継続リスク: 価格がボリンジャー帯を突破した後に短い引き下げを経験した場合,戦略は早期にポジションを閉鎖し,次のトレンドを見逃す可能性があります.
  2. パラメータ最適化リスク:最適なパラメータ組み合わせは,異なる市場環境で大きく異なる可能性があり,戦略は過剰な適応リスクに直面する可能性があります.
  3. ブラック・スワン・イベント: 戦略は歴史的なデータに基づいて構築されており,極端な市場状況に効果的に対応できない可能性があります.

戦略の最適化方向

  1. ストップ・ロストとテイク・プロフィートを導入する: トレイリング・ストップまたは固定ストップ・ロストとテイク・プロフィートのロジックを戦略に追加し,個々の取引リスクをさらに制御する.
  2. ダイナミックパラメータ最適化: 戦略の適応性を向上させるために,RSI上位および下位レベルなどのパラメータをダイナミックに調整し,市場の状況の変化に基づいて購入間隔を調整する.
  3. 他の技術指標と組み合わせる: 戦略の安定性を高めるため,他のトレンドまたはオシレーター指標を補助判断として導入する.

概要

この戦略は,2つのクラシックな技術指標であるボリンジャーバンドとRSIを巧みに組み合わせています.トレンド機会を把握するために,ダブル確認メカニズムを使用しています.同時に,この戦略は収益を最適化しながらリスクを制御するためのピラミッドポジション構築方法を導入しています.しかし,この戦略はトレンド継続リスク,パラメータ最適化リスク,ブラックスワンイベントリスクなどのリスクにも直面しています.将来,ストップ・ロストとテイク・プロフィート,ダイナミックパラメータ最適化,および他の指標との組み合わせによって戦略をさらに最適化することができます.全体として,これはさらなる探求と実践に値する明確な論理的に厳格な定量的な取引戦略です.


/*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!")

もっと