Chiến lược phá vỡ kênh giá

Tác giả:ChaoZhang, Ngày: 2024-01-16 14:22:57
Tags:

img

Chiến lược này được gọi là Chiến lược Breakout kênh giá. Ý tưởng chính của nó là sử dụng kênh giá để xác định xu hướng và hướng thị trường và thiết lập vị trí khi giá vượt ra khỏi kênh. Nó sẽ đầu tiên vẽ phạm vi kênh giá, sau đó đánh giá xem có hai đường K màu đỏ hoặc xanh lá cây liên tiếp hay không. Nếu đường K cuối cùng vượt qua một nửa chiều rộng kênh và đóng bên ngoài kênh, nó sẽ tạo ra tín hiệu mua hoặc bán.

Chiến lược logic

Chiến lược này tính toán mức cao nhất và thấp nhất trong một khoảng thời gian nhất định trong quá khứ bằng cách sử dụng hàm cao nhất và thấp nhất để xác định đường ray trên và dưới của kênh giá. Điểm trung tâm của kênh được định nghĩa là mức trung bình của đường ray trên và dưới. Sau đó, nó tính toán kích thước cơ thể đường K và làm mịn nó bằng cách sử dụng SMA để xác định xem cơ thể đường K cuối cùng có lớn hơn một nửa cơ thể trung bình không. Nó cũng đánh giá xem hai đường K cuối cùng có ở cùng một hướng (hai đường đỏ hoặc xanh lá cây liên tiếp) hay không. Khi các điều kiện này được đáp ứng, nó tạo ra tín hiệu mua / bán và đóng các vị trí khi giá giảm trở lại hướng kênh.

Phân tích lợi thế

Đây là một chiến lược phá vỡ sử dụng kênh giá để đánh giá xu hướng tổng thể.

  1. Sử dụng kênh giá để xác định hướng xu hướng tổng thể có thể lọc hiệu quả tiếng ồn thị trường.

  2. Hai đường K liên tiếp xuyên qua kênh theo cùng một hướng cho thấy động lực mạnh hơn và tỷ lệ thành công cao hơn.

  3. Đánh giá K-line cơ thể lớn hơn một nửa cơ thể trung bình có thể tránh bị đánh lừa bởi sự đột phá sai.

  4. Lý thuyết chiến lược đơn giản và dễ thực hiện.

  5. Các tham số có thể tùy chỉnh như thời gian kênh, sản phẩm giao dịch, giờ giao dịch vv làm cho nó rất thích nghi.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro tiềm ẩn:

  1. Vẫn có khả năng thất bại, có thể dẫn đến tổn thất.

  2. Kênh giá có thể thất bại khi thị trường biến động mạnh mẽ.

  3. Thiếu cơ chế dừng lỗ không kiểm soát hiệu quả lỗ.

  4. Các quy tắc giao dịch đơn giản có rủi ro quá phù hợp.

  5. Không thể thích nghi với môi trường thị trường phức tạp hơn.

Các giải pháp tương ứng là:

  1. Tối ưu hóa các thông số để cải thiện tỷ lệ thành công của việc thoát khỏi.

  2. Thêm chỉ số biến động để tránh thị trường hỗn loạn.

  3. Thêm stop loss di động.

  4. Thực hiện thử nghiệm độ phức tạp để kiểm tra quá tải.

  5. Tăng các mô hình học máy để cải thiện khả năng thích nghi.

Hướng dẫn tối ưu hóa

Các hướng tối ưu hóa chính là:

  1. Thêm cơ chế dừng lỗ để kiểm soát rủi ro tốt hơn.

  2. Tối ưu hóa các tham số như thời gian kênh, ngưỡng thoát vv Tìm các tham số tối ưu thông qua thuật toán di truyền, tìm kiếm lưới vv

  3. Thêm các điều kiện lọc để cải thiện độ chắc chắn của sự phá vỡ. Ví dụ, kết hợp khối lượng giao dịch để xác nhận sự phá vỡ.

  4. Thêm các mô hình học máy như LSTM để cải thiện khả năng dự đoán và thích nghi bằng cách sử dụng nhiều dữ liệu hơn.

  5. Thực hiện tối ưu hóa danh mục đầu tư, kết hợp các loại chiến lược đột phá khác nhau để đạt được sự thẳng đứng và giảm sự tương đồng.

Kết luận

Kết luận, đây là một chiến lược định lượng dựa trên kênh giá để xác định xu hướng và phát hiện tín hiệu đột phá. Nó có lợi thế đánh giá xu hướng và xác nhận đột phá, nhưng cũng có một số rủi ro đột phá sai. Chúng ta có thể cải thiện chiến lược bằng cách tối ưu hóa tham số, dừng lỗ, thêm bộ lọc vv để giảm rủi ro. Trong khi đó, giới thiệu các mô hình học máy có thể tăng thêm khả năng dự đoán. Nhìn chung, đây là một cách tiếp cận chiến lược định lượng hứa hẹn đáng nghiên cứu và cải thiện.


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

Thêm nữa