VWAP ボラティリティ反転戦略 標準偏差チャネル上のロングおよびショートブレイクアウトシステム

VWAP SD SMA ATR RSI
作成日: 2025-02-20 09:33:31 最終変更日: 2025-02-20 09:33:31
コピー: 1 クリック数: 469
2
フォロー
319
フォロワー

VWAP ボラティリティ反転戦略 標準偏差チャネル上のロングおよびショートブレイクアウトシステム VWAP ボラティリティ反転戦略 標準偏差チャネル上のロングおよびショートブレイクアウトシステム

概要

この戦略は,VWAP (取引量重み平均価格) と標準差チャネルに基づく取引システムで,チャネル境界の価格の逆転形態を識別して取引を行う.この戦略は,動量と均等値の回帰の取引理念を組み合わせて,価格が重要な技術的位を越えたときに取引機会を捉える.

戦略原則

戦略の核心は,VWAPを価格の中心として使用し,20周期の標準差を利用して上下通路を構築することである.下線近くで多し,上線近くで空しをする機会を探すことである.具体的には:

  • 多条件:価格は下線で看板反転の形を作り,その後,前回の陽線高点を突破する
  • 空白条件: 上線で下向きの形を作り,その後,前陰線の低値を突破する
  • ストップ設定:VWAPと上線をターゲットに多量化,下線を空っぽにすることをターゲットに
  • 止損設定: 逆転陽線の低点で止損する多量,逆転陰線の高点で止損する空白

戦略的優位性

  1. トレンドフォローと反転取引の利点を組み合わせることで,トレンドの継続と反転の機会を捉えることができます.
  2. VWAPを中心の指標として使用することで,市場における実際の需要と供給をよりよく反映できます.
  3. 販売価格の変動により利益を得ることができる.
  4. 合理的な止損設定により,リスクが効果的に管理されます.
  5. 策略の論理が明確で,パラメータ設定がシンプルで,理解し実行しやすい.

戦略リスク

  1. 市場が激しく波動する時に頻繁にストップを起こす可能性
  2. 横断整理の段階では,偽信号が多すぎる可能性があります.
  3. VWAP計算の時間周期に敏感である
  4. 標準差チャネル幅は,すべての市場環境に適していない可能性があります.
  5. 重要なトレンドの機会を逃しているかもしれません.

戦略最適化の方向性

  1. 交差量フィルタを導入し,信号の質を向上させる
  2. 移動平均のシステムのようなトレンド確認指標を増やす
  3. 市場環境により標準差周期を動的に調整する
  4. 生産量増減の利回りの改善
  5. タイムフィルターを加え,不利なタイミングで取引を避ける
  6. 波動率指標の増やし,ポジション管理の最適化を検討

要約する

これは,VWAP,標準差チャネル,価格形態を組み合わせた完全な取引システムである.戦略は,重要な価格で反転シグナルを探して取引を行い,分期ストップと合理的なストップを適用してリスクを管理する.一定の限界があるものの,推奨された最適化の方向によって戦略の安定性と収益性をさらに向上させることができる.戦略は,波動性の高い市場での適用に適しており,中期トレーダーにとって考慮すべき取引システムである.

ストラテジーソースコード
/*backtest
start: 2025-01-20 00:00:00
end: 2025-02-19 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6  
strategy("VRS Strategy", overlay=true)  

// Calculate VWAP  
vwapValue = ta.vwap(close)  

// Calculate standard deviation for the bands  
stdDev = ta.stdev(close, 20) // 20-period standard deviation for bands  
upperBand = vwapValue + stdDev  
lowerBand = vwapValue - stdDev  

// Plot VWAP and its bands  
plot(vwapValue, color=color.blue, title="VWAP", linewidth=2)  
plot(upperBand, color=color.new(color.green, 0), title="Upper Band", linewidth=2)  
plot(lowerBand, color=color.new(color.red, 0), title="Lower Band", linewidth=2)  

// Signal Conditions  
var float previousGreenCandleHigh = na  
var float previousGreenCandleLow = na  
var float previousRedCandleLow = na  

// Detect bearish candle close below lower band  
bearishCloseBelowLower = close[1] < lowerBand and close[1] < open[1]  

// Detect bullish reversal candle after a bearish close below lower band  
bullishCandle = close > open and low < lowerBand // Ensure it's near the lower band  
candleReversalCondition = bearishCloseBelowLower and bullishCandle  

if (candleReversalCondition)  
    previousGreenCandleHigh := high[1]  // Capture the high of the previous green candle  
    previousGreenCandleLow := low[1]     // Capture the low of the previous green candle  
    previousRedCandleLow := na            // Reset previous red candle low  

// Buy entry condition: next candle breaks the high of the previous green candle  
buyEntryCondition = not na(previousGreenCandleHigh) and close > previousGreenCandleHigh  

if (buyEntryCondition)  
    // Set stop loss below the previous green candle  
    stopLoss = previousGreenCandleLow   
    risk = close - stopLoss // Calculate risk for position sizing  

    // Target Levels  
    target1 = vwapValue // Target 1 is at VWAP  
    target2 = upperBand  // Target 2 is at the upper band  

    // Ensure we only enter the trade near the lower band  
    if (close < lowerBand)  
        strategy.entry("Buy", strategy.long)  
        
        // Set exit conditions based on targets  
        strategy.exit("Take Profit 1", from_entry="Buy", limit=target1)  
        strategy.exit("Take Profit 2", from_entry="Buy", limit=target2)  
        strategy.exit("Stop Loss", from_entry="Buy", stop=stopLoss)  

// Sell signal condition: Wait for a bearish candle near the upper band  
bearishCandle = close < open and high > upperBand // A bearish candle should be formed near the upper band  
sellSignalCondition = bearishCandle  

if (sellSignalCondition)  
    previousRedCandleLow := low[1] // Capture the low of the current bearish candle  

    // Sell entry condition: next candle breaks the low of the previous bearish candle  
    sellEntryCondition = not na(previousRedCandleLow) and close < previousRedCandleLow  

    if (sellEntryCondition)  
        // Set stop loss above the previous bearish candle  
        stopLossSell = previousRedCandleLow + (high[1] - previousRedCandleLow) // Set stop loss above the bearish candle  
        targetSell = lowerBand // Target for sell is at the lower band  

        // Ensure we only enter the trade near the upper band  
        if (close > upperBand)  
            strategy.entry("Sell", strategy.short)  
            
            // Set exit conditions for sell  
            strategy.exit("Take Profit Sell", from_entry="Sell", limit=targetSell)  
            strategy.exit("Stop Loss Sell", from_entry="Sell", stop=stopLossSell)  

// Reset previous values when a trade occurs  
if (strategy.position_size > 0)  
    previousGreenCandleHigh := na  
    previousGreenCandleLow := na  
    previousRedCandleLow := na