
Strategi ini menggunakan VWAP (trading volume weighted average price) dari day line sebagai sinyal untuk masuk dan keluar. Ketika closing price melewati VWAP untuk melakukan over, stop loss diatur di bawah VWAP di garis K-low sebelumnya, dan target set 3 poin di atas harga opening; ketika closing price melewati VWAP di bawah trigger shorting, stop loss diatur di atas VWAP di garis K-high sebelumnya, dan target set 3 poin di bawah harga opening. Strategi ini tidak mencakup kondisi keluar, dan perdagangan akan terus berlangsung sampai muncul sinyal reversal.
Mengetahui tren dari data VWAP lintas-siklus, sekaligus memanfaatkan stop loss dinamis dan stop loss titik-titik tetap, dapat secara efektif menangkap tren, mengontrol risiko penarikan, dan mengunci keuntungan tepat waktu.
Strategi ini menggunakan data VWAP lintas-siklus untuk penilaian tren dan pemicu sinyal, sementara mengontrol risiko dan mengunci keuntungan dengan stop loss dinamis dan stop count titik tetap. Ini adalah strategi perdagangan kuantitatif yang sederhana dan efektif. Optimalisasi strategi dapat meningkatkan stabilitas dan potensi keuntungan lebih lanjut melalui penyaringan tren, stop loss dinamis, manajemen posisi, dan pilihan waktu perdagangan.
/*backtest
start: 2024-03-06 00:00:00
end: 2024-03-07 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
// fastEMA = ta.ema(close, 24)
// slowEMA = ta.ema(close, 200)
// Higher Time Frame
float sl = na
float tgt = na
posSize = 1
vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close))
// plot(vwap_1d)
// To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes:
// indexHighTF = barstate.isrealtime ? 1 : 0
// indexCurrTF = barstate.isrealtime ? 0 : 1
// nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF]
// plot(nonRepaintingVWAP, "Non-repainting VWAP")
enterLong = ta.crossover(close, vwap_1d)
exitLong = ta.crossunder(close, vwap_1d)
enterShort = ta.crossunder(close, vwap_1d)
exitShort = ta.crossover(close, vwap_1d)
if enterLong
sl := low[1]>vwap_1d ?low[1]:vwap_1d
tgt:=close+3
strategy.entry("EL", strategy.long, qty=posSize)
strategy.exit('exitEL', 'EL', stop=sl, limit=tgt)
if enterShort
sl := high[1]<vwap_1d ?high[1]:vwap_1d
tgt := close-3
strategy.entry("ES", strategy.short, qty=posSize)
strategy.exit('exitES', 'ES', stop=sl, limit=tgt)
// if exitLong
// strategy.close("EL")
// if exitShort
// strategy.close("ES")
// goLongCondition1 = ta.crossover(close, vwap_1d)
// timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0)
// notInTrade = strategy.position_size <= 0
// if goLongCondition1 and timePeriod and notInTrade
// stopLoss = low[1]
// takeProfit = close+3
// strategy.entry('long', strategy.long)
// strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit)
plot(close, color=color.new(#00c510, 0))
plot(vwap_1d, color=color.new(#f05619, 0))
plot(sl, color=color.new(#fbff00, 0))
plot(tgt, color=color.new(#00e1ff, 0))