Strategi Pembalikan Pengesanan Trend Dinamik adalah strategi perdagangan kuantitatif jangka pendek berdasarkan penunjuk JD Sequential. Dengan mengesan harga tertinggi dan terendah dalam masa nyata, strategi ini menentukan arah trend semasa dan momentum untuk menangkap titik pembalikan pasaran dengan cekap untuk masa kemasukan dan keluar. Berbanding dengan strategi JD Sequential tradisional, strategi ini membuat penambahbaikan berikut:
Strategi ini sesuai untuk bingkai masa jangka pendek seperti carta 5 minit dan 15 minit, yang dapat menangkap turun naik harga jangka pendek dan peluang pembalikan dengan berkesan.
Logik teras Strategi Pembalikan Pengesanan Trend Dinamik adalah berdasarkan kepada penunjuk berturut-turut JD. Dengan membandingkan harga tinggi dan rendah tempoh semasa dengan dua tempoh sebelumnya, penunjuk ini menentukan sama ada kenaikan tinggi atau penurunan rendah berturut-turut telah berlaku, dan menghasilkan pengiraan berturut-turut dari 1 hingga 7. Apabila pengiraan terkumpul menjadi 7, isyarat perdagangan dihasilkan.
Khususnya, pembolehubah berikut ditakrifkan dalam strategi:
Logik untuk penjanaan isyarat perdagangan adalah:
Logik stop loss adalah:
Dengan membandingkan tinggi / rendah dalam masa nyata untuk menentukan arah trend dan kekuatan, bersama-sama dengan masa masuk berdasarkan kiraan, strategi ini dapat menangkap peluang pembalikan jangka pendek dengan berkesan.
Berbanding dengan strategi JD Sequential tradisional, Strategi Pembalikan Pengesanan Trend Dinamik mempunyai kelebihan berikut:
Kelebihan utama strategi ini adalah tindak balasnya yang cepat, yang dapat menangkap turun naik yang besar yang disebabkan oleh peristiwa jangka pendek.
Strategi pembalikan trend dinamik juga membawa beberapa risiko:
Untuk mengurangkan risiko di atas, strategi boleh dioptimumkan dalam aspek berikut:
Terdapat ruang yang cukup untuk Strategi Pembalikan Trend Dynamic Tracking untuk dioptimumkan lebih lanjut, terutamanya dalam arah berikut:
Kombinasi pelbagai jangka masa. Tentukan arah trend utama pada jangka masa yang lebih tinggi untuk mengelakkan perdagangan terhadapnya.
Gabungan dengan penunjuk lain: memasukkan metrik turun naik, data jumlah dan lain-lain untuk meningkatkan kualiti isyarat.
Pembelajaran mesin untuk pengesahan tambahan. Gunakan algoritma AI / ML sebagai penilaian tambahan pada isyarat perdagangan untuk mengurangkan perdagangan yang salah.
Penyesuaian parameter. Mengoptimumkan parameter seperti tempoh kiraan, sesi dagangan, saiz kedudukan dan lain-lain untuk menyesuaikan keadaan pasaran yang berbeza.
Memperluas mekanisme kawalan risiko. Memperkenalkan teknik pengurusan risiko yang lebih canggih seperti hentian adaptif, saiz kedudukan dan lain-lain untuk lebih menyekat risiko.
Penilaian strategi melalui backtesting. Memperluaskan saiz sampel dan jangka masa untuk backtest untuk mengukur ketahanan parameter.
Strategi Pembalikan Pengesanan Trend Dinamik menangkap peluang pembalikan jangka pendek melalui perbandingan masa nyata harga tertinggi dan terendah untuk menentukan arah dan kekuatan trend, di samping peraturan 7-count dalam penunjuk berurutan JD untuk masa perdagangan.
Kekuatan utama strategi ini terletak pada tindak balas cepat yang sesuai untuk perdagangan pembalikan jangka pendek. Pada masa yang sama, risiko seperti frekuensi perdagangan yang tinggi dan berhenti agresif wujud. Arahan pengoptimuman masa depan termasuk penyesuaian parameter, peningkatan kawalan risiko, kombinasi pelbagai jangka masa dll. Melalui pengoptimuman dan pengulangan berterusan, strategi ini berpotensi menjadi alat yang kuat untuk menangkap isyarat pembalikan jangka pendek dengan cekap.
/*backtest start: 2023-12-16 00:00:00 end: 2024-01-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @NeoButane 7 Dec. 2018 // JD Aggressive Sequential Setup // Not based off official Tom DeMarke documentation. As such, I have named the indicator JD instead oF TD to reflect this, and as a joke. // // Difference vs. TD Sequential: faster trade exits and a unique entry. Made for low timeframes. // - Highs or lows are compared instead of close. // - Mirrors only the Setup aspect of TD Sequential (1-9, not to 13) // - Count maxes out at 7 instead of 9. Also part of the joke if I'm going to be honest here // v1 - Release - Made as a strategy, 7 count // . S/R on 7 count // .. Entry on 7 count // ... Exit on 5 count or S/R cross //@version=3 title = "JD Aggressive Sequential Setup" vers = " 1.0 [NeoButane]" total = title + vers strategy(total, total, 1, 0) xx = input(true, "Include S/R Crosses Into Stop Loss") show_sp = input(true, "Show Count 1-4") sp_ct = 0 inc_sp(x) => nz(x) == 7 ? 1 : nz(x) + 1 sp_up = high > high[2] sp_dn = low < low[2] sp_col = sp_up ? green : red sp_comCol = sp_up ? red : green sp_ct := sp_up ? (nz(sp_up[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : sp_dn ? (nz(sp_dn[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : na sp_com = sp_ct == 7 sp_sr = valuewhen(sp_ct == 5, close, 0) sp_usr = valuewhen(sp_ct == 7 and sp_up, sma(hlc3, 2), 0) sp_usr := sp_usr <= sp_usr[1] * 1.0042 and sp_usr >= sp_usr[1] * 0.9958 ? sp_usr[1] : sp_usr sp_dsr = valuewhen(sp_ct == 7 and sp_dn, sma(hlc3, 2), 0) sp_dsr := sp_dsr <= sp_dsr[1] * 1.0042 and sp_dsr >= sp_dsr[1] * 0.9958 ? sp_dsr[1] : sp_dsr locc = location.abovebar plotchar(show_sp and sp_ct == 1, 'Setup: 1', '1', locc, sp_col, editable=false) plotchar(show_sp and sp_ct == 2, 'Setup: 2', '2', locc, sp_col, editable=false) plotchar(show_sp and sp_ct == 3, 'Setup: 3', '3', locc, sp_col, editable=false) plotchar(show_sp and sp_ct == 4, 'Setup: 4', '4', locc, sp_col, editable=false) plotshape(sp_ct == 5, 'Setup: 5', shape.xcross, locc, sp_comCol, 0, 0, '5', sp_col) plotshape(sp_ct == 6, 'Setup: 6', shape.circle, locc, sp_comCol, 0, 0, '6', sp_col) plotshape(sp_ct == 7, 'Setup: 7', shape.circle, locc, sp_comCol, 0, 0, '7', sp_col) // plot(sp_sr, "5 Count Support/Resistance", gray, 2, 6) plot(sp_usr, "7 Count Resistance", maroon, 2, 6) plot(sp_dsr, "7 Count Support", green, 2, 6) long = (sp_com and sp_dn) short = (sp_com and sp_up) sl_l = xx ? crossunder(close, sp_dsr) or (sp_ct == 5 and sp_up) or short : (sp_ct == 5 and sp_up) or short sl_s = xx ? crossover(close, sp_usr) or (sp_ct == 5 and sp_dn) or long : (sp_ct == 5 and sp_dn) or long strategy.entry('L', 1, when = long) strategy.close('L', when = sl_l) strategy.entry('S', 0, when = short) strategy.close('S', when = sl_s)