Chiến lược giao dịch định lượng dựa trên xu hướng thanh khoản


Ngày tạo: 2023-12-21 10:19:52 sửa đổi lần cuối: 2023-12-21 10:19:52
sao chép: 0 Số nhấp chuột: 701
1
tập trung vào
1623
Người theo dõi

Chiến lược giao dịch định lượng dựa trên xu hướng thanh khoản

Tổng quan

Chiến lược này được gọi là Chiến lược xu hướng dẫn động tính thanh khoản, nhằm mục đích xác định hướng xu hướng giá trong các chu kỳ thời gian khác nhau và đưa ra quyết định mua hoặc bán phù hợp. Chiến lược này sử dụng hệ thống hai đường cân bằng để đánh giá xu hướng và sử dụng chỉ số cường độ tương đối của giá chênh lệch trên nhiều khung thời gian để phản ứng kịp thời khi xu hướng thay đổi.

Nguyên tắc chiến lược

Lý luận cốt lõi của chiến lược này dựa trên chỉ số CHOP, trong đó hệ thống trung bình biến động đánh giá hướng của xu hướng lớn. Cụ thể, chiến lược tính toán các giá trị RSI của đường dài (Length = 20) và đường dài (Length = 50) trên khung thời gian chu kỳ cao và tính toán chênh lệch giữa chúng.

Chiến lược này cũng giới thiệu việc xác định nhiều khung thời gian: tính toán chênh lệch RSI trong chu kỳ cao hơn (như đường mặt trời) để xác định hướng xu hướng tổng thể; thực hiện mua bán cụ thể trong chu kỳ thấp hơn (như đường 5 phút) dựa trên kết quả phán đoán của chu kỳ cao hơn. Sự kết hợp của khung thời gian đa dạng này, xem xét cả phán đoán xu hướng chu kỳ cao và tính linh hoạt cho hoạt động chu kỳ thấp.

Lợi thế chiến lược

  • Sử dụng RSI để đánh giá xu hướng tiềm năng, phản ứng trước, nhạy cảm
  • Ứng dụng tư duy khung thời gian đa dạng, xu hướng phán đoán chu kỳ cao, thực hiện hoạt động chu kỳ thấp
  • Chỉ số RSI thể hiện sự thay đổi của giá cả và khối lượng giao dịch, phản ánh tính thanh khoản và nhiệt độ tham gia của thị trường
  • Cài đặt tham số đơn giản, dễ hiểu, giải thích và điều chỉnh

Nguy cơ chiến lược và giải pháp

  • Có thể xảy ra đột phá giả khi đánh giá đường hai chiều
  • Thâm nhập thất bại có thể gây ra thiệt hại không cần thiết

Giải pháp:

  1. Điều chỉnh tham số đường trung bình để giảm khả năng phá vỡ giả
  2. Tăng các điều kiện lọc để tránh nhập cảnh không cần thiết

Hướng tối ưu hóa chiến lược

  • Sử dụng thuật toán lọc Kalman để tối ưu hóa tham số RSI
  • Thêm các chỉ số hỗ trợ phán đoán như MACD
  • Đặt vị trí xuất phát động kết hợp với sự thay đổi khối lượng giao dịch

Tóm tắt

Chiến lược này sử dụng chênh lệch RSI để đánh giá sự thay đổi xu hướng tiềm năng, để nắm bắt các điểm biến đổi một cách nhạy cảm. Việc sử dụng nhiều khung thời gian đảm bảo đánh giá xu hướng lớn và làm cho các hoạt động mua bán cụ thể linh hoạt hơn. So với các chiến lược theo dõi xu hướng khác, chiến lược này đơn giản hơn, trực tiếp hơn, các tham số Settings trực quan, dễ điều chỉnh và tối ưu hóa.

Mã nguồn chiến lược
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Flow Trend Indicator Strategy", "FlowTI", overlay=true, calc_on_every_tick=true)

isTimeFrame(timeFrame) =>
    timeFrame == timeframe.period ? true : false

Htf() =>
    isTimeFrame("12") ? "60" : isTimeFrame("60") ? "300" : isTimeFrame("300") ? "D" : isTimeFrame("D") ? "W" : isTimeFrame("W") ? "M" : isTimeFrame("M") ? "5M" : "D"

TrendIndication() =>
    trendFastLength = 20
    trendSlowLength = 50
    upFastHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on)
    downFastHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on)
    rsiFastHtf = downFastHtf == 0 ? 100 : upFastHtf == 0 ? 0 : 100 - (100 / (1 + upFastHtf / downFastHtf))
    upSlowHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on)
    downSlowHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on)
    rsiSlowHtf = downSlowHtf == 0 ? 100 : upSlowHtf == 0 ? 0 : 100 - (100 / (1 + upSlowHtf / downSlowHtf))
    rsiDiff = rsiFastHtf - rsiSlowHtf
    crossover(rsiDiff, 0) ? true : crossunder(rsiDiff, 0) ? false : na

if (TrendIndication() == true)
    strategy.entry("Long", strategy.long)

if (TrendIndication() == false)
    strategy.entry("Short", strategy.short)