上漲和下跌的淨交易量參考
我是金融新手,我一直在關注價格、交易量和淨交易量方面的市場數據。從我收集到的:
交易量 - 在指定時間內的交易(買賣)數量。
淨交易量 - 在此期間上漲和下跌之間的差異,在此處顯示的範例中,本質上是指“下行”交易和“上行”交易之間的差異。
因此,舉個例子,在同一小時內我有 900 筆交易量和 +500 筆淨交易量,這意味著 200 筆交易量是向下交易,而 700 筆是向上交易。我的問題是,相對於什麼向上/向下?到最初的購買價格還是到最近的交易?
經典的淨交易量指標在 OHLCV 柱上執行,而不是在原始交易上執行。
- 當柱的收盤價高於開盤價時記錄上漲
- 當柱的收盤價低於開盤價時記錄下跌
- 有符號(定向)交易量在上漲時為正,在下跌時為負
- 淨交易量是已簽署交易量的累計總和
讓我用一個使用 5 分鐘柱線的例子來說明這個概念。
| datetime | open() | close() | tick | volume() | sign_volume | net_volume | |----------|--------:|--------:|-----:|---------:|------------:|-----------:| | 09:30:00 | 62.35 | 62.48 | 1 | 95611 | 95611 | 95611 | | 09:35:00 | 62.42 | 62.97 | 1 | 50887 | 50887 | 146498 | | 09:40:00 | 62.94 | 62.82 | -1 | 45114 | -45114 | 101384 | | 09:45:00 | 62.90 | 62.30 | -1 | 24267 | -24267 | 77117 | | 09:50:00 | 62.29 | 61.45 | -1 | 72576 | -72576 | 4541 | | 09:55:00 | 61.45 | 61.43 | -1 | 28622 | -28622 | -24081 | | 10:00:00 | 61.48 | 61.98 | 1 | 28092 | 28092 | 4011 | | 10:05:00 | 62.00 | 62.02 | 1 | 42849 | 42849 | 46860 |
下面的 SQL 查詢獲取原始交易,計算 OHLCV 柱線,按價格方向(
tick
列)對柱線進行分類,最後總結已簽署的交易量。SELECT *, SUM(signed_volume) AS net_volume FROM ( SELECT symbol, datetime, open(), close(), CASE WHEN close()>open() THEN 1 WHEN close()<open() THEN -1 ELSE 0 END AS tick, volume(), tick*volume() AS signed_volume FROM atsd_trade WHERE symbol = 'NTAP.US' AND datetime BETWEEN '2021-02-26' AND '2021-02-27' GROUP BY exchange, class, symbol, PERIOD(5 minute) ) WITH ROW_NUMBER(symbol ORDER BY datetime) > 0
OHLCV 柱的淨交易量對柱週期很敏感。
您也許可以通過使用 vwap 和/或通過收緊分時條件來穩定它,以便需要更大的價格變動來導致淨交易量的變化。
WHEN vwap()>prev_vwap THEN 1 WHEN vwap()<prev_vwap THEN -1 ELSE 0
WHEN close()>open()*1.001 THEN 1 WHEN close()<open()*0.999 THEN -1 ELSE 0
交易方向(買入或賣出)不是淨交易量的一部分計算。此外,它與訂單方向不同。在限價訂單簿中,當傳入的買單立即與正常賣單匹配時,交易被歸類為買入。如果傳入的買單不匹配,則將其放置在訂單簿中,當稍後的賣單接受時,該交易將被歸類為賣單。換句話說,正如@user47399 提到的,交易方向== 流動性接受者的訂單方向。在拍賣期間,當不使用限價訂單簿時,交易方向基於交易所分配的訂單號。在兩個參與的競價訂單中,交易方向是從後面的訂單中推斷出來的。要正確確定交易方向,需要訪問完整的訂單日誌或交易源,其中記錄由交易所預先分類。
買入交易可以是下跌交易,賣出交易可以是上漲交易。在下面的範例中,買入交易 3657601171 是下跌,而賣出交易 3657602494 導致上漲。
| datetime | price | quantity | side | prev_price | tick | trade_num | |----------------------------|-------:|---------:|------|-----------:|-----:|-----------:| | 2021-02-26 11:01:43.482121 | 35.251 | 1 | B | | 0 | 3657600807 | | 2021-02-26 11:01:47.289811 | 35.243 | 90 | B | 35.251 | -1 | 3657601171 | | 2021-02-26 11:01:47.289811 | 35.243 | 10 | B | 35.243 | 0 | 3657601172 | | 2021-02-26 11:01:51.535774 | 35.242 | 11 | B | 35.243 | -1 | 3657601628 | | 2021-02-26 11:01:59.153104 | 35.270 | 1 | S | 35.242 | 1 | 3657602494 | | 2021-02-26 11:01:59.153104 | 35.260 | 1 | S | 35.270 | -1 | 3657602495 | | 2021-02-26 11:01:59.153104 | 35.252 | 11 | S | 35.260 | -1 | 3657602496 | | 2021-02-26 11:01:59.682744 | 35.252 | 79 | S | 35.252 | 0 | 3657602528 | | 2021-02-26 11:01:59.682744 | 35.252 | 21 | S | 35.252 | 0 | 3657602529 |
SELECT * FROM ( SELECT datetime, price, quantity, side, LAG(price) AS prev_price, CASE WHEN price>prev_price THEN 1 WHEN price<prev_price THEN -1 ELSE 0 END AS tick, trade_num FROM atsd_trade WHERE symbol = '-- redacted AND datetime BETWEEN '2021-02-26 11:01:40' AND '2021-02-26 11:02:00' ) --WHERE (side = 'B' AND tick = -1 OR side = 'S' AND tick = 1)
為了獲得有意義的結果,根據原始交易計算的淨交易量需要按確切的交易時間(和訂單號)對數量進行分組,以便將同一訂單觸發的同時交易視為一筆交易。
例如,您將如何對均源自同一個 SELL 訂單並同時註冊的 SELL 交易 3657602494、3657602495、3657602496 進行分類?我認為應該將其視為 13 手的上漲。