
Strategi ini berdasarkan VWAP dan EMA sebagai penunjuk arah trend, VWAP mewakili harga tipikal dan EMA200 mewakili trend garis panjang tengah. Apabila harga lebih tinggi daripada VWAP dan EMA200, ia lebih tinggi daripada VWAP dan EMA200, dan ia lebih rendah daripada VWAP dan EMA200.
Logik utama strategi ini adalah menggunakan VWAP dan EMA untuk menentukan trend harga.
Oleh itu, strategi ini terlebih dahulu menilai sama ada harga lebih tinggi daripada VWAP dan EMA200 pada masa yang sama, dan jika ya, lakukan lebih banyak; jika harga lebih rendah daripada VWAP dan EMA200 pada masa yang sama, kosongkan. Seperti yang dapat dilihat, strategi ini bergantung terutamanya pada VWAP dan EMA untuk menilai keputusan pembelian dan penjualan.
Di samping itu, strategi ini juga menetapkan titik hentian berhenti. Setelah melakukan lebih banyak, atur hentian menjadi 3.5% dari harga masuk, hentian menjadi 1.4%; setelah melakukan pelepasan, atur hentian menjadi 2.5% dari harga masuk, hentian menjadi 0.9% . Ini dapat mengelakkan kerugian yang terlalu besar.
Kelebihan utama strategi ini adalah bahawa ia sangat dipercayai untuk menilai trend menggunakan VWAP dan EMA.
Oleh itu, penggunaan VWAP dan EMA dalam kombinasi sangat dipercayai untuk menentukan trend. Apabila kedua-duanya menentukan trend, peluang untuk berjaya dalam operasi adalah tinggi.
Selain itu, menetapkan titik hentian hentian boleh mengelakkan kerugian tunggal yang terlalu besar.
Risiko utama strategi ini adalah bahawa VWAP dan EMA mungkin menghantar isyarat yang salah.
Di samping itu, ia mungkin tidak disesuaikan dengan tetapan stop loss, dan risiko kerugian tunggal yang terlalu besar masih wujud.
Untuk menyelesaikan masalah di atas, kita boleh mengoptimumkan tetapan parameter VWAP dan EMA, supaya mereka lebih baik untuk mengenal pasti permulaan trend baru. Di samping itu, anda boleh menetapkan Hentian Hentian yang menyesuaikan diri, supaya Hentian Hentian disesuaikan dengan turun naik harga.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Strategi ini secara keseluruhannya adalah strategi mengikuti trend yang sangat dipercayai. Ia menggunakan VWAP dan EMA untuk menentukan arah trend, idea yang jelas dan mudah, peluang untuk masuk adalah besar apabila kedua-duanya memberikan isyarat yang konsisten. Dengan menetapkan hentian hentian yang munasabah, risiko dapat dikendalikan.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//26m Binance BTCUSDTPERP
//@version=4
strategy("VWAP Trend Follower", initial_capital=100, overlay=true, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 90, currency = currency.USD )
/// INITIALISE STRATEGY ///
price=close[1]
vprice=vwap(price)
trend=ema(price, 200)
/// RISK MANAGEMENT ///
long_tp_inp = input(3.5, title='Long Take Profit %',step=0.1)/100
long_sl_inp = input(1.4, title='Long Stop Loss %',step=0.1)/100
short_tp_inp = input(2.5, title='Short Take Profit %',step=0.1)/100
short_sl_inp = input(0.9, title='Short Stop Loss %',step=0.1)/100
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
short_take_level = strategy.position_avg_price * (1 - short_tp_inp)
short_stop_level = strategy.position_avg_price * (1 + short_sl_inp)
//long_trailing = input(5, title='Trailing Stop Long',step=0.1) / 100
//short_trailing = input(5, title='Trailing Stop short',step=0.1) / 100
/// STRATEGY CONDITIONS ///
aLong= price > trend and price > vprice
entry_long = aLong and aLong[2] and aLong[1]
aShort= price < trend and price < vprice
entry_short = aShort and aShort[2] and aShort[1]
//exit_long =
//exit_short =
//entry_price_long=valuewhen(entry_long,close,0)
//entry_price_short=valuewhen(entry_short,close,0)
/// PLOTTING ///
plot(vprice, color=#5875E1, linewidth=2)
plot(trend, color=#D965E1, linewidth=1)
plotshape(series=aLong, color=#71E181,style=shape.labelup)
plotshape(series=aShort, color=#E18BA5,style=shape.labeldown)
//plot(long_take_level, color=#00E676, linewidth=2)
//plot(long_stop_level, color=#FF5252, linewidth=1)
//plot(short_take_level, color=#4CAF50, linewidth=2)
//plot(short_stop_level, color=#FF5252, linewidth=1)
/// PERIOD ///
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
//// STRATEGY EXECUTION ////
if testPeriod()
if strategy.position_size == 0 or strategy.position_size > 0
strategy.entry(id="Long", long=true, when=entry_long, comment="Long")
strategy.exit("Take Profit/ Stop Loss","Long", limit=long_take_level, stop=long_stop_level,comment="Exit Long")//,trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
// strategy.close(id="Long", when=exit_long, comment = "Exit Long")
if strategy.position_size == 0 or strategy.position_size < 0
strategy.entry(id="Short", long=false, when=entry_short, comment = "Short")
strategy.exit("Take Profit/ Stop Loss","Short", limit=short_take_level , stop=short_stop_level,comment = "Exit Short")//, trail_points=entry_price_short * short_trailing / syminfo.mintick, trail_offset=entry_price_short * short_trailing / syminfo.mintick)
// strategy.close(id="Short", when=exit_short, comment = "Exit Short")