この戦略は,VWAP (Volume Weighted Average Price),RSI (Relative Strength Index),Bollinger Bandsという3つの技術指標を組み合わせ,ダイナミックなテイク・プロフィートとストップ・ロスのシンプルで使いやすい定量的な取引戦略を実装する.この戦略の主なアイデアは,RSIとボリンジャー・バンドを用い,価格がオーバー・バイト・オーバー・セール範囲内にあるかどうかを判断し,その結果取引信号を決定する.取引信号が決定されると,戦略はリスクを制御し利益をロックするためにATR (Average True Range) 指標に基づいてダイナミックなテイク・プロフィートとストップ・ロスのレベルを計算する.
この戦略は,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")