名称: cryptofeed 描述: Cryptofeed - 来自40多家交易所的实时加密货币市场数据源。WebSocket流式传输、标准化数据、订单簿、交易、行情。用于算法交易和市场数据分析的Python库。
Cryptofeed 技能
提供关于Cryptofeed开发的全面帮助 - 这是一个用于处理加密货币交易所数据源的Python库,提供标准化和统一的结果。
何时使用此技能
此技能应在以下情况下触发:
- 处理实时加密货币市场数据时
- 从加密货币交易所实现WebSocket流式传输时
- 构建算法交易系统时
- 处理订单簿更新、交易或行情数据时
- 连接40多家加密货币交易所时
- 使用标准化交易所API时
- 实现市场数据后端(Redis、MongoDB、Kafka等)时
快速参考
安装
# 基本安装
pip install cryptofeed
# 包含所有可选后端
pip install cryptofeed[all]
基本使用模式
from cryptofeed import FeedHandler
from cryptofeed.exchanges import Coinbase, Bitfinex
from cryptofeed.defines import TICKER, TRADES, L2_BOOK
# 定义回调函数
def ticker_callback(data):
print(f"行情: {data}")
def trade_callback(data):
print(f"交易: {data}")
# 创建数据处理器
fh = FeedHandler()
# 添加交易所数据源
fh.add_feed(Coinbase(
symbols=['BTC-USD'],
channels=[TICKER],
callbacks={TICKER: ticker_callback}
))
fh.add_feed(Bitfinex(
symbols=['BTC-USD'],
channels=[TRADES],
callbacks={TRADES: trade_callback}
))
# 开始接收数据
fh.run()
全国最优买卖报价(NBBO)
from cryptofeed import FeedHandler
from cryptofeed.exchanges import Coinbase, Gemini, Kraken
def nbbo_update(symbol, bid, bid_size, ask, ask_size, bid_feed, ask_feed):
print(f'交易对: {symbol} 买价: {bid:.2f} ({bid_size:.6f}) 来自 {bid_feed}')
print(f'卖价: {ask:.2f} ({ask_size:.6f}) 来自 {ask_feed}')
f = FeedHandler()
f.add_nbbo([Coinbase, Kraken, Gemini], ['BTC-USD'], nbbo_update)
f.run()
支持的交易所(40+)
主要交易所
- 币安(现货、期货、交割、美国站)
- Coinbase、Kraken(现货、期货)、Bitfinex
- Gemini、OKX、Bybit
- 火币(现货、DM、Swap)、Gate.io(现货、期货)
- KuCoin、Deribit、BitMEX、dYdX
其他交易所
AscendEX、Bequant、bitFlyer、Bithumb、Bitstamp、Blockchain.com、Bit.com、Bitget、Crypto.com、Delta、EXX、FMFW.io、HitBTC、Independent Reserve、OKCoin、Phemex、Poloniex、ProBit、Upbit
支持的数据通道
市场数据(公开)
- L1_BOOK - 订单簿顶部
- L2_BOOK - 价格聚合数量
- L3_BOOK - 价格聚合订单
- TRADES - 已执行交易(吃单方)
- TICKER - 行情更新
- FUNDING - 资金费率数据
- OPEN_INTEREST - 未平仓量统计
- LIQUIDATIONS - 清算事件
- INDEX - 指数价格数据
- CANDLES - K线数据
认证通道(私有)
- ORDER_INFO - 订单状态更新
- TRANSACTIONS - 充值和提现
- BALANCES - 钱包余额更新
- FILLS - 用户已执行交易
支持的后端
直接将数据写入存储:
- Redis(流和有序集合)
- Arctic - 时间序列数据库
- ZeroMQ、InfluxDB v2、MongoDB
- Kafka、RabbitMQ、PostgreSQL
- QuasarDB、GCP Pub/Sub、QuestDB
- UDP/TCP/Unix套接字
主要特性
实时数据标准化
Cryptofeed对所有交易所的数据进行标准化,提供一致的:
- 交易对格式
- 时间戳处理
- 数据结构
- 通道名称
WebSocket + REST回退
- 主要使用WebSocket进行实时数据传输
- 当WebSocket不可用时回退到REST轮询
- 自动重连处理
NBBO聚合
通过聚合多个交易所的数据创建合成全国最优买卖报价源,以发现套利机会。
后端集成
无需自定义集成代码即可直接将数据写入各种存储系统。
要求
- Python: 3.8或更高版本
- 安装: 通过pip或从源码安装
- 可选依赖: 根据需要安装后端
常见用例
多交易所价格监控
fh = FeedHandler()
fh.add_feed(Binance(symbols=['BTC-USDT'], channels=[TICKER], callbacks=ticker_cb))
fh.add_feed(Coinbase(symbols=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb))
fh.add_feed(Kraken(symbols=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb))
fh.run()
订单簿深度分析
def book_callback(book, receipt_timestamp):
print(f"买盘: {len(book.book.bids)} | 卖盘: {len(book.book.asks)}")
fh.add_feed(Coinbase(
symbols=['BTC-USD'],
channels=[L2_BOOK],
callbacks={L2_BOOK: book_callback}
))
交易流分析
def trade_callback(trade, receipt_timestamp):
print(f"{trade.exchange} - {trade.symbol}: {trade.side} {trade.amount} @ {trade.price}")
fh.add_feed(Binance(
symbols=['BTC-USDT', 'ETH-USDT'],
channels=[TRADES],
callbacks={TRADES: trade_callback}
))
参考文件
此技能包含references/目录中的文档:
- getting_started.md - 安装和基本使用
- README.md - 完整概述和示例
需要详细信息时,使用view命令读取特定参考文件。
使用此技能
对于初学者
从基本FeedHandler设置和单个交易所连接开始,然后再添加多个数据源。
对于高级用户
探索NBBO数据源、认证通道和后端集成,用于生产系统。
对于代码示例
请参阅上面的快速参考部分和参考文件中的完整工作示例。
资源
- 仓库: https://github.com/bmoscon/cryptofeed
- PyPI: https://pypi.python.org/pypi/cryptofeed
- 示例: https://github.com/bmoscon/cryptofeed/tree/master/examples
- 文档: https://github.com/bmoscon/cryptofeed/blob/master/docs/README.md
- Discord: https://discord.gg/zaBYaGAYfR
- 相关: Cryptostore(容器化数据存储)
注意事项
- 需要Python 3.8+
- 以WebSocket为主,REST为备用
- 所有交易所数据标准化
- 积极开发和社区支持
- 支持40多家交易所且不断增加