Chiến lược thoát khỏi kênh Donchian

Tác giả:ChaoZhang, Ngày: 2024-02-26 14:55:04
Tags:

img

Tổng quan

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 logic

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:

  1. Tính toán mức cao nhất trong 20 giai đoạn, cụ thể là dcUpper;
  2. Tính toán mức thấp nhất trong 20 giai đoạn, cụ thể là dcLower;
  3. Tính toán trung bình của dcUpper và dcLower để có được dcAverage, như đường trung tâm của kênh;
  4. Định hình dcUpper, dcLower, và dcAverage để tạo thành kênh Donchian;
  5. Đi dài khi đóng là trên đường trung bình dcMức trung bình, và đi ngắn khi đóng là dưới dcMức trung bình;
  6. Quy tắc thoát: nếu close nằm dưới dải dưới dcLower khi dài, close vị trí dài; nếu close nằm trên đường trung bình dcMedio khi ngắn, close vị trí ngắn.

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.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Cơ sở lý thuyết vững chắc - sử dụng các kênh giá để xác định xu hướng là một phương pháp phân tích kỹ thuật đã được chứng minh;
  2. Logic đơn giản và rõ ràng, dễ hiểu và thực hiện;
  3. Hệ thống dựa trên đột phá với rất nhiều cơ hội theo xu hướng, phù hợp với chiến lược giao dịch số lượng;
  4. Cơ chế dừng lỗ rõ ràng để hạn chế lỗ giao dịch duy nhất;
  5. Tính linh hoạt - các thông số có thể được điều chỉnh cho các môi trường thị trường khác nhau.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro:

  1. Tần suất giao dịch cao dẫn đến chi phí và trượt cao hơn;
  2. Việc đặt stop loss không đúng dẫn đến stop loss quá mức;
  3. Các thông số không phù hợp dẫn đến tín hiệu bị thiếu hoặc sai;
  4. Sự thất bại của xu hướng cuối cùng dẫn đến tổn thất.

Giải pháp:

  1. Tối ưu hóa các thông số và kiểm soát tần suất giao dịch;
  2. Cải thiện logic dừng lỗ để ngăn ngừa mất mát quá mức dừng;
  3. Kiểm tra trong môi trường khác nhau và điều chỉnh các thông số;
  4. Thêm bộ lọc để tránh thất bại đột phá xu hướng muộn.

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

Chiến lược có thể được tối ưu hóa thêm trong các khía cạnh sau:

  1. Thêm các chỉ số cấu trúc thị trường để tránh giao dịch chống lại các xu hướng chính;
  2. Tăng độ lọc tín hiệu để đảm bảo tính hợp lệ của sự đột phá và giảm tín hiệu sai;
  3. Bao gồm các số liệu biến động để đo cường độ đột phá;
  4. Áp dụng phân tích nhiều khung thời gian hoặc nhiều tài sản để cải thiện độ bền;
  5. Sử dụng máy học để tự động điều chỉnh các thông số thích nghi với thị trường thay đổi.

Kết luận

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)
    



Thêm nữa