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.
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 terbesar strategi ini adalah bahawa menggunakan VWAP dan EMA untuk menentukan trend sangat boleh dipercayai.
Oleh itu, menggabungkan VWAP dan EMA untuk menilai trend sangat boleh dipercayai.
Di samping itu, menetapkan TP/SL mengelakkan kerugian berlebihan setiap perdagangan.
Risiko utama strategi ini ialah VWAP dan EMA mungkin memberikan isyarat yang salah.
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.
Aspek utama untuk meningkatkan strategi ini:
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")