Chiến lược thoát kênh năng động

Tác giả:ChaoZhang, Ngày: 2024-01-17 15:29:55
Tags:

img

Tổng quan

Chiến lược Breakout kênh động là một chiến lược theo xu hướng. Nó sử dụng chỉ số kênh Donchian để xác định động giá mua và bán đột phá, kết hợp chỉ số ATR để thiết lập các điểm dừng lỗ và đạt được tự động hóa hoàn toàn của việc tạo tín hiệu giao dịch và thoát lỗ dừng.

Nguyên tắc

Kênh Donchian

Kênh Donchian là một chỉ số kênh năng động tạo thành các dải trên và dưới bằng cách tính toán giá cao nhất và thấp nhất trong một khoảng thời gian nhất định trong quá khứ. Dải trên là giá cao nhất trong n khoảng thời gian qua, và dải dưới là giá thấp nhất trong n khoảng thời gian qua. Kênh Donchian phản ánh phạm vi biến động và xu hướng tiềm năng của thị trường.

Chiến lược này đặt khoảng thời gian kênh Donchian lên 20 ngày. Khi giá vượt qua đường ray trên, một tín hiệu mua được tạo ra, cho thấy thị trường đã bước vào xu hướng tăng. Khi giá giảm xuống dưới đường ray dưới, một tín hiệu bán được tạo ra, cho thấy thị trường đã bước vào xu hướng giảm.

Chỉ số ATR

Chỉ số ATR là viết tắt của Average True Range, phản ánh mức biến động trung bình của một tài sản nhất định trong một khoảng thời gian gần đây. ATR có thể tự động thích nghi với những thay đổi về tần suất biến động thị trường để phản ánh chính xác hơn sự biến động thực tế của thị trường trong giai đoạn gần đây.

Chiến lược này sử dụng chỉ số ATR 20 ngày để tính điểm dừng lỗ. Giá trị ATR càng lớn, biến động thị trường càng lớn và điểm dừng lỗ càng xa. Điều này ngăn chặn điểm dừng lỗ quá gần và bị đánh bại bởi các biến động thị trường nhỏ.

Sản xuất tín hiệu

Khi giá vượt qua đường giữa của kênh Donchian lên, một tín hiệu mua được tạo ra. Khi giá vượt qua đường giữa xuống, một tín hiệu bán được tạo ra. Điều này cho thấy giá đã bắt đầu vượt qua kênh này và bước vào một vòng mới của xu hướng.

Đồng thời, kết hợp với điểm dừng lỗ được tính bằng chỉ số ATR, khi lỗ đạt đến điểm dừng lỗ, vị trí sẽ được ngừng hoạt động để kiểm soát rủi ro.

Phân tích lợi thế

Theo dõi xu hướng tự động

Kênh Donchian là một chỉ số theo dõi xu hướng. Bằng cách điều chỉnh động phạm vi kênh, chiến lược này có thể tự động theo dõi những thay đổi trong xu hướng thị trường và tạo ra các tín hiệu mua và bán phù hợp. Điều này tránh tính chủ quan của phán đoán thủ công và làm cho các tín hiệu giao dịch khách quan và đáng tin cậy hơn.

Giao dịch hai chiều

Chiến lược bao gồm cả các quy tắc dài và ngắn, cho phép giao dịch hai chiều. Điều này mở rộng môi trường thị trường mà chiến lược có thể được áp dụng, cho phép lợi nhuận trong cả xu hướng tăng và giảm.

Quản lý rủi ro

Cơ chế dừng lỗ của chỉ số ATR có thể kiểm soát hiệu quả sự mất mát của một giao dịch duy nhất. Điều này đặc biệt quan trọng đối với giao dịch định lượng để đảm bảo rằng các chiến lược đạt được lợi nhuận tích cực ổn định trong các sự kiện có xác suất cao.

Phân tích rủi ro

Nguy cơ bẫy

Chiến lược kênh Donchian có một số rủi ro bị mắc kẹt. Nếu giá đảo ngược và quay trở lại kênh mà không có lỗ dừng, có thể có tổn thất đáng kể. Cơ chế dừng lỗ ATR trong chiến lược này giúp giảm thiểu rủi ro đó.

Rủi ro đảo ngược xu hướng

Khi xu hướng đảo ngược, chỉ số kênh Donchian sẽ tạo ra các tín hiệu sai. Người dùng cần chú ý đến điều kiện thị trường để tránh giao dịch mù khi sự đảo ngược xu hướng đáng kể xảy ra. Các chỉ số đánh giá xu hướng có thể được thêm vào để giảm rủi ro như vậy.

Rủi ro tối ưu hóa tham số

Các thông số thời gian của cả kênh Donchian và ATR cần được tối ưu hóa, nếu không có thể tạo ra các tín hiệu không chính xác quá mức. Các thông số trong chiến lược này là thực nghiệm. Trong giao dịch thực tế, chúng cần được tối ưu hóa dựa trên dữ liệu lịch sử.

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

Thêm phán đoán xu hướng

Các chỉ số đánh giá xu hướng như trung bình động có thể được thêm vào để tránh các tín hiệu sai ở các điểm chuyển hướng quan trọng.

Tối ưu hóa tham số

Tối ưu hóa các tham số kênh Donchian và ATR để tìm sự kết hợp tốt nhất.

Thêm mô hình giá

Kết hợp các chỉ số phán đoán phụ khác như mô hình nến và thay đổi khối lượng giao dịch để cải thiện độ chính xác tín hiệu và giảm các giao dịch đảo ngược không cần thiết.

Kết luận

Chiến lược Breakout kênh năng động xác định hướng xu hướng thông qua các dải trên và dưới của kênh Donchian và tạo ra tín hiệu giao dịch. Cơ chế dừng lỗ ATR kiểm soát rủi ro. Chiến lược này có mức độ tự động cao và 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)



Thêm nữa