この戦略は,VWAP,MACD,RSIという3つの技術指標に基づいた定量的な取引戦略である.この戦略は,ボリューム重量平均価格 (VWAP),移動平均収束差異 (MACD),相対強度指数 (RSI) のシグナルを組み合わせて取引機会を特定する.リスク管理のための割合ベースの収益とストップ損失メカニズムを組み込み,資本活用を最適化するために戦略ポジションサイズを使用する.
基本的な論理は,3つの主要な指標の包括的な分析に基づいています.
購入条件は次のとおりです
販売条件は次のとおりです
この戦略は,VWAP,MACD,およびRSIという3つのクラシックな技術指標を組み合わせて比較的完全な取引システムを構築する.このデザインは,取引品質を改善するために複数の指標のクロス検証を通じて信号の信頼性とリスク管理を強調する.最適化が必要な側面はあるが,全体的なフレームワークは健全で,良好なスケーラビリティを提供しています.トレーダーは,異なる市場条件のバックテストを通じて戦略を検証し,ライブ実装の前に特定の要件に応じてパラメータを最適化することをお勧めします.
/*backtest start: 2024-10-27 00:00:00 end: 2024-11-26 00:00:00 period: 4h basePeriod: 4h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("pbs", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Input for take-profit and stop-loss takeProfitPercent = input.float(0.5, title="Take Profit (%)", step=0.1) / 100 stopLossPercent = input.float(0.25, title="Stop Loss (%)", step=0.1) / 100 macdFastLength = input.int(12, title="MACD Fast Length") macdSlowLength = input.int(26, title="MACD Slow Length") macdSignalLength = input.int(9, title="MACD Signal Length") rsiLength = input.int(14, title="RSI Length") rsiOverbought = input.int(70, title="RSI Overbought Level", step=1) rsiOversold = input.int(30, title="RSI Oversold Level", step=1) vwap = ta.vwap(close) [macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength) macdHistogram = macdLine - signalLine rsi = ta.rsi(close, rsiLength) plot(vwap, color=color.purple, linewidth=2, title="VWAP") hline(rsiOverbought, "Overbought", color=color.red, linestyle=hline.style_dotted) hline(rsiOversold, "Oversold", color=color.green, linestyle=hline.style_dotted) plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.orange, title="Signal Line") // Buy Condition longCondition = ta.crossover(close, vwap) and macdHistogram > 0 and rsi < rsiOverbought // Sell Condition shortCondition = ta.crossunder(close, vwap) and macdHistogram < 0 and rsi > rsiOversold // Execute trades based on conditions if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", limit=close * (1 + takeProfitPercent), stop=close * (1 - stopLossPercent)) if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", limit=close * (1 - takeProfitPercent), stop=close * (1 + stopLossPercent)) // Plot Buy/Sell Signals plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")