Chiến lược này được đặt tên là chiến lược phá vỡ dựa trên kênh giá, ý tưởng chính của nó là sử dụng kênh giá để đánh giá xu hướng và hướng của thị trường, thiết lập vị trí khi giá vượt qua kênh. Nó sẽ vẽ ra phạm vi kênh của giá trước tiên, sau đó đánh giá xem có hai đường K liên tiếp xuất hiện không.
Chiến lược này tính toán giá cao nhất và giá thấp nhất trong một chu kỳ nhất định trong quá khứ bằng các hàm highest () và lowest () để xác định đường lên xuống của kênh giá. Đường trung tâm của kênh được định nghĩa là đường trung bình của đường lên xuống. Sau đó, tính kích thước của thực thể K và làm mịn thông qua SMA để xác định xem thực thể K cuối cùng có lớn hơn một nửa thực thể trung bình hay không.
Đây là một chiến lược đột phá sử dụng các kênh giá để xác định xu hướng. Nó có một số lợi thế:
Sử dụng kênh giá để đánh giá xu hướng tổng thể, bạn có thể lọc hiệu quả tiếng ồn thị trường.
Hai đường K liên tiếp đồng hướng dẫn đột phá, cho thấy động lực mạnh hơn, tỷ lệ đột phá thành công cao hơn.
Xác định thực thể K-line là hơn một nửa thực thể trung bình, có thể tránh bị lừa bởi đột phá giả.
Lập luận của chiến lược rất đơn giản, dễ hiểu và dễ thực hiện.
Các tham số có thể tùy chỉnh như chu kỳ kênh, loại giao dịch, thời gian giao dịch, v.v.
Chiến lược này cũng có một số rủi ro tiềm ẩn:
Có khả năng phá vỡ sẽ không thành công và có thể gây thiệt hại.
Trong trường hợp có sự biến động mạnh, sự phán đoán có thể không hiệu quả.
Không có cơ chế ngăn chặn thiệt hại, không thể kiểm soát thiệt hại hiệu quả.
Các quy tắc giao dịch đơn giản, có nguy cơ quá phù hợp.
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à:
Tối ưu hóa các tham số, tăng tỷ lệ đột phá.
Tham gia chỉ số biến động để tránh biến động.
Thêm thiết lập dừng lỗ di động.
Kiểm tra độ phức tạp, kiểm tra sự phù hợp.
Tăng các thuật toán học máy và cải thiện khả năng thích ứng của chiến lược.
Chiến lược này được tối ưu hóa bởi:
Tăng cơ chế dừng lỗ, kiểm soát rủi ro tốt hơn. Có thể thiết lập dừng giá quay trở lại, hoặc có thể sử dụng chỉ số như ATR để thiết lập dừng di chuyển.
Các tham số tối ưu hóa, chẳng hạn như chu kỳ đường dẫn, tham số độ rộng đột phá, v.v.
Thêm các điều kiện lọc, tăng độ chắc chắn của đột phá. Ví dụ, có thể kết hợp với khối lượng giao dịch để xác nhận đột phá.
Thêm mô hình học máy, sử dụng nhiều dữ liệu hơn để cải thiện khả năng dự đoán và khả năng thích ứng của chiến lược. Học sâu như LSTM có thể nắm bắt các mô hình phức tạp hơn.
Tối ưu hóa kết hợp, kết hợp các loại chiến lược đột phá khác nhau, thực hiện giao tiếp thẳng và giảm sự tương đồng.
Chiến lược này nói chung là một chiến lược định lượng dựa trên xu hướng phán đoán kênh giá, phát hiện các tín hiệu phá vỡ. Nó có xu hướng phán đoán, xác nhận lợi thế của phá vỡ, nhưng cũng có một số rủi ro phá vỡ giả.
/*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()