Chiến lược kết hợp mô hình nến đa mô hình

Tác giả:ChaoZhang, Ngày: 2023-10-17 15:53:06
Tags:

img

Tổng quan

Chiến lược này kết hợp nhiều mô hình mẫu nến để giao dịch cổ phiếu. Nó kết hợp mô hình nuốt chửng, mô hình harami và mô hình chéo harami để nắm bắt các cơ hội giao dịch trong các điều kiện thị trường khác nhau.

Nguyên tắc

Logic cốt lõi của chiến lược này là xây dựng một số quy tắc nhận dạng mẫu nến và sau đó tạo ra các tín hiệu giao dịch bằng cách kết hợp các quy tắc này.

Đầu tiên, nó xác định một số biến cơ bản để mô tả các thuộc tính của nến như kích thước thân nến, giá mở, giá đóng vv.

Sau đó dựa trên mối quan hệ giữa giá đóng cửa và giá mở cửa, nó xác định 3 loại thanh giao dịch: 1 cho tăng, -1 cho giảm và 0 cho không thay đổi.

Trên cơ sở này, 3 quy tắc nhận dạng mẫu nến được xây dựng:

  1. Mô hình ngập: nến hiện tại ngập nến trước đó, tạo ra tín hiệu mua hoặc bán.

  2. Mô hình Harami: nến trước đó nuốt chửng nến hiện tại, tạo ra tín hiệu mua hoặc bán.

  3. Harami Cross Pattern: sự kết hợp của Harami và Doji, tạo ra tín hiệu mua hoặc bán.

Theo các mẫu nến này, thời gian mua và bán có thể được xác định. Một số điều kiện bổ sung được kết hợp để lọc ra các tín hiệu không hợp lệ, như giới hạn khoảng thời gian giao dịch.

Logic giao dịch kiểm tra vị trí hiện tại trước. Nếu mâu thuẫn với hướng tín hiệu, nó sẽ đóng vị trí hiện tại trước, sau đó mở vị trí mới theo tín hiệu.

Ưu điểm

  • Sự kết hợp tăng cường sự ổn định. Mô hình duy nhất dễ bị ảnh hưởng bởi các điều kiện thị trường cụ thể. Sự kết hợp có thể cải thiện độ tin cậy.

  • Xác nhận cải thiện độ chính xác, các mô hình khác nhau xác minh lẫn nhau, các tín hiệu sai có thể tránh được.

  • Sự linh hoạt: Người dùng có thể tự do kết hợp các mô hình và điều chỉnh các tham số cho các động lực thị trường khác nhau.

  • Kiểm soát rủi ro. dừng lỗ và vị trí xử lý logic quản lý rủi ro hiệu quả.

Rủi ro

  • Sự phức tạp. Nhiều thông số có nghĩa là phức tạp hơn. Sự kết hợp không đúng có thể làm suy yếu hiệu suất.

  • Điều chỉnh tham số đòi hỏi chuyên môn. Làm thế nào để thiết lập các tham số mẫu thích hợp cần kinh nghiệm.

  • Một bên nắm giữ rủi ro. dài hoặc ngắn chỉ giới hạn tiềm năng lợi nhuận. cho phép cả dài và ngắn có thể giúp.

  • Không có điểm đảo ngược. Tập trung vào các mô hình làm mất đi các tín hiệu đảo ngược xu hướng. Thêm các chỉ số khác có thể giúp xác định các điểm đảo ngược tiềm năng.

Tăng cường

  • Thêm stop loss để giảm rủi ro nắm giữ.

  • Kết hợp các chỉ số kỹ thuật khác để xác định xu hướng tổng thể, tránh giao dịch chống lại xu hướng chính. ví dụ: MACD, Bollinger Band vv

  • Thử nghiệm các tham số mô hình trên các sản phẩm khác nhau, thiết lập các bộ tham số tối ưu phù hợp với mỗi sản phẩm.

  • giới thiệu máy học để giúp tối ưu hóa các thông số và nhận dạng mẫu bằng AI.

Kết luận

Chiến lược này xây dựng một hệ thống giao dịch ngắn hạn tương đối ổn định bằng cách kết hợp nhiều mô hình nến. Nhưng điều chỉnh tham số và kiểm soát rủi ro vẫn cần cải tiến để thích nghi với các thị trường phức tạp hơn. Nhìn chung nó có logic vững chắc và có tiềm năng lớn sau khi tích lũy đủ dữ liệu và kinh nghiệm, và tận dụng máy học cho tối ưu hóa thông minh.


/*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()

Thêm nữa