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

Tác giả:ChaoZhang, Ngày: 2023-12-04 14:16:33
Tags:

img

Tổng quan

Chiến lược Breakout kênh Donchian là một hành động giá và xu hướng sau chiến lược giao dịch breakout. Nó sử dụng các dải trên và dưới của kênh Donchian để xác định các điểm breakout tiềm năng và có các vị trí dài hoặc ngắn khi giá vượt qua kênh.

Chiến lược logic

Logic cốt lõi của chiến lược này là:

  1. Sử dụng các hàm Ta.highest và Ta.lowest để tính toán mức cao nhất và thấp nhất trong một khoảng thời gian nhất định (ví dụ: 60 bar) để xây dựng các dải trên và dưới của kênh Donchian.

  2. Khi giá phá vỡ trên dải trên, nó cho thấy xu hướng tăng có thể bắt đầu, vì vậy hãy mua dài tại các thanh tiếp theo mở sau khi phá vỡ dải trên. Khi giá phá vỡ dưới dải dưới, nó cho thấy xu hướng giảm có thể bắt đầu, vì vậy hãy mua ngắn tại các thanh tiếp theo mở sau khi phá vỡ dải dưới.

  3. Một khi giá giảm xuống dưới dải trên hoặc tăng trở lại trên dải dưới, nó cho thấy một sự đảo ngược xu hướng, vì vậy làm phẳng các vị trí dài hoặc ngắn hiện có.

  4. Để kiểm soát rủi ro, hãy thiết lập stop loss ở giá nhập trừ/ cộng một tick tối thiểu sau khi bắt đầu các vị trí dài/ ngắn.

Loại chiến lược phá vỡ kênh này đơn giản và thẳng thắn, xem xét cả hành động giá và theo xu hướng, dễ thực hiện và ổn định.

Ưu điểm

Chiến lược này có một số lợi thế:

  1. Lý thuyết là rõ ràng, đơn giản và dễ hiểu, với khả năng thực hiện cao.

  2. Sử dụng kênh Donchian để xác định hướng xu hướng có thể lọc hiệu quả tiếng ồn và xác định các tín hiệu đột phá đáng tin cậy.

  3. Cài đặt dừng lỗ hợp lý sau khi nhập có thể kiểm soát lỗ giao dịch duy nhất.

  4. Bất kể tình hình thị trường, chiến lược có thể giao dịch cùng với xu hướng một khi đột phá hợp lệ xảy ra và bắt được các động thái lớn tiềm năng.

  5. Rất ít thông số, không dễ bị quá tải, với không gian điều chỉnh lớn và tính dẻo dai cao.

Rủi ro

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

  1. Là một xu hướng sau chiến lược, nó không thể bắt được chuyển động đảo ngược.

  2. Dừng lỗ quá gần có thể bị dừng lại bởi biến động giá ngắn hạn.

  3. Chế độ cài đặt chiều dài kênh không chính xác làm tăng khả năng phá vỡ sai.

Một số biện pháp đối phó:

  1. Tích hợp các chỉ số khác để xác định sự đảo ngược tiềm năng, tránh mù quáng theo xu hướng.

  2. Sử dụng điểm dừng hợp lý để khóa lợi nhuận thay vì dính vào lỗ dừng cứng ban đầu.

  3. Kiểm tra các giá trị tham số khác nhau để tìm kết hợp tối ưu.

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

Có chỗ cho việc tối ưu hóa thêm:

  1. Hãy thử chiến lược thoát khỏi kênh Donchian hai lần, một để vào và một để dừng lỗ/lợi nhuận.

  2. Chỉ thực hiện giao dịch sau khi đột phá vượt quá một số lượng xác định để lọc một số đột phá sai.

  3. Thêm bộ lọc khối lượng hoặc biến động để tránh giao dịch xấu khi giá dao động mạnh.

  4. Hãy thử các chiến lược giữ khác nhau như theo xu hướng hoặc đảo ngược trung bình kết hợp để có kết quả tốt hơn.

  5. Thêm các mô-đun quản lý rủi ro để giới hạn lỗ hàng ngày tối đa, rút tiền tối đa v.v.

Kết luận

Tóm lại, Chiến lược Breakout kênh Donchian là một chiến lược theo xu hướng ngắn hạn rất thực tế. Nó xác định những thay đổi xu hướng tiềm năng thông qua hành động giá, và sử dụng các sự đột phá kênh để tham gia giao dịch. Logic đơn giản và dễ thực hiện, và có thể đạt được kết quả tốt trên các thị trường khác nhau. Với các tối ưu hóa thêm như điều chỉnh tham số, cơ chế dừng lỗ, xác định đảo ngược, v.v., có thể mong đợi tăng hiệu suất đáng kể. Nó phục vụ như một chiến lược điểm khởi đầu tuyệt vời cho giao dịch algo.


/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Step 1. Define strategy settings
strategy(title="Price action and breakout Channel Forexrn", overlay=true,
     pyramiding=0, initial_capital=100000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=4, slippage=2)

dochLen = input.int(60, title="Price action and breackout Channel Forexrn")

// Position sizing inputs
usePosSize    = input.bool(true, title="Use Position Sizing?")
atrLen        = input.int(10, title="ATR Length")
atrRiskOffset = input.float(4, title="ATR Risk Offset Multiple", step=0.25)

maxRisk = input.float(2, title="Max Position Risk %", step=.25, 
     minval=0.25, maxval=15)
maxExposure = input.float(10, title="Max Position Exposure %", step=1, 
     minval=1, maxval=100)
marginPerc = input.int(10, title="Margin %", minval=1, maxval=100)

// Step 2. Calculate strategy values
upperband = ta.highest(high, dochLen)[1]
lowerband = ta.lowest(low, dochLen)[1]

// Calculate position size
riskEquity = (maxRisk * 0.01) * strategy.equity
riskTrade  = (ta.atr(atrLen) * atrRiskOffset) * syminfo.pointvalue

maxPos = ((maxExposure * 0.01) * strategy.equity) /
     ((marginPerc * 0.01) * (close * syminfo.pointvalue))

posSize = usePosSize ? math.min(math.floor(riskEquity / riskTrade), maxPos) : 1

// Step 3. Output strategy data
plot(upperband, color=color.green, linewidth=2, title="DoCh Upperband")
plot(lowerband, color=color.red, linewidth=2, title="DoCh Lowerband")

// Step 4. Determine trading conditions
tradeWindow  = true

tradeAllowed = tradeWindow and bar_index > dochLen

// Step 5. Submit entry orders
if tradeAllowed
    if strategy.position_size < 1
        strategy.entry("EL", strategy.long, qty=posSize,
             stop=upperband + syminfo.mintick)

    if strategy.position_size > -1
        strategy.entry("ES", strategy.short, qty=posSize,
             stop=lowerband - syminfo.mintick)

// Step 6. Submit exit orders
if not tradeWindow
    strategy.close_all()

Thêm nữa