Strategi pembalikan tren yang dinamis

Penulis:ChaoZhang, Tanggal: 2024-01-16 15:35:18
Tag:

img

Gambaran umum

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:

  1. Gunakan harga tertinggi dan terendah daripada harga dekat untuk menentukan tren, yang dapat menangkap perubahan harga lebih cepat.
  2. Jumlah counter maksimum adalah 7 alih-alih 9, memungkinkan generasi sinyal perdagangan yang lebih cepat.
  3. Tambahkan opsi untuk garis support/resistance dan 5 count reversals sebagai stop loss.

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 Strategi

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:

  • sp_up: benar ketika harga tertinggi saat ini melebihi harga tertinggi 2 periode lalu
  • sp_dn: benar ketika harga rendah saat ini turun di bawah harga rendah 2 periode lalu
  • sp_ct: hitungan saat ini, peningkatan sebesar 1 setiap kali sp_up atau sp_dn benar, dengan maksimum 7
  • sp_com: benar ketika hitungan sama dengan 7
  • sp_usr: harga tengah pada hitungan 7 dan sp_up, berfungsi sebagai resistance upside
  • sp_dsr: harga tengah pada hitungan 7 dan sp_dn, berfungsi sebagai dukungan ke bawah

Logika untuk generasi sinyal perdagangan adalah:

  • Sinyal panjang: sp_com benar dan sp_dn benar, menunjukkan penyelesaian hitungan dan tren penurunan
  • Sinyal pendek: sp_com benar dan sp_up benar, menunjukkan penyelesaian hitungan dan tren naik

Logika stop loss adalah:

  • Long SL: pembalikan hitungan ke 5 (sp_up true) atau harga melintasi di atas sp_usr
  • SL pendek: pembalikan hitungan ke 5 (sp_dn true) atau penyeberangan harga di bawah sp_dsr

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.

Analisis Keuntungan

Dibandingkan dengan strategi JD Sequential tradisional, Strategi Pembalikan Pengamatan Tren Dinamis memiliki keuntungan berikut:

  1. Penggunaan perbandingan tinggi/rendah lebih cepat daripada harga dekat dalam menangkap tren, dan hitungan 7 menghasilkan sinyal lebih cepat daripada hitungan 9.
  2. Mekanisme stop loss yang ditingkatkan. Penambahan pembalikan 5-count dan support/resistance stop loss memungkinkan kontrol risiko yang lebih baik.
  3. Konfigurasi yang fleksibel. Pilihan untuk menyertakan stop loss dan menampilkan hitungan parsial menambah fleksibilitas.
  4. Sinyal frekuensi tinggi dikombinasikan dengan stop loss yang tepat sesuai dengan kerangka waktu jangka pendek.

Keuntungan utama dari strategi ini adalah respon yang cepat, yang dapat secara efektif menangkap fluktuasi besar yang disebabkan oleh peristiwa jangka pendek.

Analisis Risiko

Strategi pembalikan tren dinamika juga membawa beberapa risiko:

  1. Peningkatan biaya perdagangan dari perdagangan frekuensi tinggi.
  2. Kemungkinan sinyal yang salah. Membandingkan puncak dan terendah di pasar yang berbeda seringkali dapat memicu perdagangan dan kerugian yang tidak dibenarkan.
  3. Stop yang berpotensi agresif. Hard stop rentan terhadap lonjakan dan harus disesuaikan dengan tepat waktu.

Untuk mengurangi risiko di atas, strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengurangi ukuran posisi untuk mengurangi penggunaan modal per perdagangan.
  2. Hentikan perdagangan selama pasar bergolak/bervariasi untuk menghindari perdagangan yang tidak efektif.
  3. Gunakan stop trailing atau stop breakout untuk mengurangi kemungkinan terperangkap.

Arahan Optimasi

Ada ruang yang cukup untuk Strategi Pembalikan Tren Dinamis untuk dioptimalkan lebih lanjut, terutama di arah berikut:

  1. Mengidentifikasi arah tren utama pada jangka waktu yang lebih tinggi untuk menghindari perdagangan terhadapnya.

  2. Kombinasi dengan indikator lain: sertakan metrik volatilitas, data volume, dll untuk meningkatkan kualitas sinyal.

  3. Pembelajaran mesin untuk validasi tambahan. Menggunakan algoritma AI / ML sebagai penilaian tambahan pada sinyal perdagangan untuk mengurangi perdagangan yang salah.

  4. Optimalkan parameter seperti periode hitungan, sesi perdagangan, ukuran posisi dll untuk menyesuaikan kondisi pasar yang berbeda.

  5. Memperluas mekanisme pengendalian risiko. Memperkenalkan teknik manajemen risiko yang lebih canggih seperti berhenti adaptif, ukuran posisi dll untuk lebih membatasi risiko.

  6. Evaluasi strategi melalui backtesting Memperluas ukuran sampel dan kerangka waktu untuk backtest untuk mengukur ketahanan parameter.

Kesimpulan

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)

Lebih banyak