
Es handelt sich um eine quantitative Handelsstrategie, die auf dem VWAP-, MACD- und RSI-Triple-Technik basiert. Die Strategie identifiziert Kauf- und Verkaufsmöglichkeiten in einem Markt durch die Kombination von mehreren Signalen aus dem gewichteten Durchschnittspreis (VWAP), dem Moving Average Convergence Spread (MACD) und dem relativ starken RSI (RSI). Die Strategie verwendet einen Prozentsatzstop-Loss-Mechanismus, um das Risiko zu verwalten, und verwendet Strategie-Positionsmanagement, um die Kapitalnutzung zu optimieren.
Die Kernlogik der Strategie basiert auf einer umfassenden Analyse von drei Hauptindikatoren:
Die Kaufbedingungen sind:
Die Verkaufskonditionen müssen gleichzeitig folgende Bedingungen erfüllen:
Die Strategie baut ein relativ vollständiges Handelssystem auf, indem sie die drei klassischen technischen Indikatoren VWAP, MACD und RSI kombiniert. Die Strategie konzentriert sich auf die Zuverlässigkeit der Signale und das Risikomanagement und verbessert die Handelsqualität durch Multi-Indikator-Cross-Verifizierung. Obwohl es einige Aspekte gibt, die optimiert werden müssen, ist die Gesamtstruktur vernünftig und hat eine gute Skalierbarkeit.
/*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")