Strategi Trend Breakout Rintangan Dukungan Dinamis

Penulis:ChaoZhang, Tanggal: 2023-12-26 15:21:45
Tag:

img

Gambaran umum

Strategi ini menilai arah tren berdasarkan long-term support/resistance breakout dan masuk ke posisi ketika support/resistance pecah. Ini menggunakan zigzag untuk mendefinisikan puncak dan lembah, mengkonfirmasi puncak/lembah dengan 2 bar, sehingga ada lag 2 bar. Ini menghitung perbedaan antara SMA puncak dan lembah dalam periode yang ditentukan (21 secara default) sebagai tingkat SR alternatif. Ide ini berasal dari indikator Nebula-Advanced-Dynamic-Support-Resistance dari synapticEx.

Logika Strategi

Strategi ini menggunakan logika berikut untuk menentukan tren dan sinyal perdagangan:

  1. Konfirmasi puncak/lembah dengan zigzag: ketika dalam 5 bar terakhir, bar 5 puncak < bar 4 puncak < bar 3 puncak > bar 2 puncak > bar 1 puncak, bar 3 lembah dikonfirmasi sebagai lembah terendah. Konfirmasi puncak tertinggi dengan cara yang sama.

  2. Hitung jumlah puncak hn dan lembah ln dalam periode yang ditentukan (default 21). Jika hn>0 dan ln>0, hitung tingkat rata-rata puncak hsum/hn dan tingkat rata-rata lembah lsum/ln. Perbedaannya r digunakan sebagai tingkat SR alternatif.

  3. Membandingkan harga penutupan dengan resistance dinamis lvalr dan support hvalr untuk menentukan arah tren.

  4. Pergi panjang ketika resistensi yang valid pecah, pergi pendek ketika dukungan yang valid pecah.

Analisis Keuntungan

Keuntungan dari strategi ini:

  1. Menggunakan zigzag untuk mengkonfirmasi SR memberikan akurasi, menghindari kebocoran palsu.

  2. SR berdasarkan statistik jangka panjang lebih berharga untuk mengurangi risiko.

  3. Alternatif SR meningkatkan validitas sinyal breakout.

  4. Logikanya sederhana dan mudah dimengerti, cocok untuk perdagangan kuantum.

  5. Periode statistik yang dapat disesuaikan sesuai dengan siklus dan produk yang berbeda.

Analisis Risiko

Risiko dari strategi ini:

  1. 2 bar lag dengan zigzag mungkin melewatkan titik masuk terbaik.

  2. SR yang diprediksi hanya untuk referensi, penyusutan abnormal masih bisa terjadi.

  3. Periode statistik yang tidak tepat menyebabkan SR tidak valid.

  4. Penarikan harga setelah keluar dapat memicu stop loss.

  5. Pergeseran harga setelah masuk membawa kerugian yang lebih besar.

Solusinya adalah:

  1. Singkatkan periode statistik dengan benar untuk mengurangi lag.

  2. Gabungkan lebih banyak faktor untuk memprediksi SR.

  3. Stabilitas uji dari periode yang berbeda.

  4. Tetapkan level stop loss yang wajar.

  5. Gunakan ukuran posisi untuk membatasi kerugian tunggal.

Arahan Optimasi

Strategi dapat dioptimalkan dari aspek berikut:

  1. Gunakan pembelajaran mesin untuk memprediksi SR, meningkatkan tingkat keberhasilan sinyal breakout.

  2. Menggabungkan volume CONF untuk mengkonfirmasi validitas sinyal breakout.

  3. Klasifikasi statistik SR berdasarkan siklus yang berbeda, meningkatkan efisiensi SR.

  4. Menambahkan posisi pada keuntungan, mengatur jejak berhenti untuk menyeimbangkan keuntungan / kerugian.

  5. Menggabungkan MA untuk menentukan tren, menghindari buta panjang / pendek tanpa tren.

Kesimpulan

Kesimpulannya, ini adalah strategi trend following yang kuat. Ini memiliki akurasi tinggi dalam menentukan arah tren dan pengendalian risiko yang tepat. Tetapi keterlambatan membuat tidak mungkin untuk mendapatkan keuntungan dari setiap sinyal panjang / pendek. Jadi cocok bagi pedagang kuant berpengalaman untuk dikombinasikan dengan strategi mereka sendiri. Dengan mengoptimalkan periode statistik dan mengintegrasikan indikator atau model lain, ini dapat menjadi strategi trend following yang efisien.


/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SR TREND STRATEGY", shorttitle="SR TREND", overlay=true, calc_on_order_fills=true)
//based on by synapticEx SR indicator https://www.tradingview.com/script/O0F675Kv-Nebula-Advanced-Dynamic-Support-Resistance/
length = input(title="SR lookbak length", type=input.integer, defval=21)
h = bar_index>5 and high[5]<high[4] and high[4]<high[3] and high[3]>high[2] and high[2]>high[1] ? 1 : 0
l = bar_index>5 and low[5]>low[4]   and low[4]>low[3]   and low[3]<low[2]   and low[2]<low[1]   ? 1 : 0
ln = sum(l, length)
hn = sum(h, length)
hval =  h>0 ? high[3] : 0
lval =  l>0 ? low[3]  : 0
lsum = sum(lval, length)
hsum = sum(hval, length)
r = ln>0 and hn>0 ? abs((hsum/hn) - (lsum/ln)): 0
float lvalc = na
float lvalr = na
float hvalc = na
float hvalr = na
lvalc := lval and r>0 ? lval   : lvalc[1]
lvalr := lval and r>0 ? lval+r : lvalr[1]
hvalc := hval and r>0 ? hval   : hvalc[1]
hvalr := hval and r>0 ? hval-r : hvalr[1]
int trend=0
trend:=close > lvalr and close > hvalr ? 1 : close < lvalr and close < hvalr ? -1 : trend[1]
strategy.close("Long", when=trend==-1)
strategy.close("Short", when=trend==1)
strategy.entry("Long", strategy.long, when=trend==1 and close>hvalc)
strategy.entry("Short", strategy.short, when=trend==-1 and close<lvalc)
int long=0
int short=0
long:= trend==1 and close>hvalc ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and close<lvalc ? 1 : trend==1 ? -1 : short[1]
barcolor(long>0? color.green : short>0? color.red : trend>0? color.white: trend<0 ? color.orange : color.blue)

Lebih banyak