
Ini adalah strategi perdagangan kuantitatif yang didasarkan pada tiga indikator teknis VWAP, MACD, dan RSI. Strategi ini mengidentifikasi peluang jual beli di pasar dengan mengkombinasikan sinyal ganda dari VWAP, MACD, dan RSI. Strategi ini menggunakan mekanisme stop loss persentase untuk mengelola risiko, dan menggunakan manajemen posisi strategi untuk mengoptimalkan pemanfaatan dana.
Logika inti dari strategi ini didasarkan pada analisis komprehensif dari tiga indikator utama:
Syarat pembelian harus memenuhi:
Kondisi penjualan harus memenuhi:
Strategi ini membangun sistem perdagangan yang relatif lengkap dengan menggunakan tiga indikator teknis klasik VWAP, MACD dan RSI secara komprehensif. Strategi ini dirancang untuk memfokuskan pada keandalan sinyal dan manajemen risiko, meningkatkan kualitas perdagangan melalui verifikasi silang multi-indikator. Meskipun ada beberapa aspek yang perlu dioptimalkan, kerangka kerja keseluruhan masuk akal dan memiliki skalabilitas 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")