Strategi Reversal Trend Tracking Dinamis adalah strategi perdagangan kuantitatif jangka pendek berdasarkan indikator JD Sequential. Dengan melacak harga tertinggi dan terendah secara real time, strategi ini menentukan arah dan momentum tren saat ini untuk secara efisien menangkap titik pembalikan pasar untuk waktu masuk dan keluar. Dibandingkan dengan strategi JD Sequential tradisional, strategi ini membuat peningkatan berikut:
Strategi ini cocok untuk kerangka waktu jangka pendek seperti grafik 5 menit dan 15 menit, yang dapat secara efektif menangkap fluktuasi harga jangka pendek dan peluang pembalikan.
Logika inti dari Strategi Pembalikan Pelacakan Tren Dinamis didasarkan pada indikator berurutan JD. Dengan membandingkan harga tertinggi dan terendah periode saat ini dengan dua periode sebelumnya, indikator ini menentukan apakah terjadi kenaikan tinggi atau penurunan rendah berturut-turut, dan menghasilkan hitungan berurutan dari 1 hingga 7. Ketika hitungan terakumulasi menjadi 7, sinyal perdagangan dihasilkan.
Secara khusus, variabel berikut didefinisikan dalam strategi:
Logika untuk generasi sinyal perdagangan adalah:
Logika stop loss adalah:
Dengan membandingkan titik tinggi/rendah secara real-time untuk menentukan arah dan kekuatan tren, bersama dengan waktu masuk berdasarkan hitungan, strategi ini dapat secara efektif menangkap peluang pembalikan jangka pendek.
Dibandingkan dengan strategi JD Sequential tradisional, Strategi Pembalikan Pengamatan Tren Dinamis memiliki keuntungan berikut:
Keuntungan utama dari strategi ini adalah respon yang cepat, yang dapat secara efektif menangkap fluktuasi besar yang disebabkan oleh peristiwa jangka pendek.
Strategi pembalikan tren dinamika juga membawa beberapa risiko:
Untuk mengurangi risiko di atas, strategi dapat dioptimalkan dalam aspek berikut:
Ada ruang yang cukup untuk Strategi Pembalikan Tren Dinamis untuk dioptimalkan lebih lanjut, terutama di arah berikut:
Mengidentifikasi arah tren utama pada jangka waktu yang lebih tinggi untuk menghindari perdagangan terhadapnya.
Kombinasi dengan indikator lain: sertakan metrik volatilitas, data volume, dll untuk meningkatkan kualitas sinyal.
Pembelajaran mesin untuk validasi tambahan. Menggunakan algoritma AI / ML sebagai penilaian tambahan pada sinyal perdagangan untuk mengurangi perdagangan yang salah.
Optimalkan parameter seperti periode hitungan, sesi perdagangan, ukuran posisi dll untuk menyesuaikan kondisi pasar yang berbeda.
Memperluas mekanisme pengendalian risiko. Memperkenalkan teknik manajemen risiko yang lebih canggih seperti berhenti adaptif, ukuran posisi dll untuk lebih membatasi risiko.
Evaluasi strategi melalui backtesting Memperluas ukuran sampel dan kerangka waktu untuk backtest untuk mengukur ketahanan parameter.
Strategi Pembalikan Pelacakan Tren Dinamis menangkap peluang pembalikan jangka pendek melalui perbandingan harga tertinggi dan terendah secara real-time untuk menentukan arah dan kekuatan tren, bersama dengan aturan 7-count dalam indikator JD Sequential untuk waktu perdagangan.
Kekuatan utama dari strategi ini terletak pada respon cepat yang cocok untuk perdagangan pembalikan jangka pendek. Pada saat yang sama, risiko seperti frekuensi perdagangan tinggi dan berhenti agresif memang ada. Arah optimasi masa depan termasuk penyesuaian parameter, peningkatan kontrol risiko, kombinasi multi-frame, dll. Melalui optimasi dan iterasi terus-menerus, strategi ini memiliki potensi untuk menjadi alat yang ampuh untuk menangkap sinyal pembalikan jangka pendek secara efisien.
/*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)