Strategi breakout berbasis saluran harga


Tanggal Pembuatan: 2024-01-16 14:22:57 Akhirnya memodifikasi: 2024-01-16 14:22:57
menyalin: 0 Jumlah klik: 664
1
fokus pada
1617
Pengikut

Strategi breakout berbasis saluran harga

Ringkasan

Strategi ini diberi nama strategi penembusan berdasarkan saluran harga, dan ide utamanya adalah menggunakan saluran harga untuk menilai tren dan arah pasar, dan membangun posisi saat harga menembus saluran. Ini akan pertama-tama melukiskan jangkauan saluran harga, dan kemudian menilai apakah garis K muncul dua garis K merah atau hijau berturut-turut, dan menghasilkan sinyal beli atau jual jika garis K terakhir menembus lebih dari setengah saluran dan ditutup di luar saluran.

Prinsip Strategi

Strategi ini menghitung harga tertinggi dan terendah dalam periode tertentu dengan menggunakan fungsi highest (,) dan lowest (,) untuk menentukan tren naik dan turun dari saluran harga. Garis tengah saluran didefinisikan sebagai rata-rata tren naik dan turun. Kemudian menghitung ukuran entitas K-line, dan meluruskan melalui SMA untuk menentukan apakah entitas pada garis K terakhir lebih besar dari setengah dari entitas rata-rata.

Analisis Keunggulan

Ini adalah strategi terobosan untuk menilai tren menggunakan saluran harga. Ini memiliki beberapa keuntungan:

  1. Dengan menggunakan saluran harga untuk menentukan arah tren secara keseluruhan, Anda dapat secara efektif menyaring kebisingan pasar.

  2. Dua garis K berturut-turut menyamakan arah penembusan, menunjukkan kekuatan yang lebih kuat dan tingkat keberhasilan penembusan yang lebih tinggi.

  3. Dengan menilai entitas K-line lebih dari setengah dari entitas rata-rata, dapat dihindari penipuan oleh penembusan palsu.

  4. Logika strategi sederhana, mudah dipahami, dan mudah diterapkan.

  5. Parameter yang dapat disesuaikan seperti siklus saluran, jenis transaksi, waktu transaksi, dan lain-lain.

Analisis risiko

Strategi ini juga memiliki beberapa potensi risiko:

  1. Probabilitas kegagalan penembusan masih ada, yang dapat menyebabkan kerugian.

  2. “Kalau ada perubahan besar, keputusan bisa saja tidak berlaku.

  3. Kurangnya mekanisme penghentian kerugian, tidak mampu mengontrol kerugian secara efektif.

  4. Aturan transaksi yang sederhana, ada risiko over-fitting.

  5. Tidak dapat beradaptasi dengan lingkungan pasar yang lebih kompleks.

Solusi yang sesuai adalah sebagai berikut:

  1. Optimalkan parameter untuk meningkatkan tingkat keberhasilan penembusan.

  2. Ini adalah indikator volatilitas untuk menghindari pergerakan yang tidak stabil.

  3. Tambahkan pengaturan Stop Loss Mobile.

  4. Lakukan tes kompleksitas dan periksa kecocokan

  5. Menambahkan algoritma pembelajaran mesin untuk meningkatkan kemampuan adaptasi strategi.

Arah optimasi

Strategi ini dioptimalkan untuk:

  1. Menambahkan mekanisme stop loss untuk mengendalikan risiko dengan lebih baik. Anda dapat mengatur stop loss reversal harga, atau Anda dapat menggunakan indikator seperti ATR untuk mengatur stop loss bergerak.

  2. Parameter optimasi, seperti siklus saluran, parameter lebar terobosan, dll. Parameter optimal dapat ditemukan melalui algoritma genetik, pencarian grid, dll.

  3. Menambahkan kondisi penyaringan, meningkatkan kepastian terobosan. Misalnya, dapat digabungkan dengan volume transaksi untuk mengkonfirmasi terobosan.

  4. Menambahkan model pembelajaran mesin, menggunakan lebih banyak data untuk meningkatkan kemampuan prediktif dan adaptasi strategi. Pembelajaran mendalam seperti LSTM dapat menangkap pola yang lebih kompleks.

  5. Mengoptimalkan kombinasi, menggabungkan berbagai jenis strategi terobosan, mencapai ortogonal, mengurangi kesamaan.

Meringkaskan

Secara keseluruhan, strategi ini adalah strategi kuantitatif yang didasarkan pada penilaian tren saluran harga dan menemukan sinyal penembusan. Ini memiliki penilaian tren dan mengkonfirmasi keuntungan dari penembusan, tetapi ada juga risiko penembusan palsu. Kita dapat memperbaiki strategi dengan cara mengoptimalkan parameter, mengatur stop loss, menambahkan filter kondisi, dan sebagainya.

Kode Sumber Strategi
/*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"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.0", shorttitle = "Price Channel str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
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")
src = close

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Signals
body = abs(close - open)
abody = sma(body, 10)
up = rbars and close > center and body > abody / 2
dn = gbars and close < center and body > abody / 2
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()