Triple Super Trend EMA ADX Strategi Penapis


Tarikh penciptaan: 2023-09-18 14:02:12 Akhirnya diubah suai: 2023-09-18 14:02:12
Salin: 1 Bilangan klik: 1696
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Ini adalah strategi perdagangan kuantitatif yang menggabungkan triple overtrend, EMA dan ADX. Ia menggunakan sistem triple overtrend untuk menghantar isyarat perdagangan, dan menggabungkan EMA dan ADX sebagai syarat penapis untuk mengawal frekuensi perdagangan dan meningkatkan kualiti isyarat perdagangan.

Prinsip Strategi

  • Sistem hypertrend menggunakan tiga kumpulan parameter yang berbeza, menghasilkan isyarat perdagangan apabila ketiga-tiga kumpulan hypertrend sama arah.
  • Menggunakan EMA sebagai penapis trend, hanya melakukan lebih banyak apabila harga penutupan lebih tinggi daripada EMA, dan kosong apabila harga penutupan lebih rendah daripada EMA.
  • Menggunakan ADX sebagai penapis trend kuat dan lemah, hanya berdagang apabila ADX lebih tinggi daripada nilai set.
  • Memungkinkan pilihan untuk masuk semula, mengawal potensi keuntungan dan menghentikan risiko kerugian.

Khususnya, syarat kemasukan panjang untuk triple overtrend berubah menjadi bullish, harga penutupan lebih tinggi daripada EMA, ADX lebih tinggi daripada nilai set membuka lebih banyak kedudukan; syarat kemasukan pendek untuk triple overtrend berubah menjadi bearish, harga penutupan lebih rendah daripada EMA, ADX lebih tinggi daripada nilai set membuka posisi kosong. Syarat kedudukan kosong untuk mana-mana supertrend berubah untuk melonggarkan kedudukan semasa.

Strategi ini juga memetakan garis sokongan dan rintangan kepada tiga kumpulan super trend untuk membantu menentukan arah trend.

Analisis kelebihan

  • Sistem tiga super trend boleh menyaring penembusan palsu, meningkatkan ketepatan kemasukan.
  • Penapisan berganda EMA dan ADX mengurangkan kerosakan whipsaw dan meningkatkan keupayaan menghentikan kerosakan.
  • Keupayaan keuntungan untuk menyesuaikan strategi mengikut pilihan risiko individu.
  • Gabungan visual supertrend menyokong garis rintangan, membantu menentukan arah trend.

Analisis risiko

  • Terdapat masalah ketinggalan dalam penunjuk seperti hypertrend, dan kemungkinan masuk lewat atau keluar lebih awal.
  • Jika anda memilih penapis yang terlalu ketat, anda akan terlepas peluang.
  • Dalam pasaran yang lebih kecil, whipsaw mudah terbentuk dan menyebabkan kerugian.
  • Memungkinkan kemasukan semula akan meningkatkan frekuensi transaksi dan kos slip.

Risiko ini dapat dikurangkan dengan cara menyesuaikan kombinasi parameter, mengoptimumkan keadaan penapisan dan sebagainya. Dalam pada itu, perlu mengawal saiz kedudukan dan menghentikan kerugian dengan ketat untuk menghadapi keadaan pasaran yang tidak menentu.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  • Uji kombinasi parameter yang berbeza untuk mencari parameter supertrend dan EMA yang terbaik.
  • Mengoptimumkan ADX untuk mengurangkan isyarat palsu.
  • Tambahkan penapis untuk petunjuk lain seperti kadar turun naik, jumlah transaksi, dan sebagainya.
  • Mengoptimumkan parameter untuk pelbagai jenis dan meningkatkan adaptasi.
  • Menubuhkan mekanisme hentikan kerugian yang dinamik dan mengawal risiko secara aktif.
  • Mencuba kaedah seperti pembelajaran mesin untuk mencari peraturan kemasukan dan keluar yang lebih baik.

ringkaskan

Strategi ini memanfaatkan sepenuhnya kelebihan sistem super trend tiga, ditambah dengan penapisan EMA dan ADX ganda, dapat meningkatkan kualiti isyarat perdagangan dengan berkesan, mengawal risiko. Dengan cara seperti pengoptimuman parameter, menambah syarat penapisan, dan hentian dinamik, strategi ini dapat meningkatkan kekuatan dan kesesuaian strategi.

Kod sumber strategi
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// ©kunjandetroja


//@version=5
strategy('Triple Supertrend with EMA and ADX', overlay=true)

m1 = input.float(1,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 1')
m2 = input.float(2,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 2')
m3 = input.float(3,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 3')
p1 = input.int(10,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 1')
p2 = input.int(15,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 2')
p3 = input.int(20,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 3')
len_EMA = input.int(200,"EMA Len",minval = 5,maxval= 250,step=1)
len_ADX = input.int(14,"ADX Len",minval = 1,maxval= 25,step=1)
len_Di = input.int(14,"Di Len",minval = 1,maxval= 25,step=1)
adx_above = input.float(25,"adx filter",minval = 1,maxval= 50,step=0.5)
var bool long_position = false
adx_filter = input.bool(false, "Add Adx & EMA filter")
renetry = input.bool(true, "Allow Reentry")

f_getColor_Resistance(_dir, _color) =>
    _dir == 1 and _dir == _dir[1] ? _color : na
f_getColor_Support(_dir, _color) =>
    _dir == -1 and _dir == _dir[1] ? _color : na

[superTrend1, dir1] = ta.supertrend(m1, p1)
[superTrend2, dir2] = ta.supertrend(m2, p2)
[superTrend3, dir3] = ta.supertrend(m3, p3)
EMA = ta.ema(close, len_EMA)
[diplus,diminus,adx] = ta.dmi(len_Di,len_ADX)

// ADX Filter
adxup = adx > adx_above and close > EMA
adxdown = adx > adx_above and close < EMA

sum_dir = dir1 + dir2 + dir3

dir_long = if(adx_filter == false)
    sum_dir == -3
else
    sum_dir == -3 and adxup
dir_short = if(adx_filter == false)
    sum_dir == 3
else
    sum_dir == 3 and adxdown
Exit_long = dir1 == 1 and dir1 != dir1[1]
Exit_short = dir1 == -1 and dir1 != dir1[1]

// BuySignal = dir_long and dir_long != dir_long[1]
// SellSignal = dir_short and dir_short != dir_short[1]
// if BuySignal
//     label.new(bar_index, low, 'Long', style=label.style_label_up)
// if SellSignal
//     label.new(bar_index, high, 'Short', style=label.style_label_down)

longenter = if(renetry == false)
    dir_long and long_position == false
else
    dir_long
shortenter = if(renetry == false)
    dir_short and long_position == true
else
    dir_short
if longenter
    long_position := true
if shortenter
    long_position := false

strategy.entry('BUY', strategy.long, when=longenter)
strategy.entry('SELL', strategy.short, when=shortenter)   
strategy.close('BUY', Exit_long)
strategy.close('SELL', Exit_short)

buy1 = ta.barssince(dir_long)
sell1 = ta.barssince(dir_short)

colR1 = f_getColor_Resistance(dir1, color.red)
colS1 = f_getColor_Support(dir1, color.green)

colR2 = f_getColor_Resistance(dir2, color.orange)
colS2 = f_getColor_Support(dir2, color.yellow)

colR3 = f_getColor_Resistance(dir3, color.blue)
colS3 = f_getColor_Support(dir3, color.maroon)

plot(superTrend1, 'R1', colR1, linewidth=2)
plot(superTrend1, 'S1', colS1, linewidth=2)

plot(superTrend2, 'R1', colR2, linewidth=2)
plot(superTrend2, 'S1', colS2, linewidth=2)

plot(superTrend3, 'R1', colR3, linewidth=2)
plot(superTrend3, 'S1', colS3, linewidth=2)

// // Intraday only
// var int new_day = na
// var int new_month = na
// var int new_year = na
// var int close_trades_after_time_of_day = na

// if dayofmonth != dayofmonth[1]
//     new_day := dayofmonth
// if month != month[1]
//     new_month := month
// if year != year[1]
//     new_year := year
// close_trades_after_time_of_day := timestamp(new_year,new_month,new_day,15,15)

// strategy.close_all(time > close_trades_after_time_of_day)