
Chiến lược phá vỡ kênh động là một chiến lược theo dõi xu hướng. Chiến lược này sử dụng chỉ số kênh Donchian để động xác định giá mua và bán phá vỡ, kết hợp với chỉ số ATR biến động để thiết lập điểm dừng lỗ, để tạo ra tín hiệu giao dịch và hoàn toàn tự động hóa thoát lỗ.
Đường Donchian là một chỉ số kênh động, hình thành đường lên và đường xuống bằng cách 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ứ. Đường lên là giá cao nhất trong n chu kỳ qua, đường dưới là giá thấp nhất trong n chu kỳ qua.
Chiến lược này đặt chu kỳ kênh Donchian là 20 ngày. Khi giá phá vỡ đường dẫn, nó tạo ra tín hiệu mua, cho thấy giá đi vào xu hướng tăng; Khi giá đi xuống đường dẫn, nó tạo ra tín hiệu bán, cho thấy giá đi vào xu hướng giảm.
Chỉ số ATR là viết tắt của Average True Range, nó phản ánh mức độ biến động trung bình của một tài sản trong một khoảng thời gian gần đây. ATR có thể tự động thích ứng với sự thay đổi tần suất biến động của thị trường, do đó phản ánh chính xác hơn mức độ biến động thực tế của thị trường trong khoảng thời gian gần đây.
Chiến lược này sử dụng chỉ số ATR 20 ngày để tính toán điểm dừng lỗ. Số ATR lớn hơn cho thấy thị trường biến động lớn hơn, điểm dừng lỗ được thiết lập càng xa. Điều này có thể ngăn chặn điểm dừng lỗ quá gần và bị ảnh hưởng bởi sự biến động nhỏ của thị trường.
Khi giá trên vượt qua đường trung tâm của kênh Donchian, tạo ra tín hiệu mua; khi giá dưới vượt qua đường trung tâm của kênh Donchian, tạo ra tín hiệu bán. Điều này cho thấy giá bắt đầu phá vỡ kênh và bước vào một vòng xu hướng mới.
Trong khi đó, kết hợp với điểm dừng lỗ tính toán theo chỉ số ATR, khi lỗ đạt đến điểm dừng lỗ, chủ động dừng lỗ thoát khỏi vị trí, kiểm soát rủi ro.
Kênh Donchian là một chỉ số theo dõi xu hướng. Chiến lược này có thể tự động theo dõi sự thay đổi trong xu hướng thị trường bằng cách điều chỉnh động phạm vi của kênh, từ đó tạo ra tín hiệu mua và bán. Điều này tránh chủ quan của phán đoán nhân tạo, làm cho việc tạo ra tín hiệu giao dịch trở nên khách quan và đáng tin cậy hơn.
Chiến lược bao gồm cả các quy tắc mua và bán đồng thời, có thể thực hiện giao dịch song phương. Điều này mở rộng môi trường thị trường mà chiến lược được áp dụng và có thể kiếm lợi nhuận khi thị trường tăng và giảm.
Cơ chế dừng lỗ kết hợp với chỉ số ATR có thể kiểm soát hiệu quả tổn thất của một giao dịch. Điều này đặc biệt quan trọng đối với giao dịch định lượng, có thể đảm bảo chiến lược có được lợi nhuận tích cực ổn định trong các sự kiện có xác suất cao.
Chiến lược kênh Donchian có một số rủi ro bị che đậy. Khi giá đảo ngược và quay trở lại kênh, nếu không dừng lỗ sẽ tạo ra tổn thất lớn. Chiến lược này làm giảm rủi ro này thông qua cơ chế dừng lỗ của chỉ số ATR.
Chỉ số kênh Donchian sẽ tạo ra tín hiệu sai khi xu hướng đảo ngược. Người dùng cần chú ý đến tình hình thị trường và tránh bị mù lòa khi xu hướng đảo ngược rõ rệt.
Các tham số chu kỳ của kênh Donchian và ATR dừng lại cần được kiểm tra tối ưu hóa, nếu không sẽ tạo ra quá nhiều tín hiệu sai. Trong chiến lược này, tham số kinh nghiệm được sử dụng, trong thực tế cần tối ưu hóa tham số dựa trên dữ liệu lịch sử.
Các chỉ số định xu hướng như trung bình di chuyển có thể được thêm vào để tránh tín hiệu sai tại các điểm đảo ngược xu hướng đáng kể.
Tối ưu hóa các tham số Donchian và ATR để tìm ra sự kết hợp tham số tốt nhất. Việc rút ngắn chu kỳ kênh một cách thích hợp có thể nắm bắt sự biến đổi xu hướng nhanh hơn.
Kết hợp với các chỉ số phán đoán phụ trợ khác, như hình dạng đường K, thay đổi khối lượng giao dịch, bạn có thể cải thiện độ chính xác của tín hiệu và giảm các giao dịch đảo ngược không cần thiết.
Chiến lược phá vỡ kênh động định vị hướng xu hướng thông qua đường dẫn Donchian và tạo ra tín hiệu giao dịch. Chiến lược này có mức độ tự động cao, phù hợp với giao dịch định lượng.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "dc", overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testPeriod() =>
true
//time >= testPeriodStart ? true : false
dcPeriod = input(20, "Period")
dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)
useTakeProfit = na
useStopLoss = na
useTrailStop = na
useTrailOffset = na
Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")
plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)
plot(dcAverage, color=yellow, style=line, linewidth=3, title="Mid-Line Average")
strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when=((close < dcAverage) and cross(close,dcAverage)) or ( close< Buy_stop))
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=((close > dcAverage) and cross(close,dcAverage)) or ( close > Sell_stop))
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)