
Ini adalah strategi perdagangan kuantitatif berdasarkan VWAP, MACD, dan RSI. Strategi ini mengidentifikasi peluang jual beli di pasaran dengan menggabungkan pelbagai isyarat perdagangan rata-rata bertimbangan ((VWAP), rata-rata bergerak berhampiran (MACD) dan rasio lemah (RSI). Strategi ini menggunakan peratusan stop loss untuk menguruskan risiko dan menggunakan pengurusan kedudukan strategi untuk mengoptimumkan penggunaan dana.
Logik utama strategi ini adalah berdasarkan kepada analisis komprehensif terhadap tiga indikator utama:
Syarat pembelian perlu dipenuhi:
Syarat jualan perlu dipenuhi:
Strategi ini membina sistem perdagangan yang agak lengkap dengan menggunakan tiga petunjuk teknikal klasik VWAP, MACD dan RSI secara komprehensif. Strategi ini memberi tumpuan kepada kebolehpercayaan isyarat dan pengurusan risiko dalam reka bentuknya, meningkatkan kualiti perdagangan melalui cross-verifikasi pelbagai petunjuk. Walaupun terdapat beberapa aspek yang perlu dioptimumkan, kerangka keseluruhan adalah munasabah dan mempunyai skalabiliti yang baik.
/*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")