Strategi ini menggunakan VWAP (Volume Weighted Average Price) dari jangka masa harian sebagai isyarat untuk memasuki dan keluar perdagangan. Apabila harga penutupan melintasi di atas VWAP, ia mencetuskan entri panjang dengan stop loss ditetapkan pada candles yang sebelumnya rendah jika ia di bawah VWAP, dan harga sasaran ditetapkan 3 mata di atas harga kemasukan. Sebaliknya, apabila harga penutupan melintasi di bawah VWAP, ia mencetuskan entri pendek dengan stop loss ditetapkan pada candles sebelumnya tinggi jika ia di atas VWAP, dan harga sasaran ditetapkan 3 mata di bawah harga kemasukan. Strategi ini tidak termasuk syarat keluar, jadi perdagangan tetap terbuka sehingga isyarat bertentangan berlaku.
Dengan menggunakan data VWAP jangka masa yang berlainan untuk menentukan trend dan memanfaatkan kerugian berhenti dinamik dan keuntungan titik tetap, strategi dapat menangkap pasaran trend dengan berkesan, mengawal risiko pengeluaran, dan mengunci keuntungan tepat pada masanya.
Strategi ini menggunakan data VWAP rentang masa untuk penentuan trend dan mencetuskan isyarat sambil menggunakan stop loss dinamik dan mengambil keuntungan titik tetap untuk mengawal risiko dan mengunci keuntungan. Ini adalah strategi perdagangan kuantitatif yang mudah dan berkesan. Melalui pengoptimuman penapisan trend, mengambil keuntungan dinamik, ukuran kedudukan, dan pemilihan sesi dagangan, kekuatan strategi dan potensi keuntungan dapat ditingkatkan lagi. Walau bagaimanapun, ketika menerapkan strategi dalam amalan, perhatian harus diberikan kepada ciri pasaran, kos dagangan, dan pengoptimuman parameter untuk mencapai strategi prestasi 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))