
Chiến lược này là một hệ thống giao dịch dựa trên VWAP (transaction weighted average price) và kênh chênh lệch chuẩn, giao dịch bằng cách xác định mô hình đảo ngược của giá ở biên giới kênh. Chiến lược này kết hợp các khái niệm giao dịch về động lực và giá trị trung bình để nắm bắt cơ hội giao dịch khi giá vượt qua các điểm kỹ thuật quan trọng.
Cốt lõi của chiến lược là xây dựng một kênh lên xuống bằng cách sử dụng chênh lệch tiêu chuẩn 20 chu kỳ với VWAP làm trung tâm của giá. Tìm kiếm cơ hội làm nhiều gần đường ray dưới, tìm kiếm cơ hội làm trống gần đường ray trên. Cụ thể:
Đây là một hệ thống giao dịch hoàn chỉnh kết hợp VWAP, kênh chênh lệch tiêu chuẩn và hình thức giá. Chiến lược giao dịch bằng cách tìm kiếm tín hiệu đảo ngược tại các mức giá quan trọng và quản lý rủi ro bằng cách sử dụng các lệnh dừng và dừng hợp lý. Mặc dù có một số hạn chế, nhưng bằng hướng tối ưu hóa được đề xuất, bạn có thể nâng cao hơn nữa sự ổn định và lợi nhuận của chiến lược.
/*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