Chiến lược xu hướng dựa trên thanh khoản - Chiến lược giao dịch lượng dựa trên chỉ báo xu hướng dòng chảy

Tác giả:ChaoZhang, Ngày: 21-12-2023 10:19:52
Tags:

img

Tổng quan

Chiến lược này được đặt tên là Chiến lược xu hướng dựa trên thanh khoản. Nó nhằm mục đích xác định hướng xu hướng giá trên các khung thời gian khác nhau và đưa ra các quyết định dài hoặc ngắn tương ứng. Chiến lược sử dụng một hệ thống trung bình động kép để xác định xu hướng và sử dụng sự khác biệt giữa các giá trị chỉ số sức mạnh tương đối (RSI) trên nhiều khung thời gian để phản ứng kịp thời với những thay đổi xu hướng.

Chiến lược logic

Khái niệm 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 động đánh giá hướng xu hướng tổng thể. Cụ thể, chiến lược tính toán các giá trị RSI của đường nhanh (Dài = 20) và đường chậm (Dài = 50) trên khung thời gian cao hơn, và tính toán sự khác biệt giữa hai đường RSI. Khi đường nhanh RSI vượt qua đường chậm RSI, nó báo hiệu xu hướng tăng và kích hoạt tín hiệu dài. Ngược lại, nếu đường nhanh RSI vượt qua đường chậm RSI, nó chỉ ra xu hướng giảm và tạo ra tín hiệu ngắn. Sự khác biệt RSI thay đổi do giá tăng và giảm có thể xác định một cách nhạy cảm các điểm thay đổi xu hướng.

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

Ưu điểm của Chiến lược

  • Khám phá khả năng đảo ngược xu hướng trước thời hạn bằng cách sử dụng phân kỳ RSI
  • Áp dụng khái niệm nhiều khung thời gian để xác định xu hướng trên TF cao hơn và thực hiện lệnh trên TF thấp hơn
  • RSI phản ánh sự thay đổi giá và khối lượng, cho thấy tính thanh khoản và sự tham gia thị trường
  • Cài đặt tham số đơn giản, dễ hiểu, giải thích và điều chỉnh

Rủi ro và giải pháp

  • Sự đột phá giả có thể xảy ra với hệ thống MA kép
  • Thất bại trong việc đào thoát có thể gây ra tổn thất không cần thiết.

Giải pháp:

  1. Điều chỉnh các tham số MA để giảm xác suất đột phá sai
  2. Thêm bộ lọc để tránh nhập không cần thiết

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

  • Tối ưu hóa các thông số RSI bằng cách sử dụng thuật toán lọc Kalman
  • Thêm MACD và các chỉ số khác để hỗ trợ đánh giá
  • Đặt các vị trí thoát động dựa trên thay đổi khối lượng giao dịch

Kết luận

Chiến lược này tận dụng sự khác biệt của chỉ số RSI để nắm bắt một cách nhạy cảm các bước ngoặt tiềm năng của xu hướng. Ứng dụng nhiều khung thời gian đảm bảo đánh giá xu hướng tổng thể trong khi giữ cho việc thực hiện giao dịch cụ thể linh hoạt. So với các chiến lược theo xu hướng khác, chiến lược này đơn giản hơn, trực quan trong điều chỉnh tham số và dễ tối ưu hóa.


/*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)

Thêm nữa