Chiến lược Breakout kênh Donchian là một chiến lược theo xu hướng dựa trên các kênh giá. Nó sử dụng dải trên, dải dưới và đường trung bình động của kênh Donchian để xác định xu hướng giá và breakout để tạo ra tín hiệu mua và bán.
Chiến lược này đầu tiên tính toán mức cao nhất, thấp nhất và đường trung bình động của giá trong một khoảng thời gian nhất định. Các dải trên và dưới tạo thành kênh giá, trong khi đường trung gian nằm ở giữa kênh. Khi giá vượt qua đường trung gian, nó báo hiệu xu hướng tăng và đi dài. Khi giá vượt qua đường trung gian, nó báo hiệu xu hướng giảm và đi ngắn.
Cụ thể, chiến lược hoạt động theo các bước sau:
Lý thuyết trên mô tả nguyên tắc giao dịch cơ bản của chiến lược - nắm bắt xu hướng bằng cách phá vỡ giá và chuyển hướng tại các điểm pivot.
Chiến lược có những lợi thế sau:
Ngoài ra còn có một số rủi ro:
Giải pháp:
Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:
Kết luận, chiến lược đột phá kênh Donchian là một hệ thống theo dõi xu hướng hiệu quả, với cơ sở lý thuyết vững chắc, logic đơn giản và khả năng đi theo xu hướng thông qua các đột phá. Trong khi đó, rủi ro vốn có của các hệ thống đột phá như vậy đòi hỏi điều chỉnh tham số và lọc tín hiệu. Với nghiên cứu và tối ưu hóa hơn nữa, các chiến lược Donchian có thể trở nên mạnh mẽ và thực tế hơn cho các nhà giao dịch định lượng.
/*backtest start: 2024-01-26 00:00:00 end: 2024-02-25 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "dc", overlay = true) 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 plot(dcLower, style=line, linewidth=3, color=red, offset=1) plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1) plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average") strategy.entry("simpleBuy", strategy.long, when=close > dcAverage) strategy.close("simpleBuy",when=close < dcLower) strategy.entry("simpleSell", strategy.short,when=close < dcAverage) strategy.close("simpleSell",when=close > dcAverage)