Strategi Tren Adaptif Saluran Donchian

Penulis:ChaoZhangTanggal: 2023-10-26 15:58:52
Tag:

img

Gambaran umum

Strategi ini menggunakan indikator Saluran Donchian untuk melacak tren pasar secara adaptif untuk perdagangan tren.

Logika Strategi

  1. Menghitung tertinggi tertinggi dan terendah terendah selama periode tertentu untuk membentuk Saluran Donchian.

  2. Buka posisi panjang ketika harga menembus band atas saluran. Buka posisi pendek ketika harga menembus band bawah.

  3. Setelah membuka posisi, stop loss melacak garis tengah saluran. mengambil keuntungan melacak harga keluar dari saluran dengan persentase tertentu.

  4. Potong kerugian dan tutup posisi ketika harga jatuh kembali ke saluran.

Analisis Keuntungan

  1. Strategi ini memanfaatkan Saluran Donchian untuk menentukan arah tren dan dengan cepat menangkap breakout.

  2. Menggunakan saluran garis tengah untuk trailing stop loss melindungi keuntungan.

  3. Target keuntungan diperkuat sesuai dengan persentase keuntungan yang ditentukan pengguna.

  4. Ini beradaptasi dengan kondisi pasar yang berbeda seperti konsolidasi, breakout, pullback, dll, dan menyesuaikan ukuran posisi secara fleksibel.

  5. Logika perdagangan yang sederhana dan jelas, mudah dipahami dan dikuasai.

Analisis Risiko

  1. Strategi hanya memperdagangkan keluar dan tidak dapat secara efektif menangani konsolidasi.

  2. Ada risiko sinyal pecah palsu, indikator lain diperlukan untuk verifikasi.

  3. Pengaturan stop loss dan take profit yang tidak tepat dapat menyebabkan keluar prematur atau keuntungan yang tidak cukup.

  4. Pengaturan periode saluran yang salah mempengaruhi akurasi sinyal perdagangan.

  5. Ukuran posisi yang berlebihan memperkuat risiko fluktuasi pasar.

  6. Ada risiko gangguan robot yang tak terduga, memastikan keandalan sistem.

Arah Peningkatan

  1. Tambahkan indikator volume untuk menghindari mengejar kebocoran palsu.

  2. Tingkatkan filter indikator tren untuk meningkatkan akurasi sinyal masuk.

  3. Mengoptimalkan stop loss dinamis dan mengambil algoritma keuntungan.

  4. Sesuaikan ukuran strategi posisi berdasarkan kondisi pasar real-time.

  5. Penelitian data overnight dan pre-market untuk waktu masuk yang lebih baik.

  6. Uji periode parameter yang berbeda untuk menemukan kombinasi optimal.

  7. Tambahkan validasi model untuk mencegah overfit.

Kesimpulan

Secara keseluruhan, ini adalah strategi tren yang mudah dan praktis. Ini memiliki keuntungan seperti dengan cepat menangkap trend breakout dan melindungi keuntungan. Ini juga memiliki kekurangan seperti ketidakefektifan selama konsolidasi dan kerugian dari breakout palsu. Perbaikan di masa depan terletak pada menggabungkan lebih banyak penyaringan sinyal, stop loss / take profit dinamis, untuk beradaptasi dengan kondisi pasar yang lebih banyak.


/*backtest
start: 2022-10-19 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2020

//@version=4
strategy(title = "Noro's Donchian Strategy", shorttitle = "Donchian str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
tp = input(defval = 10, minval = 1, title = "Take profit")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
pclen = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showbg = input(false, defval = false, title = "Show Background")
showof = input(true, defval = true, title = "Show Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price Channel
h = highest(high, pclen)
l = lowest(low, pclen)
center = (h + l) / 2
tpl = h * (100 + tp) / 100
tps = l * (100 - tp) / 100

//Lines
tpcol = showll ? color.lime : na
pccol = showll ? color.blue : na
slcol = showll ? color.red : na
offset = showof ? 1 : 0
plot(tpl, offset = offset, color = tpcol, title = "TP Long")
plot(h, offset = offset, color = pccol, title = "Channel High")
plot(center, offset = offset, color = slcol, title = "Cannel Center")
plot(l, offset = offset, color = pccol, title = "Channel Low")
plot(tps, offset = offset, color = tpcol, title = "TP Short")

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
mo = 0
mo := strategy.position_size != 0 ? 0 : high >= center and low <= center ? 1 : mo[1]
if h > 0
    strategy.entry("Long", strategy.long, lot, stop = h, when = strategy.position_size <= 0 and needlong and truetime and mo)
    strategy.exit("TP Long", "Long", limit = tpl, stop = center)
    strategy.entry("Short", strategy.short, lot, stop = l, when = strategy.position_size >= 0 and needshort and truetime and mo)
    strategy.exit("TP Short", "Short", limit = tps, stop = center)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

Lebih banyak