Tren VWAP Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-02-29 15:26:56
Tag:

img

Gambaran umum

Strategi ini menggunakan VWAP dan EMA sebagai indikator untuk menentukan arah tren. Ini pergi panjang ketika harga berada di atas VWAP dan EMA200, dan pergi pendek ketika harga berada di bawah VWAP dan EMA200.

Logika Strategi

Logika inti dari strategi ini terletak pada penggunaan VWAP dan EMA untuk menilai tren harga.

  • VWAP mewakili harga khas dan mencerminkan biaya rata-rata peserta pasar. Ketika harga di atas VWAP, itu berarti daya beli meningkat dan harus pergi panjang. Ketika harga di bawah VWAP, itu berarti daya jual menguat dan harus pergi pendek.

Oleh karena itu, strategi ini pertama-tama menilai apakah harga di atas VWAP dan EMA200, jika ya maka pergi panjang; jika harga di bawah VWAP dan EMA200, maka pergi pendek.

Selain itu, strategi ini juga menetapkan titik mengambil keuntungan dan stop loss. Setelah pergi panjang, TP ditetapkan menjadi 3,5% dari harga masuk dan SL ditetapkan menjadi 1,4% dari harga masuk. Setelah pergi pendek, TP adalah 2,5% dari harga masuk dan SL adalah 0,9% dari harga masuk. Ini menghindari kerugian besar.

Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa menggunakan VWAP dan EMA untuk menentukan tren sangat dapat diandalkan.

  • VWAP dapat dengan akurat mencerminkan biaya rata-rata peserta pasar, ini merupakan indikator yang sangat baik untuk menilai tren.
  • EMA200 dapat dengan jelas mencerminkan tren jangka menengah dan panjang dan menentukan arah tren utama dengan sangat akurat.

Oleh karena itu, menggabungkan VWAP dan EMA untuk menilai tren sangat dapat diandalkan.

Selain itu, penentuan TP/SL menghindari kerugian yang berlebihan per perdagangan.

Risiko

Risiko utama dari strategi ini adalah bahwa VWAP dan EMA dapat memberikan sinyal yang salah.

  • Ketika ada fluktuasi pasar yang keras, harga dapat menyimpang dari VWAP dalam jangka pendek dan memberikan sinyal yang salah.
  • Ketika tren baru dimulai, EMA dapat menunda perubahan harga dan menyebabkan kehilangan waktu masuk yang terbaik.

Selain itu, pengaturan TP/SL yang tidak tepat masih menimbulkan risiko kerugian yang berlebihan per perdagangan.

Untuk memecahkan masalah di atas, kita dapat mengoptimalkan parameter VWAP dan EMA untuk membuat mereka lebih baik dalam mendeteksi awal tren baru.

Peningkatan

Aspek utama untuk meningkatkan strategi ini:

  • Mengoptimalkan parameter VWAP untuk menemukan pengaturan yang lebih stabil dalam menentukan tren.
  • Mengoptimalkan periode EMA untuk menemukan pengaturan yang lebih akurat dalam menilai tren.
  • Tambahkan indikator tren lainnya seperti Bollinger Bands, KDJ dll untuk dikombinasikan dengan VWAP dan EMA, untuk meningkatkan akurasi.
  • Atur adaptif mengambil keuntungan dan stop loss berdasarkan aturan tertentu untuk menyesuaikan mereka secara dinamis sesuai dengan fluktuasi harga.
  • Menggabungkan ukuran posisi berdasarkan penarikan, kerugian berturut-turut, dll untuk mengendalikan risiko keseluruhan.

Kesimpulan

Sebagai kesimpulan, ini adalah strategi tren yang sangat dapat diandalkan. Ini menggunakan logika sederhana dari VWAP dan EMA untuk menentukan arah tren. Ketika kedua indikator memberikan sinyal yang konsisten, tingkat keberhasilan sangat tinggi. Dengan mengatur TP / SL yang tepat, risiko dapat dikendalikan. Masih ada banyak cara (optimalisasi parameter, menambahkan indikator, TP / SL adaptif, ukuran posisi dll) untuk lebih meningkatkan strategi ini dan membuat kinerjanya lebih baik.


/*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")

Lebih banyak