Strategi kombinasi pola candlestick multi-model

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

img

Gambaran umum

Strategi ini menggabungkan beberapa model pola lilin untuk memperdagangkan saham.

Prinsip

Logika inti dari strategi ini adalah membangun beberapa aturan pengenalan pola lilin dan kemudian menghasilkan sinyal perdagangan dengan menggabungkan aturan ini.

Pertama, ia mendefinisikan beberapa variabel dasar untuk menggambarkan sifat candlestick seperti ukuran tubuh lilin, harga buka, harga tutup dll.

Kemudian berdasarkan hubungan antara harga penutupan dan harga pembukaan, ia mendefinisikan 3 jenis bar perdagangan: 1 untuk naik, -1 untuk turun dan 0 untuk tidak ada perubahan.

Atas dasar ini, 3 aturan pengenalan pola candlestick dibangun:

  1. Pola Menelan: lilin saat ini menelan yang sebelumnya, menghasilkan sinyal beli atau jual.

  2. Pola Harami: lilin sebelumnya menelan yang saat ini, menghasilkan sinyal beli atau jual.

  3. Harami Cross Pattern: kombinasi Harami dan Doji, menghasilkan sinyal beli atau jual.

Menurut pola lilin ini, waktu pembelian dan penjualan dapat ditentukan. Beberapa kondisi tambahan dikombinasikan untuk menyaring sinyal yang tidak valid, seperti batas rentang waktu perdagangan.

Logika perdagangan memeriksa posisi yang ada terlebih dahulu. Jika bertentangan dengan arah sinyal, itu akan menutup posisi saat ini terlebih dahulu, kemudian membuka posisi baru sesuai dengan sinyal.

Keuntungan

  • Kombinasi meningkatkan stabilitas. Pola tunggal rentan terhadap kondisi pasar tertentu. Kombinasi dapat meningkatkan keandalan.

  • Konfirmasi meningkatkan keakuratan. pola yang berbeda saling memverifikasi. sinyal palsu dapat dihindari.

  • Fleksibilitas: Pengguna dapat secara bebas menggabungkan model dan menyesuaikan parameter untuk dinamika pasar yang berbeda.

  • Stop loss dan posisi manajemen logika mengelola risiko secara efektif.

Risiko

  • Kompleksitas. Lebih banyak parameter berarti lebih kompleks. Kombinasi yang tidak tepat dapat merusak kinerja.

  • Pengaturan parameter membutuhkan keahlian. Cara mengatur parameter pola yang tepat membutuhkan pengalaman.

  • risiko kepemilikan satu sisi. panjang atau pendek hanya membatasi potensi keuntungan. memungkinkan baik panjang dan pendek dapat membantu.

  • Merupakan titik pembalikan yang hilang. Memfokuskan pada pola kehilangan sinyal pembalikan tren. Menambahkan indikator lain dapat membantu mengidentifikasi titik pembalikan potensial.

Peningkatan

  • Tambahkan stop loss untuk mengurangi risiko kepemilikan.

  • Masukkan indikator teknis lainnya untuk menentukan tren keseluruhan, menghindari perdagangan melawan tren utama.

  • Uji parameter model di berbagai produk, tentukan set parameter optimal yang sesuai dengan setiap produk.

  • Memperkenalkan pembelajaran mesin untuk membantu mengoptimalkan parameter dan pengenalan pola menggunakan AI.

Kesimpulan

Strategi ini membangun sistem perdagangan jangka pendek yang relatif stabil dengan menggabungkan beberapa pola candlestick. Tapi penyesuaian parameter dan pengendalian risiko masih perlu ditingkatkan untuk beradaptasi dengan pasar yang lebih kompleks. Secara keseluruhan, strategi ini memiliki logika yang solid dan memiliki potensi besar setelah mengumpulkan data dan pengalaman yang cukup, dan memanfaatkan pembelajaran mesin untuk optimasi cerdas.


/*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 banyak