Strategi Gabungan corak candlestick pelbagai model

Penulis:ChaoZhang, Tarikh: 2023-10-17 15:53:06
Tag:

img

Ringkasan

Strategi ini menggabungkan pelbagai model corak lilin untuk berdagang saham. Ia menggabungkan corak menelan, corak harami dan corak salib harami untuk menangkap peluang perdagangan dalam keadaan pasaran yang berbeza.

Prinsip

Logik teras strategi ini adalah untuk membina beberapa peraturan pengenalan corak lilin dan kemudian menjana isyarat perdagangan dengan menggabungkan peraturan ini.

Pertama, ia mentakrifkan beberapa pembolehubah asas untuk menerangkan sifat candlestick seperti saiz badan lilin, harga buka, harga tutup dan lain-lain.

Kemudian berdasarkan hubungan antara harga penutupan dan harga pembukaan, ia mentakrifkan 3 jenis bar perdagangan: 1 untuk naik, -1 untuk jatuh dan 0 untuk tiada perubahan.

Atas asas ini, 3 peraturan pengenalan corak candlestick dibina:

  1. Corak Menelan: lilin semasa menelan yang sebelumnya, menghasilkan isyarat beli atau jual.

  2. Harami Pattern: lilin sebelumnya menelan lilin semasa, menghasilkan isyarat beli atau jual.

  3. Harami Cross Pattern: gabungan Harami dan Doji, menghasilkan isyarat beli atau jual.

Mengikut corak lilin ini, masa membeli dan menjual boleh ditentukan. Beberapa syarat tambahan digabungkan untuk menapis isyarat yang tidak sah, seperti had jangka masa perdagangan.

Logik perdagangan memeriksa kedudukan yang ada terlebih dahulu. Jika bertentangan dengan arah isyarat, ia akan menutup kedudukan semasa terlebih dahulu, kemudian membuka kedudukan baru mengikut isyarat.

Kelebihan

  • Gabungan meningkatkan kestabilan. corak tunggal terdedah kepada keadaan pasaran tertentu. Gabungan boleh meningkatkan kebolehpercayaan.

  • Pengesahan meningkatkan ketepatan. corak yang berbeza mengesahkan satu sama lain. isyarat palsu dapat dielakkan.

  • Fleksibiliti: Pengguna boleh menggabungkan model secara bebas dan menyesuaikan parameter untuk dinamik pasaran yang berbeza.

  • Pengendalian risiko. Stop loss dan logik pengendalian kedudukan menguruskan risiko dengan berkesan.

Risiko

  • Kompleksiti. Lebih banyak parameter bermakna lebih kompleks. Gabungan yang tidak betul boleh melemahkan prestasi.

  • Pengaturan parameter memerlukan kepakaran. Cara menetapkan parameter corak yang betul memerlukan pengalaman.

  • Risiko memegang satu sisi. panjang atau pendek hanya mengehadkan potensi keuntungan. membenarkan kedua-dua panjang dan pendek boleh membantu.

  • Kelemahan titik pembalikan. Memfokuskan pada corak kehilangan pandangan isyarat pembalikan trend. Menambah penunjuk lain dapat membantu mengenal pasti titik pembalikan yang berpotensi.

Peningkatan

  • Tambah stop loss untuk mengurangkan risiko pegangan.

  • Menggabungkan penunjuk teknikal lain untuk menentukan trend keseluruhan, mengelakkan perdagangan terhadap trend utama.

  • Uji parameter model di pelbagai produk, tentukan set parameter optimum yang sesuai dengan setiap produk.

  • Memperkenalkan pembelajaran mesin untuk membantu mengoptimumkan parameter dan pengenalan corak menggunakan AI.

Kesimpulan

Strategi ini membina sistem perdagangan jangka pendek yang agak stabil dengan menggabungkan pelbagai corak lilin. Tetapi penyesuaian parameter dan kawalan risiko masih memerlukan penambahbaikan untuk menyesuaikan pasaran yang lebih kompleks. Secara keseluruhan ia mempunyai logika yang kukuh dan mempunyai potensi yang besar selepas mengumpulkan data dan pengalaman yang mencukupi, dan memanfaatkan pembelajaran mesin untuk pengoptimuman pintar.


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

//Noro
//2018

//@version=3
strategy(title = "Noro's CandleModels Tests", shorttitle = "CandleModels tests", 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")

eng = input(true, defval = true, title = "Model Engulfing")
har = input(true, defval = true, title = "Model Harami")
harc = input(true, defval = true, title = "Model Harami Cross")

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")
rev = input(false, defval = false, title = "Reversive trading")

//Body
body = abs(close - open)
abody = sma(body, 10)

//MinMax Bars
min = min(close, open)
max = max(close, open)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
doji = body < abody / 10
up1 = eng and bar == 1 and bar[1] == -1 and min <= min[1] and max >= max[1]
dn1 = eng and bar == -1 and bar[1] == 1 and min <= min[1] and max >= max[1]
up2 = har and bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1]
dn2 = har and bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1]
up3 = harc and doji and bar[1] == -1 and low >= min[1] and high <= max[1]
dn3 = harc and doji and bar[1] == 1 and low >= min[1] and high <= max[1]
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body > abody / 2 and rev == false

//Trading
if up1 or up2 or up3
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2 or dn3
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Lebih lanjut