Đánh giá lại chiến lược giao dịch thoát khỏi kênh

Tác giả:ChaoZhang, Ngày: 2023-09-20 17:02:40
Tags:

Tổng quan

Chiến lược này xây dựng các kênh dài và ngắn, kiểm tra lại các kênh đột phá một cách có hệ thống.

Chiến lược logic

  1. Xây dựng kênh dài với giá cao nhất trong một khoảng thời gian, và kênh ngắn với giá thấp nhất.

  2. Mua khi giá phá vỡ trên đường kênh trên.

  3. Bán khi giá phá vỡ dưới đường kênh dưới.

  4. Có thể đặt phạm vi ngày backtest để xác minh chiến lược.

  5. Các quy tắc đơn giản và rõ ràng để giao dịch các kênh đột phá.

Ưu điểm

  1. Các kênh xác định thị giác phạm vi giá.

  2. Có khả năng tăng động lực sau khi phá vỡ.

  3. Kiểm tra hậu quả xác minh hiệu quả chiến lược trong lịch sử.

  4. Khái niệm thoát kênh đơn giản và trực quan.

  5. Mã ngắn gọn dễ sửa đổi và tối ưu hóa.

Rủi ro

  1. Rủi ro của các vụ thoát sai và rút lui sau vụ thoát ban đầu.

  2. Không có cách hiệu quả để thiết lập dừng và ra khỏi.

  3. Các thông số kênh không đúng ảnh hưởng tiêu cực đến hiệu suất.

  4. Kết quả xét nghiệm có thể có thiên vị về tương lai.

  5. Hiệu suất giao dịch thực có thể khác nhau rất nhiều so với backtest.

Tăng cường

  1. Kiểm tra các thông số để tìm kết hợp tối ưu.

  2. Thêm thêm các yếu tố khác để lọc ra các sự đột phá giả.

  3. Xây dựng các cơ chế dừng lỗ và lấy lợi nhuận.

  4. xử lý dữ liệu backtest đúng cách để loại bỏ sự thiên vị.

  5. Xác minh chiến lược trên các điều kiện thị trường khác nhau thông qua backtest.

  6. Giao dịch giấy để cấu hình các tham số cho giao dịch trực tiếp.

Kết luận

Chiến lược này kiểm tra lại các quy tắc đột phá kênh đơn giản, dễ vận hành nhưng đòi hỏi sự tinh tế cho sự ổn định.


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

//@version=3
//strategy(title = "Backtest Donchian Teixeira", default_qty_type = strategy.fixed, default_qty_value = 100, overlay = true, commission_type = strategy.commission.cash_per_order, commission_value = 2.50, precision = 2, calc_on_every_tick = true, pyramiding = 0, initial_capital = 10000)

testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 00, 00)

testEndYear = input(2018, "Backtest End Year")
testEndMonth = input(12, "Backtest End Month")
testEndDay = input(1, "Backtest End Day")
testPeriodEnd = timestamp(testStartYear, testStartMonth, testStartDay, 23, 59)

window()  => true //nao funciona

length1 = input(20, minval=1, title="Upper Channel")
length2 = input(20, minval=1, title="Lower Channel")

dcUpper = highest(length1)
dcLower = lowest(length2)

plot(dcLower, style=line, linewidth=1, color=red, offset=1)
plot(dcUpper, style=line, linewidth=1, color=lime, offset=1)
plot(dcLower, style=line, linewidth=1, color=gray)

if (strategy.position_size == 0)
    strategy.entry("COMPRA", true, stop = dcUpper)
    
if (strategy.position_size > 0)
    strategy.exit("VENDA", stop = dcLower)

Thêm nữa