Chiến lược xu hướng kênh Donchian hai lần xác nhận

Tác giả:ChaoZhang, Ngày: 2023-12-22 10:55:06
Tags:

img

Tổng quan

Chiến lược này được phát triển dựa trên chỉ số kênh Donchian tiêu chuẩn. Nó chờ hai mức cao hơn liên tiếp (hoặc thấp hơn) được xác nhận theo mặc định trước khi phát ra các tín hiệu giao dịch, để tránh bị đánh bại bởi các nhà tạo thị trường.

Chiến lược cũng cung cấp tùy chọn vô hiệu hóa cơ chế xác nhận kép, để nó có thể phát ra các tín hiệu giao dịch ngay lập tức khi thấy mức cao hoặc thấp mới.

Đối với những người không thích bán ngắn, cũng có tùy chọn loại trừ các vị trí ngắn.

Chiến lược logic

Chiến lược này dựa trên dải trên và dưới của chỉ số kênh Donchian. Dải trên là mức cao nhất trong n thanh qua, trong khi dải dưới là mức thấp nhất trong n thanh trước. Thời gian xem lại mặc định n là 20.

Dải giữa là mức trung bình của các dải trên và dưới, và có thể được sử dụng để đánh giá hướng xu hướng.

Khi giá phá vỡ trên dải trên, chiến lược sẽ dài nếu không có vị trí dài hiện có. Khi giá phá vỡ dưới dải dưới, chiến lược sẽ ngắn nếu không có vị trí ngắn hiện có.

Để lọc ra các đột phá sai, tùy chọn chờ xác nhận hai lần được bật theo mặc định. Điều này có nghĩa là phải thấy hai mức cao hơn liên tiếp (hoặc thấp hơn) trước khi tín hiệu giao dịch được phát hành.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. Chỉ số kênh Donchian rất đơn giản và dễ hiểu.

  2. Cơ chế xác nhận kép lọc hiệu quả các vụ đột nhập sai và tránh bị mắc kẹt.

  3. Thời gian xem lại kênh có thể được tùy chỉnh để thích nghi với môi trường thị trường khác nhau.

  4. Tùy chọn bán ngắn đáp ứng nhu cầu của các nhà đầu tư khác nhau.

  5. Mã là sạch sẽ và dễ hiểu để phát triển hơn nữa.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Việc xác nhận hai lần có thể khiến một số cơ hội giao dịch bị bỏ lỡ.

  2. Cài đặt thời gian kênh không chính xác có thể dẫn đến giao dịch quá thường xuyên hoặc thưa thớt.

  3. Thời gian giữ lâu có thể không kiểm soát rủi ro hiệu quả.

  4. Cần phải cảnh giác với những rủi ro bổ sung từ bán tháo.

  5. Phương pháp kiểm tra sau phải thận trọng.

Các giải pháp tương ứng:

  1. Khóa xác nhận hai lần hoặc rút ngắn khoảng thời gian xác nhận.

  2. Tối ưu hóa các thông số và chọn các khoảng thời gian kênh phù hợp.

  3. Đặt mức dừng lỗ/lợi nhuận để giới hạn hợp lý mỗi lỗ giao dịch.

  4. Không bán ngắn, chỉ bán dài.

  5. Đánh giá mạnh mẽ chiến lược trên các môi trường thị trường khác nhau.

Cơ hội gia tăng

Các cơ hội cải thiện bao gồm:

  1. Điều chỉnh động kích thước vị trí dựa trên biến động.

  2. Chế độ lọc các sự đột phá giả dựa trên các chỉ số cường độ đột phá.

  3. Tích hợp cơ chế dừng lại để theo dõi xu hướng.

  4. Kết hợp các chỉ số khác để xác định hướng xu hướng và tránh bỏ lỡ các bước ngoặt lớn.

  5. Tự động tối ưu hóa các thông số thông qua máy học.

Những cải tiến này có thể tiếp tục cải thiện sự ổn định và lợi nhuận của chiến lược.

Kết luận

Đây là một xu hướng đơn giản nhưng hiệu quả theo chiến lược dựa trên cơ chế xác nhận kép của kênh Donchian.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Donchian Channels", shorttitle="DC", overlay=true, initial_capital=10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true)
length = input(20, minval=1)
lower = lowest(length)
upper = highest(length)
basis = avg(upper, lower)
bool inShortPos = false
bool inLongPos = false
bool wait4confirmation = input(true, title="Wait for double confirmation?")
bool doShort = input(true, title="Include short positions")

plot(basis, "Basis", color=#FF6D00)
u = plot(upper, "Upper", color=#2962FF)
l = plot(lower, "Lower", color=#2962FF)
fill(u, l, color=color.rgb(33, 150, 243, 95), title="Background")

//if(inShortPos == false and inLongPos == false)
if(not inLongPos and upper > upper[1])
    if(wait4confirmation)
        if(not inLongPos and upper > upper[1] and upper[1] > upper[2])
            strategy.close("Short", true)
            strategy.entry("Buy", true)
    else
        strategy.close("Short", true)
        strategy.entry("Buy", true)
else
    if(not inShortPos and lower < lower[1])
        if(wait4confirmation)
            if(not inShortPos and lower < lower[1] and lower[1] < lower[2])
                strategy.close("Buy", true)
                if(doShort)
                    strategy.entry("Short", true)
        else
            strategy.close("Buy", true)
            if(doShort)
                strategy.entry("Short", true)

Thêm nữa