ボリンジャーバンドとRSIをベースにした上昇傾向のスウィング・トレーディング戦略

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

img

概要

この戦略は,上昇傾向における上昇傾向のスウィング取引のために,ボリンジャーバンドと相対強度指数 (RSI) という2つの技術指標を使用する.戦略の論理はシンプルでも効果的です.価格がボリンジャーバンドの下位を突破し,RSIが35を下回るとロングポジションを開き,RSIが69を超えるとポジションを閉じます.利益とストップ損失レベルも設定されています.

戦略の原則

  1. RSIを計算する: 相対移動平均 (RMA) を用いて,価格上昇と減少の平均大きさを別々に計算し,その後上昇の大きさを総大きさに割って RSI を得ます. RSI は,期間中の価格変動の強さを反映します.

  2. ボリンジャー帯を計算する: 価格の中間線を計算するためにシンプル・ムービング・アベア (SMA) を使用し,上下帯を得るために標準偏差を足して減算する. ボリンジャー帯は価格変動の範囲を動的に反映することができる.

  3. オープン・ロング:価格がボリンジャー・バンドの下位を突破し,RSIが35未満になると,過売りとみなされ,ロングポジションが開かれます.この2つの条件は,上向きの逆転のタイミングを把握することができます.

  4. ロングを閉じる:RSIが69を超えると,オーバー買いとみなされ,ロングポジションは利益の確保のために閉じる.

  5. 取利益とストップ損失:ポジションを開設した後,取利益とストップ損失の価格は,ユーザーによって定義されたパーセントに基づいて計算されます.取利益またはストップ損失価格に達するとポジションは閉鎖されます.これは,各取引のリスクと収益を制御するのに役立ちます.

利点分析

  1. ボリンジャー・バンドは,価格変動の範囲を客観的に反映し,固定しきい値に制限されないまま価格動向に合わせて調整することができます.

  2. RSIは,直感的に上昇力と下落力のバランスを反映し,比較的客観的である.過買いと過売りの状況を決定するためにしばしば使用されます.

  3. アップトレンドで使用すると,スウィング取引に適しています.低ボリンジャーバンドと低RSIの価格リバウンドと,高RSIのポジションを間に合って閉じることで,短期市場の動きを効果的に把握できます.

  4. 利得とストップロスの設定により,戦略のリスクは制御可能になります.投資家はリスクの好みに応じてパラメータを柔軟に設定できます.

  5. 戦略の論理とコードは比較的シンプルで,理解し実行しやすいし,バックテスト結果は比較的安定している.

リスク分析

  1. 不安定な市場では,ボリンジャー帯とRSIが取引信号を過剰に生成し,取引頻度が高まり,取引コストが高まる可能性があります.

  2. RSIのような単一の指標は,短期的な価格変動に容易に影響され,誤解を招くシグナルを生む可能性があります.したがって,RSIシグナルは価格動向と併用して分析するのが最善です.

  3. ボリンジャー・バンドとRSIのパラメータの選択は戦略のパフォーマンスに大きな影響を与え,異なる市場やインstrumentは異なるパラメータを必要とする場合があります.ユーザーは特定の状況に基づいて適切な調整を行う必要があります.

  4. 予期せぬ出来事や異常な市場状況が発生した場合,ボリンジャー帯とRSIは効果がなくなり得る.他のリスク管理対策がない場合,戦略に重大な引き下げをもたらす可能性があります.

オプティマイゼーションの方向性

  1. フィルタリングのために移動平均値などの他の技術指標を導入することを検討します.例えば,シグナルの信頼性を向上させるために移動平均値が上昇傾向にある場合にのみポジションを開きます.

  2. RSI の上位および下位スロージュ,ボリンジャー帯のパラメータ,などを最適化して,各ツールおよび時間枠に対して最も優れたパラメータの組み合わせを見つけます.

  3. バックテストに基づいて,前向きのテストと適切なシミュレーション取引を行い,リアル取引前に戦略の有効性と安定性を完全に検証します.

  4. 戦略の引き下げをさらに制御し,ポジションサイズ化,ダイナミック・テイク・プロフィート,ストップ・ロース,その他の方法によりリスク調整収益を改善する.

  5. 投資ポートフォリオに戦略を組み込み,ポートフォリオの安定性を向上させるために,単独で使うのではなく,他のヘッジ戦略と併用して使う.

概要

この記事では,2つの技術指標であるボリンジャーバンドとRSIをベースとしたブイッシュ・スウィング・トレーディング戦略を紹介する.この戦略は上昇傾向における短期間の市場動きを把握するのに適しており,その論理と実装は比較的シンプルである.価格はボリンジャーバンドとRSIの低値を下回るとロングポジションを開き,RSIが高くなったときロングポジションを閉じて,セットを利益とストップ損失レベルに設定する.この戦略の利点は,価格変動の範囲とブイッシュ・ベアシストのバランスを客観的に反映することができ,リスクは比較的制御可能である.しかし,実践で使用する際には,取引頻度を制御し,より多くの指標を組み合わせてパラメータをフィルター化し,最適化してポジションを管理する必要がある.さらに,投資家は異常な市場状況やリスク管理の手段として失敗する可能性があります.他の指標を導入することで,投資家の利益と損失をフィルター化し,全体的な安定性,投資戦略の特徴をさらに改善し,投資家の利益と損失を補完することができます.しかし,投資戦略は,他の方法により,投資家の利益と損失を調整し,


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
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))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(69, "Upper Band", color=#C0C0C0)
band0 = hline(31, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)


Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)

long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

entry_long = rsi < 35.58 and src < lower
exit_long = rsi > 69
 
plotshape(entry_long, style=shape.labelup, color=color.green,  location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red,  location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")

strategy.entry("Long",true,when=entry_long)    
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)


もっと