
Strategi ini didasarkan pada VWAP dan EMA sebagai indikator untuk menentukan arah tren, dengan VWAP mewakili harga khas dan EMA200 mewakili tren garis panjang tengah. Melakukan over jika harga lebih tinggi dari VWAP dan EMA200 dan short jika harga lebih rendah dari VWAP dan EMA200 adalah strategi mengikuti tren yang khas.
Logika inti dari strategi ini adalah menggunakan VWAP dan EMA untuk menilai tren harga.
Oleh karena itu, strategi ini pertama-tama menilai apakah harga secara bersamaan lebih tinggi dari VWAP dan EMA200, dan jika demikian, lakukan lebih banyak; jika harga secara bersamaan lebih rendah dari VWAP dan EMA200, maka kosong.
Selain itu, strategi ini juga menetapkan titik stop loss. Setelah melakukan over, atur stop loss menjadi 3,5% dari harga masuk, stop loss menjadi 1,4%; setelah melakukan short, atur stop loss menjadi 2,5% dari harga masuk, stop loss menjadi 0,9% . Ini dapat menghindari kerugian yang terlalu besar.
Keuntungan terbesar dari strategi ini adalah bahwa penggunaan VWAP dan EMA untuk menilai tren sangat dapat diandalkan.
Oleh karena itu, kombinasi menggunakan VWAP dan EMA untuk menilai tren sangat dapat diandalkan. Ketika keduanya menilai tren secara konsisten, keberhasilan operasi sangat tinggi.
Selain itu, pengaturan stop loss stop loss dapat mencegah kerugian tunggal yang terlalu besar.
Risiko utama dari strategi ini adalah bahwa VWAP dan EMA dapat mengirimkan sinyal yang salah.
Selain itu, pengaturan stop loss mungkin tidak tepat, dan risiko kerugian tunggal yang terlalu besar tetap ada.
Untuk mengatasi masalah di atas, kita dapat mengoptimalkan pengaturan parameter VWAP dan EMA sehingga mereka lebih baik mengidentifikasi awal dari tren baru. Selain itu, Anda dapat mengatur stop loss yang dapat disesuaikan sehingga stop loss dapat disesuaikan dengan fluktuasi harga.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Strategi ini secara keseluruhan merupakan strategi trend follow yang sangat handal. Strategi ini menggunakan VWAP dan EMA untuk menentukan arah tren, ide yang jelas dan sederhana, dan peluang masuk yang sukses sangat tinggi ketika keduanya memberikan sinyal yang konsisten. Dengan pengaturan stop loss yang masuk akal, 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")