
Chiến lược này kết hợp VWAP (giá trung bình có trọng lượng giao dịch) và chỉ số xu hướng siêu. Để đánh giá tín hiệu mua và bán bằng cách so sánh vị trí tương đối của giá với VWAP và hướng của chỉ số xu hướng siêu. Khi giá vượt qua VWAP và xu hướng siêu tích cực, tạo ra tín hiệu mua; Khi giá vượt qua VWAP và xu hướng siêu âm, tạo ra tín hiệu bán.
Chiến lược mua và bán VWAP và siêu xu hướng tìm cách nắm bắt toàn diện xu hướng thị trường và các điểm chuyển đổi tiềm năng bằng cách kết hợp hai loại chỉ số khác nhau. Logic của chiến lược rõ ràng, dễ thực hiện và tối ưu hóa. Tuy nhiên, hiệu suất của chiến lược này phụ thuộc vào lựa chọn tham số và thiếu các biện pháp quản lý rủi ro. Trong ứng dụng thực tế, cần tối ưu hóa và hoàn thiện hơn nữa để phù hợp với môi trường thị trường và nhu cầu giao dịch khác nhau.
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="VWAP and Super Trend Buy/Sell Strategy", shorttitle="VWAPST", overlay=true)
//===== VWAP =====
showVWAP = input.bool(title="Show VWAP", defval=true, group="VWAP")
VWAPSource = input.source(title="VWAP Source", defval=hl2, group="VWAP")
VWAPrice = ta.vwap(VWAPSource)
plot(showVWAP ? VWAPrice : na, color=color.teal, title="VWAP", linewidth=2)
//===== Super Trend =====
showST = input.bool(true, "Show SuperTrend Indicator", group="Super Trend")
Period = input.int(title="ATR Period", defval=10, group="Super Trend")
Multiplier = input.float(title="ATR Multiplier", defval=2.0, group="Super Trend")
// Super Trend ATR
Up = hl2 - (Multiplier * ta.atr(Period))
Dn = hl2 + (Multiplier * ta.atr(Period))
var float TUp = na
var float TDown = na
TUp := na(TUp[1]) ? Up : close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := na(TDown[1]) ? Dn : close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
var int Trend = na
Trend := na(Trend[1]) ? 1 : close > TDown[1] ? 1 : close < TUp[1] ? -1 : Trend[1]
Tsl = Trend == 1 ? TUp : TDown
linecolor = Trend == 1 ? color.green : color.red
plot(showST ? Tsl : na, color=linecolor, style=plot.style_line, linewidth=2, title="SuperTrend")
// Buy/Sell Conditions
var bool previousBuysignal = false
var bool previousSellsignal = false
buysignal = not previousBuysignal and Trend == 1 and close > VWAPrice
sellsignal = not previousSellsignal and Trend == -1 and close < VWAPrice
// Ensure the signals are not repetitive
if (buysignal)
previousBuysignal := true
previousSellsignal := false
else if (sellsignal)
previousBuysignal := false
previousSellsignal := true
// Execute buy and sell orders
if (buysignal)
strategy.entry("Buy", strategy.long)
if (sellsignal)
strategy.entry("Sell", strategy.short)
// Plot Buy/Sell Labels
//plotshape(buysignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", textcolor=color.white, size=size.normal)
//plotshape(sellsignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", textcolor=color.white, size=size.normal)