
Adaptive Channel Breakout Strategy là một chiến lược theo dõi xu hướng của kênh giá trên thị trường. Nó xác định kênh giá bằng cách tính toán giá cao nhất và thấp nhất trong một chu kỳ nhất định và phát ra tín hiệu giao dịch khi giá phá vỡ kênh.
Lợi thế của chiến lược này là có thể tự động thích ứng với sự thay đổi của thị trường, lọc tiếng ồn bằng cách mở rộng kênh và tạo tín hiệu giao dịch khi xu hướng rõ ràng. Tuy nhiên, cũng có nguy cơ theo đuổi cao và giảm. Bằng cách tối ưu hóa tham số, bạn có thể giảm giao dịch không cần thiết và tăng tỷ lệ lợi nhuận.
Chiến lược này dựa trên lý thuyết phá vỡ cổng. Nó đồng thời tính toán giá cao nhất và giá thấp nhất của hai nhóm chu kỳ khác nhau (dài thời gian vào thị trường và dài thời gian ra thị trường) để tạo ra cổng.
Cụ thể, chiến lược này tính toán giá cao nhất và giá thấp nhất trong vòng 20 chu kỳ (dòng dài nhập thị trường) để tạo ra một kênh giá. Sau đó, nó tính toán giá cao nhất và giá thấp nhất trong vòng 10 chu kỳ (dòng dài xuất thị trường).
Khi giá phá vỡ kênh, cho thấy xu hướng đang hình thành, chiến lược sẽ phát tín hiệu giao dịch. Đồng thời, đường dừng dừng lỗ cũng sẽ điều chỉnh theo giá thay đổi, do đó khóa lợi nhuận và tránh thua lỗ.
Chiến lược này có những rủi ro:
Chiến lược này cũng có thể được tối ưu hóa như sau:
Chiến lược đột phá kênh tự điều chỉnh có ý tưởng tổng thể rõ ràng và khả năng thực hiện mạnh mẽ. Nó có thể tự động theo dõi sự thay đổi của thị trường, tạo tín hiệu giao dịch khi xu hướng hình thành. Đồng thời thiết lập hai bộ chu kỳ của kênh và cơ chế kiểm soát rủi ro. Chiến lược có thể nâng cao hơn nữa sự ổn định và khả năng lợi nhuận bằng cách tối ưu hóa tham số, giới thiệu các điều kiện lọc.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Turtle Trade Channels Strategy", shorttitle="TTCS", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
length = input(20,"Entry Length", minval=1)
len2=input(10, "Exit Length", minval=1)
lower = lowest(length)
upper = highest(length)
up=highest(high,length)
down=lowest(low,length)
sup=highest(high,len2)
sdown=lowest(low,len2)
K1=barssince(high>=up[1])<=barssince(low<=down[1]) ? down : up
K2=iff(barssince(high>=up[1])<=barssince(low<=down[1]),sdown,sup)
K3=iff(close>K1,down,na)
K4=iff(close<K1,up,na)
buySignal=high==upper[1] or crossover(high,upper[1])
sellSignal = low==lower[1] or crossover(lower[1],low)
buyExit=low==sdown[1] or crossover(sdown[1],low)
sellExit = high==sup[1] or crossover(high,sup[1])
strategy.entry("Buy", strategy.long, when = buySignal and barssince(buySignal) < barssince(sellSignal[1]))
strategy.entry("Sell", strategy.short, when = sellSignal and barssince(sellSignal) < barssince(buySignal[1]))
strategy.exit("Buy Exit", from_entry = "Buy", when = buyExit and barssince(buyExit) < barssince(sellExit[1]))
strategy.exit("Sell Exit", from_entry = "Sell", when = sellExit and barssince(sellExit) < barssince(buyExit[1]))
plot(K1, title="Trend Line", color=color.red, linewidth=2)
e=plot(K2, title="Exit Line", color=color.blue, linewidth=1, style=6)