名称: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多家交易所且持续增加