
Die Strategie kombiniert VWAP und Supertrend-Indikatoren. Die Strategie erzeugt ein Kaufsignal, wenn der Preis den VWAP überschreitet und der Supertrend positiv ist. Die Strategie erzeugt ein Verkaufsignal, wenn der Preis den VWAP überschreitet und der Supertrend negativ ist. Die Strategie erzeugt auch ein Wiederholungssignal, indem sie den Status des vorherigen Signals aufzeichnet, um ein Wiederholungssignal zu vermeiden, bis ein Signal in die entgegengesetzte Richtung auftritt.
Die VWAP- und Supertrend-Kauf- und Verkaufsstrategie versucht, Markttrends und potenzielle Wendepunkte durch die Kombination zweier verschiedener Arten von Indikatoren umfassend zu erfassen. Die Strategie-Logik ist klar, leicht umzusetzen und zu optimieren. Die Strategie-Performance hängt jedoch von der Parameterwahl ab und es fehlen Risikomanagementmaßnahmen.
/*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)