Mục lục bài viết

Bằng chứng và phạm vi

Nguồn sàn xác nhận ngữ nghĩa dữ liệu, nghiên cứu order flow giải thích bối cảnh. Không nguồn nào ở đây xác nhận lợi nhuận cho bộ detector đề xuất.

Dữ liệu và thị trườngTrade feed có taker side của một venue; L2 đồng bộ là phần bổ sung, OHLCV không đủ tái tạo delta thật.
Khung thời gian nghiên cứuVí dụ cửa sổ 30 giây và xác nhận nến 1 phút; cần thử cùng độ trễ và chất lượng feed dự kiến.
Cột volume đạt 120 khi delta−80; sau proxy absorption, giá phải reclaim trước khi cân nhắc mua.Mở hình kích thước đầy đủ
Delta và tổng volume giả lập theo cửa sổ; trục chính là buy-taker trừ sell-taker, không phải giá. Nhãn excursion và reclaim là sự kiện của ví dụ số.

Quy trình thực hành

Sơ đồ quy trình Absorption và CVD divergence: đo lực chủ động nhưng ít tiến triển giá
Các bước được mô tả đầy đủ bên dưới. Tại mỗi bước, dữ liệu thiếu hoặc điều kiện sai phải có lý do loại bỏ.
  1. Kiểm feedTaker side, đơn vị và đồng hồ rõ.
  2. Đo hai nhánhAbsorption hoặc CVD divergence.
  3. Đợi giá xác nhậnReclaim xảy ra sau khi feature được biết.
  4. Tính fill và stopQuote thực tế, spread và cực trị event.
  5. Đánh giá ngoài mẫuSo với price-only và độ trễ.

Hai hiện tượng cần đo riêng

Giao dịch luôn có người mua và người bán. Delta gắn dấu theo phía chủ động lấy thanh khoản: buy-taker trừ sell-taker. CVD cộng dồn delta từ mốc reset. Bybit ghi S của public trade là phía taker [1]; không dùng cùng cách hiểu cho trường S trong liquidation feed.

Absorption mua là giả thuyết lượng bán chủ động lớn được đáp ứng mà giá giảm ít. CVD vẫn có thể tạo đáy mới rất sâu trong tình huống này. Ngược lại, bullish CVD divergence yêu cầu giá có đáy thấp hơn nhưng CVD tại hai đáy giá có đáy cao hơn. Hai điều kiện không đồng nghĩa và có thể mâu thuẫn.

Một bên bid liên tục xuất hiện lại hỗ trợ mô tả bổ sung thanh khoản, không định danh người đặt lệnh. Sự biến mất của quote cũng chưa phân biệt khớp hay hủy [2]. Vì thế dùng tên absorption proxy và trình bày các quan sát, không khẳng định có một tổ chức giữ giá.

Detector hấp thụ và detector phân kỳ

Đề xuất absorption proxy ở vùng hỗ trợ S đã biết: trong cửa sổ W=30 giây, sell volume lớn hơn percentile 95 quá khứ cùng giờ; sell volume/(buy+sell)≥0,7; mức giảm midprice từ đầu cửa sổ tới min không quá 0,15 ATR1m trước cửa sổ. Yêu cầu có tổng volume tối thiểu và feed liên tục. Các ngưỡng này tự đặt để nghiên cứu.

Sau proxy, chờ close 1 phút trở lại trên S+buffer trong tối đa K=3 nến. Entry từ quote sau close; stop dưới min của toàn event trừ buffer. Đây là nhánh bán chủ động bị hấp thụ rồi reclaim. Bearish nhánh mua chủ động bị hấp thụ đảo dấu.

Nhánh divergence dùng hai pivot low giá với L=R=2. Khi pivot thứ hai được xác nhận, kiểm P2<P1−buffer và CVD(time_P2)>CVD(time_P1)+delta_min. CVD được lấy tại chính timestamps của hai pivot giá, không ghép hai đáy CVD đẹp ở nơi khác. Pivot chỉ khả dụng sau hai nến bên phải; nếu hai điểm nằm khác phiên reset thì không so trực tiếp.

Một trade không phân loại được hoặc mất đoạn feed làm CVD sau đó không còn đầy đủ, dù hai endpoint vẫn có số. Đánh dấu cả đoạn tích lũy không khả dụng tới reset mới hoặc tới khi phục hồi dữ liệu và dựng lại thành công; chỉ so pivot khi toàn khoảng giữa chúng có flow đã phân loại đầy đủ. Nếu chỉ thiếu reset từ trước cả hai pivot, cần chứng minh cùng hằng số gốc và đầy đủ các increment; baseline bảo thủ vẫn yêu cầu đoạn hợp lệ.

on_trade(tr):
  if tr.id in seen_ids: return
  if tr.taker_side not in {BUY,SELL} or not valid_size_and_feed(tr):
    mark_window_and_cumulative_segment_unavailable_until_reset_or_rebuild(); return
  seen_ids.add(tr.id)
  signed_size = (+1 if tr.taker_side == BUY else -1)*normalized_size(tr)
  delta_bucket += signed_size
  CVD += signed_size
on_window_close(t):
  if not full_window_and_prior_baseline_available(t): return
  absorption = near_frozen_support and total_size>=configured_minimum
  absorption &= sell_share>=0.7 and sell_size>past_p95
  absorption &= downward_excursion<=0.15*ATR_before_window
  if absorption and no_active_event:
    arm_reclaim_candidate(known_at=window_data_ready_at,expiry=fixed_deadline)
on_price_pivot_confirmation(p2,t):
  p1 = previous_confirmed_price_low(p2)
  if p1 is None or not same_cvd_reset(p1,p2): return
  if missing_cvd_at_either_pivot(p1,p2): return
  if not complete_classified_flow_between(p1.occurred_at,p2.occurred_at): return
  if not cumulative_segment_valid(p1,p2): return
  divergence = p2.price<p1.price-buffer and cvd_at(p2)>cvd_at(p1)+dmin
  if divergence and no_active_event:
    arm_candidate(known_at=received_confirmation_time(t))
# Unclassified trades never default to SELL; overlapping windows do not reset TTL.

Đồng hồ, phân loại và volume

Lưu event time, receive time, ID giao dịch và trạng thái kết nối. Nếu chỉ có OHLCV, một cách phân loại theo nến tăng giảm là ước lượng khác, phải đổi tên; nó không phát hiện được bán mạnh nhưng giá giữ ổn. Không cộng cả raw trades và aggregate trades của cùng tập giao dịch.

Chuẩn hóa size theo một đơn vị cố định. CVD coin và CVD notional có thể cho dấu hoặc độ lớn khác khi giá thay đổi nhiều; chọn trước. Với hợp đồng inverse, dùng contract specification thay vì nhân size với giá một cách máy móc. Baseline percentile chỉ dùng dữ liệu đã có trước cửa sổ.

CVD là flow đã xảy ra; nghiên cứu OFI nhấn mạnh việc quan sát cả quote events [3]. Tuy nhiên thêm L2 không tự làm detector biết iceberg. Có thể đo lượng bid bổ sung gần S sau các lượt sell, nhưng feed gộp và thanh khoản ẩn làm phép đo không đầy đủ.

Ví dụ absorption thắng và divergence thua

Dữ liệu giả lập: hỗ trợ S=100, ATR trước cửa sổ=2, buffer=0,1. Trong 30 giây có buy=20, sell=100 đơn vị, delta=−80, sell share=83,3%; p95 lịch sử sell=70. Mid từ 100,10 xuống min 99,85, excursion 0,25≤0,30. Đây là absorption proxy dù CVD giảm mạnh.

Nến tiếp theo close 100,2, mua quote 100,25, stop 99,75 và target 101,25: risk 0,50, reward 1,00, tương đương 2R trước chi phí. Nếu quote thực tế 100,6 thì reward còn 0,65 trong khi risk 0,85; policy RR tối thiểu đã đặt có thể loại entry. Không giữ entry giả 100,25 khi không giao dịch được ở đó.

Ví dụ divergence thất bại: hai đáy giá 100 rồi 99,5, CVD tại đó−500 rồi−420 cùng phiên. Sau xác nhận pivot, giá reclaim 100,1; mua 100,15, stop 99,4. Giá vẫn giảm và khớp stop 99,35, lỗ 0,80. Phân kỳ mô tả thay đổi flow nhưng không loại bỏ khả năng người mua thụ động rút bid hoặc một đợt bán mới xuất hiện.

Confirmation quan trọng hơn nhãn đẹp

Cùng một proxy có thể tiếp tục bị ép xuống hàng chục cửa sổ. Gom các cửa sổ chồng lấn thành event; quy tắc chỉ một entry hoặc số re-entry hữu hạn phải có trước. Hủy candidate khi hết K, feed stale, spread vượt ngưỡng hay giá phá min thêm quá mức trước xác nhận.

Nếu dùng passive limit để cải thiện entry, đó là strategy khác với mua sau reclaim. Fill xác suất thấp và adverse selection có thể ăn hết lợi thế của giá đẹp. Tick replay hoặc dữ liệu quote cần kiểm soát thanh khoản có thật tại thời điểm order đến.

Thoát fixed-R, về VWAP đã biết hoặc theo swing là các nhánh riêng. Khi dùng VWAP làm target, không dùng VWAP cuối phiên để chọn giao dịch trước đó. Ghi phí, slippage và funding nếu giữ hợp đồng qua thời điểm tính phí.

Kiểm định phần giá trị tăng thêm của delta

Đối chứng price-only reclaim tại cùng vùng, cùng giờ và volatility. So absorption-only, divergence-only và kết hợp; không giả định thêm điều kiện luôn tốt. Báo tỷ lệ candidate có confirmation và fill, không chỉ win rate của số trade cuối cùng.

Cần kiểm độ trễ thêm 100–500ms hoặc giá trị phù hợp hạ tầng như một sensitivity đề xuất; kiểm giai đoạn đứt feed riêng. Nếu lợi nhuận biến mất với một spread, kết luận nên phản ánh fragility.

Tách venue để xem signal thuộc thanh khoản cục bộ hay giữ được ở feed khác. Reset CVD, pivot delay, overlapping events và percentile có thể thay đổi kết quả nhiều hơn hình thức chart. Lưu phiên bản toàn bộ preprocessing để tái lập.

Sai lầm thường gặp

Gộp hai cơ chế

Absorption có thể xảy ra cùng CVD tạo đáy mới, nên ép divergence có thể loại chính mẫu cần nghiên cứu.

CVD của một sàn thành toàn thị trường

Venue khác có thể có dòng lệnh đối nghịch.

Nhầm quote giảm là bán

L2 size giảm có thể do hủy, cần trade feed để đo aggressive delta.

Checklist trước khi dùng phương pháp

Tự đánh dấu khi đã kiểm tra trên dữ liệu của bạn. Trạng thái lưu trong trình duyệt này; đây không phải chứng nhận chiến lược có lãi.

0/7 mục

Câu hỏi thường gặp

Volume rất cao và râu dài có đủ gọi absorption?

Chỉ là proxy OHLCV yếu hơn. Absorption theo bài đòi phân loại giao dịch chủ động và đo tiến triển giá.

CVD divergence vào lệnh ngay được không?

Đó là một feature. Bài chờ xác nhận giá và mô hình entry cụ thể; không có bằng chứng nó tự đủ sinh lợi.

Nguồn nghiên cứu

Các nguồn dưới đây hỗ trợ phần định nghĩa hoặc bằng chứng được ghi bên cạnh. Mã giả, ví dụ minh họa và tham số đề xuất trong bài cần được kiểm định riêng.

  1. Public TradeBybit. Đọc schema taker side, trade time và ID; tài liệu dữ liệu, không phải strategy. Đối chiếu: .
  2. OrderbookBybit. Đối chiếu quote size, snapshot/delta và phạm vi book công khai. Đối chiếu: .
  3. The price impact of order book eventsCont, Kukanov và Stoikov. Đọc nghiên cứu flow/quote; không phải kiểm định detector absorption/CVD ở đây. Đối chiếu: .

Đọc tiếp theo phương pháp

Lưu ý rủi ro

Nội dung phục vụ giáo dục và thiết kế nghiên cứu, không phải lời khuyên tài chính. Backtest là mô phỏng lịch sử, không bảo đảm hiệu quả tương lai và không đặt lệnh giao dịch thật. Các phương pháp trong thư viện không mặc nhiên là tính năng đã có trong ứng dụng. Xem phương pháp tính và trung tâm học.

Kiểm tra quy tắc trước khi dùng vốn thật

Đối chiếu khả năng hỗ trợ của ứng dụng, dữ liệu và từng giao dịch mô phỏng; các detector nâng cao có thể cần triển khai riêng.

Tải Backtest trên App Store