VWAP と RSI のダイナミック ボリンジャー バンド ストップ プロフィットとストップ ロス戦略

VWAP RSI BB ATR
作成日: 2024-06-14 15:18:39 最終変更日: 2024-06-14 15:18:39
コピー: 1 クリック数: 888
1
フォロー
1617
フォロワー

VWAP と RSI のダイナミック ボリンジャー バンド ストップ プロフィットとストップ ロス戦略

概要

この戦略は,VWAP ((取引量重み平均価格),RSI ((相対的に強い指数) とブリン帯の3つの技術指標を組み合わせて,動的ストップ・ロスを使用して,簡単な使いやすい量化取引戦略を実現する.戦略の主な考えは,VWAP指標を使用して,過去の一段の価格の動きを判断し,同時にRSI指標とブリン帯指標を組み合わせて,価格が超買または超売り領域にあるかどうかを判断して,取引シグナルを決定することです.取引シグナルが決定されたら,戦略は,リスクを制御し,利益をロックするために,ATR (平均真波幅) 指標に基づいて動的ストップ・ロスの価格を計算します.

戦略原則

  1. VWAP,RSI,ブリン3つの技術指標の値を計算する.
  2. 過去15K線の閉盤価格とVWAPの関係性を判断し,価格動向が上昇,下降,または震動であるかを決定する.
  3. 価格がブリン帯の下線以下で,RSIが45未満で,VWAP信号が下線を示している場合は,多信号を生成する.価格がブリン帯上線以上で,RSIが55以上ので,VWAP信号が上線を示している場合は,空信号を生成する.
  4. 取引シグナルが決定されると,ストップとストップ・ロスの価格をATR指数に基づいて計算し,ストップとストップ・ロスの比率は1.5:1である.
  5. 複数頭ポジションを保有している場合,RSIが90より大きいときは,戦略は複数頭ポジションを平らげます.空頭ポジションを保有している場合,RSIが10より小さいときは,戦略は空頭ポジションを平らげます.

戦略的優位性

  1. 複数の技術指標を組み合わせることで,取引信号の信頼性が向上した.
  2. ダイナミックストップ・ストップ・ロスは,リスクを効果的に管理し,利益をロックします.
  3. コード構造は明確で,理解し,最適化することが容易です.
  4. トレンド市場や振動市場を含む様々な市場環境に適用されます.

戦略リスク

  1. 市場が波動的に動いている時,頻繁に取引することで高額な取引費用がかかる可能性があります.
  2. 市場が突発的な出来事や不合理な行動に遭遇した場合,戦略は間違った取引信号を生成する可能性があります.
  3. 戦略のパラメータ設定は,戦略の有効性を保証するために,異なる市場環境に応じて調整する必要があるかもしれません.

戦略最適化の方向性

  1. VWAP,RSI,ブリン帯のパラメータ設定を,異なる市場環境と取引品種に対応するように調整することができます.
  2. 取引信号の信頼性をさらに高めるために,MACD,KDJなどの他の技術指標を導入することができます.
  3. リスク管理と利潤のロック化を改善するために,移動停止または利潤保護停止などの計算方法を最適化できます.
  4. 戦略の総合的なパフォーマンスを向上させるために,経済データや政策の変化などの基本的分析を組み合わせることができます.

要約する

この戦略は,VWAP,RSI,ブリンベルトの3つの技術指標を組み合わせて,シンプルで使いやすい量化取引戦略を実現している.戦略は,ダイナミックなストップ・ストップ・ロスを採用し,リスクを効果的に制御し,利益をロックすることができます.戦略にはいくつかの潜在的リスクがあるにもかかわらず,合理的なパラメータ設定と継続的な最適化により,この戦略は,実際の取引で良い結果が得られると信じられています.

ストラテジーソースコード
/*backtest
start: 2024-06-06 00:00:00
end: 2024-06-13 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("VWAP and RSI Strategy", overlay=true)

// VWAP calculation
vwap = ta.vwap(close)

// RSI calculation
rsi_length = 16
rsi = ta.rsi(close, rsi_length)

// Bollinger Bands calculation
bb_length = 14
bb_std = 2.0
[bb_middle, bb_upper, bb_lower] = ta.bb(close, bb_length, bb_std)

// Variables for VWAP signal calculation
backcandles = 15
float vwapsignal = na

// Function to check if last 15 candles are above or below VWAP
calc_vwapsignal(backcandles) =>
    upt = true
    dnt = true
    for i = 0 to backcandles - 1
        if close[i] < vwap[i]
            upt := false
        if close[i] > vwap[i]
            dnt := false
    if upt and dnt
        3
    else if upt
        2
    else if dnt
        1
    else
        0

// Calculate VWAP signal for each bar
vwapsignal := calc_vwapsignal(backcandles)

// Calculate total signal
totalsignal = 0
if vwapsignal == 2 and close <= bb_lower and rsi < 45
    totalsignal := 2
else if vwapsignal == 1 and close >= bb_upper and rsi > 55
    totalsignal := 1



// Define strategy entry and exit conditions
slatr = 1.2 * ta.atr(7)
TPSLRatio = 1.5

if (totalsignal == 2 and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long, stop=close - slatr, limit=close + slatr * TPSLRatio)

if (totalsignal == 1 and strategy.opentrades == 0)
    strategy.entry("Short", strategy.short, stop=close + slatr, limit=close - slatr * TPSLRatio)

// Additional exit conditions based on RSI
if (strategy.opentrades > 0)
    if (strategy.position_size > 0 and rsi >= 90)
        strategy.close("Long")
    if (strategy.position_size < 0 and rsi <= 10)
        strategy.close("Short")