Chiến lược giao dịch định lượng dựa trên đường trung bình động điểm cao-mức thấp

Tác giả:ChaoZhang, Ngày: 2023-09-19 15:53:55
Tags:

Tổng quan

Chiến lược này sử dụng trung bình động đơn giản của các điểm cao và điểm thấp so với giá đóng hiện tại để xác định các bước vào và ra.

Chiến lược logic

  1. Tính toán trung bình di chuyển đơn giản 4 giai đoạn của giá cao.

  2. Tính toán trung bình di động đơn giản 4 giai đoạn của giá thấp.

  3. Đi dài khi giá đóng phá vỡ trên điểm SMA cao.

  4. Đi ngắn khi giá đóng phá vỡ dưới điểm thấp SMA.

  5. Sử dụng lệnh dừng lỗ cố định và lấy lợi nhuận để quản lý rủi ro.

Phân tích lợi thế

  1. Sử dụng các chỉ số đơn giản, dễ hiểu và thực hiện.

  2. Thời gian nắm bắt tín hiệu đột phá giá từ đường chéo SMA.

  3. Có thể nhanh chóng lọc tiếng ồn và xác định xu hướng.

  4. Các tính toán nhẹ giảm chi phí chiến lược.

  5. Thích hợp như một chiến lược cơ bản cho việc mở rộng.

Phân tích rủi ro

  1. Cần các thông số hợp lý để tránh quá nhạy cảm.

  2. Không thể xử lý rủi ro từ những vụ trốn thoát lớn.

  3. Khả năng mất tích trong phạm vi.

  4. Không thể tự động điều chỉnh dừng và giới hạn.

  5. Thật khó để đánh giá bối cảnh xu hướng dài hạn.

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

  1. Kiểm tra các thông số khác nhau để xem tác động đến chất lượng tín hiệu.

  2. Thêm các bộ lọc để xác nhận hiệu quả của các vụ đột nhập.

  3. Bao gồm phân tích xu hướng để tránh bẫy.

  4. Phát triển các điểm dừng và giới hạn năng động.

  5. Tối ưu hóa các điểm dừng để cải thiện tỷ lệ thắng.

  6. Kiểm tra độ bền trong các khung thời gian khác nhau.

Tóm lại

Chiến lược này sử dụng các chỉ số đơn giản để đo đạc đà tăng giá và cung cấp một khuôn khổ giao dịch xu hướng cơ bản. Với những cải tiến hơn nữa như tối ưu hóa tham số và kiểm soát rủi ro, logic giao dịch có thể mở rộng thành một hệ thống lượng mạnh mẽ.


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

//@version=3
strategy("HiLo", overlay=true)

// Testing a specific period
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(5, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


//HiLo Strategy
length = input(4, minval=0)
displace = input(0, minval=0)
highsma = sma(high, length)
lowsma = sma(low, length)

longCondition = close > highsma[displace]
if (longCondition)
    strategy.entry("long", true)

shortCondition = close < lowsma[displace]
if (shortCondition)
    strategy.entry("short", false)

// Exit seems with a problem. it keeps saying the order's limit (2000) was reached even if I back test it just for a day. 
// If the two lines bellow are commented, then it it works. Anyone? Any idea what's wrong?

// strategy.exit("exit", "long", profit=10, loss=5)
// strategy.exit("exit", "short", profit=10, loss=5)






    

Thêm nữa