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

Tác giả:ChaoZhang, Ngày: 2023-09-19 21:47:41
Tags:

Tổng quan

Chiến lược này sử dụng chỉ số kênh Donchian để giao dịch đột phá của các dải trên và dưới, cho phép các hoạt động theo xu hướng trên các cổ phiếu / tương lai / tiền điện tử / ngoại hối vv, thuộc các chiến lược đột phá xu hướng trung bình đến dài hạn.

Chiến lược logic

  1. 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ụ 20 ngày) để có được các dải trên và dưới.

  2. Đường giữa là trung bình của dải trên và dưới.

  3. Khi giá đóng cửa trên dải trên, xác định xu hướng tăng đã bắt đầu, đi dài để vào.

  4. Khi giá phá vỡ dưới đường trung bình, lấy lợi nhuận để thoát ra.

  5. Có thể tham chiếu khung thời gian backtest để tạo ra các tín hiệu giao dịch thực tế.

  6. Tùy chọn, việc phá vỡ băng tần dưới cũng có thể hoạt động như tín hiệu ngắn.

Chiến lược xác định xu hướng bắt đầu bằng cách phá vỡ kênh, sử dụng đường trung gian như lợi nhuận lấy ra, nắm bắt xu hướng trung và dài hạn.

Phân tích lợi thế

  1. Kênh Donchian rất đơn giản để tính toán và thực hiện.

  2. Giá phá vỡ kênh tín hiệu thay đổi xu hướng.

  3. Mức trung bình như mức lợi nhuận được thiết lập hợp lý.

  4. Quy tắc tín hiệu rõ ràng, dễ thực hiện.

  5. Có thể điều chỉnh các tham số kênh một cách linh hoạt cho các sản phẩm và khung thời gian khác nhau.

  6. Có thể đánh giá hiệu suất giao dịch dài hạn hoặc ngắn hạn.

  7. Không gian mở rộng lớn, có thể giới thiệu các chỉ số kỹ thuật khác.

Phân tích rủi ro

  1. Việc thoát khỏi kênh có thể bị chậm trễ, có nguy cơ bỏ lỡ những cơ hội sớm.

  2. Không xem xét sự khác biệt trước khi phá vỡ, có thể tạo ra tín hiệu sai.

  3. Định giá dừng lỗ trung gian nhạy cảm với biến động thị trường.

  4. Thời gian backtest không đúng có nguy cơ quá phù hợp.

  5. Thiếu dừng lỗ, cần phải cảnh giác với tổn thất mở rộng.

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

  1. Kiểm tra và tối ưu hóa các thông số thời gian kênh.

  2. Đánh giá các loại MA khác như là các đường dừng lỗ.

  3. Thêm các bộ lọc như chỉ số âm lượng.

  4. Thêm các cơ chế dừng lỗ di chuyển hoặc kéo theo.

  5. Giới thiệu máy học để dự đoán giá đột phá.

  6. Tối ưu hóa quản lý tiền, thiết lập tỷ lệ lợi nhuận vv

  7. Xem xét kết hợp các hoạt động dài hạn / ngắn hạn hoặc nhiều sản phẩm.

Tóm lại

Chiến lược này sử dụng kênh Donchian để xác định hướng xu hướng, đột phá giao dịch, một cách tiếp cận theo xu hướng trung và dài hạn điển hình. Tối ưu hóa các thông số kênh và thêm các chỉ số kỹ thuật khác có thể tạo thành một hệ thống đột phá mạnh mẽ hơn.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=10000)


testStartYear = input(2000, "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, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

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=yellow, style=line, linewidth=1, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close >= dcUpper)
strategy.close("simpleBuy",when=close < dcAverage)
    
//strategy.entry("simpleSell", strategy.short,when=close <= dcLower)
//strategy.close("simpleSell",when=close > dcAverage)
    



Thêm nữa