Trend VWAP Mengikut Strategi

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

img

Ringkasan

Strategi ini menggunakan VWAP dan EMA sebagai penunjuk untuk menentukan arah trend. Ia pergi panjang apabila harga di atas kedua-dua VWAP dan EMA200, dan pergi pendek apabila harga di bawah kedua-dua VWAP dan EMA200.

Logika Strategi

Logik teras strategi terletak pada menggunakan VWAP dan EMA untuk menilai trend harga.

  • VWAP mewakili harga biasa dan mencerminkan kos purata peserta pasaran. Apabila harga di atas VWAP, ia bermakna kuasa beli meningkat dan harus pergi panjang. Apabila harga di bawah VWAP, ia bermakna kuasa jual menguat dan harus pergi pendek.

  • EMA200 mewakili trend harga jangka menengah dan panjang. Apabila harga di atas EMA200, ia bermakna prospek jangka menengah dan panjang adalah bullish dan harus pergi panjang. Apabila harga di bawah EMA200, ia bermakna prospek jangka menengah dan panjang adalah bearish dan harus pergi pendek.

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

Selain itu, strategi ini juga menetapkan titik mengambil keuntungan dan berhenti kerugian. Selepas pergi panjang, TP ditetapkan kepada 3.5% daripada harga kemasukan dan SL ditetapkan kepada 1.4% daripada harga kemasukan. Selepas pergi pendek, TP adalah 2.5% daripada harga kemasukan dan SL adalah 0.9% daripada harga kemasukan. Ini mengelakkan kerugian besar.

Kelebihan

Kelebihan terbesar strategi ini adalah bahawa menggunakan VWAP dan EMA untuk menentukan trend sangat boleh dipercayai.

  • VWAP boleh mencerminkan dengan tepat kos purata peserta pasaran, ia adalah penunjuk yang sangat baik untuk menilai trend.
  • EMA200 dapat mencerminkan dengan jelas trend jangka menengah dan panjang dan menentukan arah trend utama dengan sangat tepat.

Oleh itu, menggabungkan VWAP dan EMA untuk menilai trend sangat boleh dipercayai.

Di samping itu, menetapkan TP/SL mengelakkan kerugian berlebihan setiap perdagangan.

Risiko

Risiko utama strategi ini ialah VWAP dan EMA mungkin memberikan isyarat yang salah.

  • Apabila terdapat turun naik pasaran yang ganas, harga boleh menyimpang dari VWAP dalam jangka pendek dan memberikan isyarat yang salah.
  • Apabila trend baru bermula, EMA boleh menunda perubahan harga dan menyebabkan kehilangan masa kemasukan yang terbaik.

Juga, tetapan TP/SL yang tidak betul masih menimbulkan risiko kerugian yang berlebihan setiap perdagangan.

Untuk menyelesaikan isu-isu di atas, kita boleh mengoptimumkan parameter VWAP dan EMA untuk menjadikan mereka lebih baik dalam mengesan permulaan trend baru.

Peningkatan

Aspek utama untuk meningkatkan strategi ini:

  • Mengoptimumkan parameter VWAP untuk mencari tetapan yang lebih stabil dalam menentukan trend.
  • Mengoptimumkan tempoh EMA untuk mencari tetapan yang lebih tepat dalam menilai trend.
  • Tambah penunjuk trend lain seperti Bollinger Bands, KDJ dan lain-lain untuk digabungkan dengan VWAP dan EMA, untuk meningkatkan ketepatan.
  • Tetapkan adaptif mengambil keuntungan dan berhenti kerugian berdasarkan peraturan tertentu untuk menyesuaikan mereka secara dinamik mengikut turun naik harga.
  • Menggabungkan saiz kedudukan berdasarkan pengeluaran, kerugian berturut-turut dan lain-lain untuk mengawal risiko keseluruhan.

Kesimpulan

Kesimpulannya, ini adalah strategi trend berikut yang sangat boleh dipercayai. Ia menggunakan logik mudah VWAP dan EMA untuk menentukan arah trend. Apabila kedua-dua penunjuk memberikan isyarat yang konsisten, kadar kejayaan sangat tinggi. Dengan menetapkan TP / SL yang betul, risiko dapat dikawal. Masih ada banyak cara (optimum parameter, menambah penunjuk, TP / SL adaptif, saiz kedudukan dll.) untuk meningkatkan lagi strategi ini dan menjadikan prestasi 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 lanjut