Analisis Data Frekuensi Tinggi — Pemprosesan Data Pasaran Tahap Tik

Perdagangan frekuensi tinggi dalam kripto beroperasi pada skala masa milisaat/mikrosa. Memproses berjuta-juta tik setiap hari, mengendalikan aliran data yang meledak, dan mengekstrak isyarat mikrostruktur membezakan pedagang profesional daripada yang lain. Panduan ini menerangkan pengurusan data tahap tik dan analisis masa nyata yang menggerakkan kitaran kemas kini 5 minit Smart Money API.

Pandangan utama: Paus tidak menggerakkan pasaran serta-merta. Dagangan blok mereka mencipta tandatangan yang boleh dikesan dalam ketidakseimbangan buku pesanan, spread bid-ask, dan nisbah volum pengambil. Smart Money API menangkap tandatangan ini secara masa nyata.

Pengumpulan dan Penyimpanan Data Tik

Sumber Data

Untuk kripto, data tik datang dari:

Penyimpanan Tik Cekap dengan Parquet

Simpan data lajur termampat untuk pertanyaan pantas:

Python — Saluran data tik
import pandas as pd
import pyarrow.parquet as pq
# Penampan tik masa nyata (kumpulkan selama 1j, kemudian simpan)
tick_buffer = []
def on_tick(exchange, symbol, price, size, side, timestamp):
tick_buffer.append({
"timestamp": timestamp,
"exchange": exchange,
"symbol": symbol,
"price": price,
"size": size,
"side": side # "buy" atau "sell"
})
# Setiap jam, mampatkan dan simpan
if len(tick_buffer) > 1_000_000:
df = pd.DataFrame(tick_buffer)
pq.write_table(
pa.Table.from_pandas(df),
f"ticks/{symbol}_{timestamp:%Y%m%d_%H}.parquet",
compression="snappy"
)
tick_buffer = []

Analisis Buku Pesanan

Snapshot Buku Pesanan Tahap 2

Tangkap buku pesanan penuh setiap 100-500ms:

Python — Pemprosesan buku pesanan
class OrderBook:
def __init__(self):
self.bids = {} # harga -> saiz
self.asks = {} # harga -> saiz
def update(self, side, price, size):
if side == "bid":
if size == 0: del self.bids[price]
else: self.bids[price] = size
else:
if size == 0: del self.asks[price]
else: self.asks[price] = size
def get_imbalance(self, depth=10):
# Dapatkan 10 bida dan tawaran terbaik
top_bids = sorted(self.bids.items(), reverse=True)[:depth]
top_asks = sorted(self.asks.items())[:depth]
bid_volume = sum(size for _, size in top_bids)
ask_volume = sum(size for _, size in top_asks)
# Ketidakseimbangan: >1 = bullish (lebih tekanan beli)
kembali bid_volume / ask_volume jika ask_volume > 0 lain 1.0
def get_spread(self):
best_bid = max(self.bids.keys())
best_ask = min(self.asks.keys())
kembali (best_ask - best_bid) / best_bid # peratus spread

Isyarat Mikrostruktur

Ekstrak isyarat yang boleh ditindak lanjut dari struktur buku pesanan:

Metrik Mikrostruktur Pasaran

Harga Purata Berwajaran Volum (VWAP)

Penanda aras pelaksanaan yang lebih baik daripada harga penutup mudah:

Python — Pengiraan VWAP
def calculate_vwap(ticks):
# ticks: senarai tuple (harga, volum)
numerator = sum(harga * volum untuk harga, volum dalam ticks)
denominator = sum(volum untuk _, volum dalam ticks)
kembali numerator / denominator

Nisbah Pembeli/Penjual Taker

Kenal pasti pihak yang agresif:

Python — Analisis Taker
def get_taker_direction(tick):
# Jika harga dagangan = bid, maka penjual agresif (bekalan)
# Jika harga dagangan = ask, maka pembeli agresif (permintaan)
jika abs(tick.price - best_bid) < tick.price_step:
kembali "jual"
lain jika abs(tick.price - best_ask) < tick.price_step:
kembali "beli"
lain:
kembali "mid" # Dalam spread, mungkin kolam gelap
buy_volume = sum(t.size untuk t dalam ticks jika get_taker_direction(t) == "beli")
sell_volume = sum(t.size untuk t dalam ticks jika get_taker_direction(t) == "jual")
kembali buy_volume / (buy_volume + sell_volume) # % beli

Seni Bina Saluran Masa Nyata

Pemprosesan Aliran WebSocket

Sambung ke Bybit/Binance/Hyperliquid WebSocket untuk data langsung:

Python — Pengendali aliran langsung
import asyncio
import websockets
async def connect_bybit_ticks(symbol):
url = f"wss://stream.bybit.com/v5/public/spot"
async dengan websockets.connect(url) sebagai ws:
# Langgan aliran dagangan
tunggu ws.send(json.dumps({
"op": "langgan",
"args": [f"publicTrade.{symbol}"]
}))
async untuk mesej dalam ws:
data = json.loads(mesej)
untuk dagangan dalam data["data"]:
on_tick(
exchange="bybit",
symbol=symbol,
price=float(trade["price"]),
size=float(trade["size"]),
side=trade["side"],
timestamp=int(trade["time"])
)

Pemprosesan Teragih dengan Redis Streams

Urus berjuta-juta tik setiap hari dengan barisan mesej:

Python — Pemprosesan aliran Redis
import redis
r = redis.Redis(host='localhost', port=6379)
# Pengeluar: hantar tik ke aliran
def publish_tick(exchange, symbol, tick):
stream_key = f"ticks:{exchange}:{symbol}"
r.xadd(stream_key, {
"price": tick.price,
"size": tick.size,
"side": tick.side,
"ts": tick.timestamp
})
# Kumpulan pengguna membaca dengan penjejakan kelambatan
r.xgroup_create(stream_key, "analytics", id="$", mkstream=True)

Tambah isyarat masa nyata ke analisis anda

Smart Money API menggabungkan data tik dari 3 pertukaran dan 250+ dompet ikan paus. Gunakan isyarat mikrostruktur kami yang telah dikira untuk meningkatkan analisis masa nyata anda sendiri.

Mulakan Percuma Hari Ini →