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 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 terbesar dari strategi ini adalah bahwa menggunakan VWAP dan EMA untuk menentukan tren sangat dapat diandalkan.
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 utama dari strategi ini adalah bahwa VWAP dan EMA dapat memberikan sinyal yang salah.
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.
Aspek utama untuk meningkatkan strategi ini:
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")