從資料到視覺化:將原始的高速成交流通過演算法聚合為結構化的市場K線。
K線圖在交易中無處不在——從專業終端到加密貨幣機器人。但什麼是"K線"?我們如何從原始、混亂的成交流中構建它?本文將詳細解析流程,突出棘手的邊界情況,並分享一個互動式視覺化工具,讓你即時觀察K線的形成。
試試視覺化工具:candle-trade-visualizer.vercel.app
摘要
- K線 是對固定時間區間(如1分鐘)價格和成交量的簡明總結。
- 聚合 是將成交流轉化為K線的過程。
- 邊界情況(重複、缺口、亂序成交)對準確性至關重要。
- 視覺化工具:動手操作,即時觀察K線形成!
什麼是K線?
K線(或蠟燭圖)是對特定週期(如1分鐘、1小時、1天)市場活動的總結。每根K線包含:
- 開盤價 — 區間內第一筆成交的價格
- 最高價 — 最高成交價
- 最低價 — 最低成交價
- 收盤價 — 區間內最後一筆成交的價格
- 成交量 — 總成交量
- 成交筆數 — 成交次數
看似簡單,實則細節決定成敗。
從成交到K線:聚合流程
1. 原始成交流
每毫秒,交易所都會產生成交:
{
"timestamp": 1714000000000,
"price": 50000.0,
"amount": 0.1,
"side": "Buy"
}
每秒可能有成千上萬筆成交,每筆僅記錄買賣資訊。
2. 按時間分組
構建K線時,需按時間分組。例如,12:00:00到12:00:59的所有成交歸為同一根1分鐘K線。
演算法:
- 對每筆成交,確定其所屬區間(截斷時間戳)。
- 若該區間已有K線,更新其最高/最低/收盤/成交量。
- 否則,建立新K線。
3. 邊界情況:為何並不簡單
- 亂序成交:成交可能因網路延遲等原因亂序到達。
- 重複:同一成交可能出現多次。
- 邊界成交:成交恰好落在區間邊界怎麼辦?
- 缺口:某些區間無成交怎麼辦?
健壯的聚合邏輯必須處理所有這些情況。在行業中,這對準確分析和演算法交易至關重要。
示例:K線聚合程式碼
以Rust為例(任何語言邏輯類似):
for trade in trades {
let ts = truncate_to_tf(trade.timestamp, timeframe);
if let Some(candle) = current_candle {
if candle.timestamp == ts {
// 更新 high/low/close/volume
} else {
// 保存当前K线,开始新K线
}
} else {
// 第一根K线
}
}
注意: 為保證聚合正確,成交流應按時間排序。否則需先排序,或用能處理亂序的演算法。
為什麼重要?
- 圖表:所有主流平臺(TradingView、Binance等)都基於K線繪製圖表。
- 演算法交易:策略基於K線而非原始成交。
- 分析:指標、訊號、統計均基於OHLCV資料。
- AGI與自動化:機器分析需嚴格、無歧義的資料。
親自體驗:互動式K線視覺化
我們開發了互動式視覺化工具:
👉 candle-trade-visualizer.vercel.app
- 手動或隨機新增成交。
- 觀察其如何聚合為K線。
- 嘗試不同週期和邊界情況。
結論
K線是所有市場分析的基礎。每根簡單K線背後,是對錯誤和邊界情況高度魯棒的聚合過程。構建系統時務必處理所有細節,否則圖表和策略可能誤導你。
試試視覺化工具,深入理解細節,讓你的K線更真實!
連結:
- 視覺化工具: candle-trade-visualizer.vercel.app
- 什麼是OHLCV: Wikipedia
- 程式碼與庫: GitHub
如果你覺得本文有用,歡迎分享給同事,讓市場資料對所有人更透明!
引文
@software{soloviov2025tradingcandlesdemystified,
author = {Soloviov, Eugen},
title = {交易K线揭秘:从原始成交到市场分析的基石},
year = {2025},
url = {https://marketmaker.cc/zh/blog/post/trading-candles-demystified},
version = {0.1.0},
description = {交易K线如何由原始成交构建?本文解释聚合过程、边界情况,并提供交互式可视化工具,实时观察K线的形成。}
}
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.