Diese Strategie kombiniert die VWAP (Volume Weighted Average Price) und Supertrend-Indikatoren. Sie bestimmt Kauf- und Verkaufssignale, indem sie die Preisposition im Verhältnis zum VWAP und die Richtung des Supertrend-Indikators vergleicht. Ein Kaufsignal wird generiert, wenn der Preis über den VWAP überschreitet und der Supertrend positiv ist, während ein Verkaufssignal generiert wird, wenn der Preis unter den VWAP überschreitet und der Supertrend negativ ist. Die Strategie vermeidet auch die Generierung doppelter Signale, indem der vorherige Signalzustand aufgezeichnet wird, bis ein gegenteiliges Signal erscheint.
Die VWAP- und Supertrend-Kauf-/Verkaufsstrategie zielt darauf ab, Markttrends und potenzielle Wendepunkte umfassend zu erfassen, indem zwei verschiedene Arten von Indikatoren kombiniert werden. Die Strategie-Logik ist klar und einfach zu implementieren und zu optimieren. Allerdings hängt die Performance der Strategie von der Parameterwahl ab und es fehlen Risikomanagementmaßnahmen. In praktischen Anwendungen sind weitere Optimierungen und Verfeinerungen erforderlich, um sich an verschiedene Marktbedingungen und Handelsanforderungen anzupassen.
/*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)