Strategi ini menggunakan VWAP (Volume Weighted Average Price) dari kerangka waktu harian sebagai sinyal untuk masuk dan keluar dari perdagangan. Ketika harga penutupan melintasi di atas VWAP, ini memicu entri panjang dengan stop loss ditetapkan pada candles low sebelumnya jika di bawah VWAP, dan harga target ditetapkan 3 poin di atas harga masuk. Sebaliknya, ketika harga penutupan melintasi di bawah VWAP, ini memicu entri pendek dengan stop loss ditetapkan pada candles high sebelumnya jika di atas VWAP, dan harga target ditetapkan 3 poin di bawah harga masuk. Strategi ini tidak termasuk kondisi keluar, sehingga perdagangan tetap terbuka sampai sinyal yang berlawanan terjadi.
Dengan menggunakan data VWAP lintas kerangka waktu untuk menentukan tren dan memanfaatkan stop loss dinamis dan mengambil keuntungan titik tetap, strategi dapat secara efektif menangkap tren pasar, mengendalikan risiko penarikan, dan mengunci keuntungan tepat waktu.
Strategi ini menggunakan data VWAP lintas timeframe untuk penentuan tren dan pemicu sinyal sambil menggunakan stop loss dinamis dan mengambil keuntungan titik tetap untuk mengendalikan risiko dan mengunci keuntungan. Ini adalah strategi perdagangan kuantitatif yang sederhana dan efektif. Melalui optimalisasi dalam penyaringan tren, mengambil keuntungan dinamis, ukuran posisi, dan pemilihan sesi perdagangan, kekuatan strategi dan potensi keuntungan dapat ditingkatkan lebih lanjut. Namun, ketika menerapkan strategi dalam praktek, perhatian harus diberikan pada karakteristik pasar, biaya perdagangan, dan optimasi parameter untuk mencapai strategi kinerja yang lebih baik.
/*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))