一个功能完整的Binance BTC期权数据爬取和分析系统,支持获取期权合约信息、历史K线、订单簿快照、成交记录、标记价格、持仓量等全面数据。
- 期权合约信息: 自动获取所有BTC期权合约的基本信息
- 历史K线数据: 支持多种时间周期(1m, 5m, 15m, 30m, 1h, 4h, 1d)
- 订单簿快照: 实时订单簿深度数据
- 成交记录: 最近成交明细
- 标记价格: 期权标记价格和希腊字母
- 持仓量: 期权未平仓合约数据
- 完整期权链: 获取类似交易界面的T型期权表格数据
- 实时价格: 包含买卖价、标记价格、隐含波动率
- 希腊字母: Delta, Theta, Gamma, Vega等风险指标
- 持仓量数据: 各执行价的持仓量统计
- 多种格式: 支持JSON和CSV格式输出
- 增量存储: 避免重复数据,节省存储空间
- 多格式支持: CSV、JSON格式存储
- 数据分析: 合约分布、价格统计、交易量分析
- 状态监控: 实时数据状态检查
- 异步爬取: 提高大批量数据获取效率
- 定时任务: 支持自动化数据更新
- 错误处理: 完善的错误处理和重试机制
- 速率限制: 自动处理API速率限制
# 安装依赖
pip install -r requirements.txt
# 创建数据目录
mkdir -p data/klines data/orderbook data/trades data/mark_prices data/open_interest data/option_chains# 完整数据爬取(最近7天)
python btc_options_crawler.py --mode full --days 7
# 快速更新模式
python btc_options_crawler.py --mode quick --days 7# 获取所有到期日的期权链数据
python btc_options_crawler.py --mode option_chain
# 获取特定到期日的期权链数据
python btc_options_crawler.py --mode option_chain --expiry 2025-01-31
# 运行期权链数据示例
python example_option_chain.py# 查看系统状态
python btc_options_crawler.py --mode status
# 启动定时任务
python btc_options_crawler.py --mode scheduler期权链数据包含以下信息:
T型表格格式:
Call_OI | Call_IV | Call_Δ | Call_Mark | Call_Bid | Call_Ask | Strike | Put_Bid | Put_Ask | Put_Mark | Put_Δ | Put_IV | Put_OI
--------|---------|--------|-----------|----------|----------|--------|---------|---------|----------|-------|--------|--------
150 | 0.6234 | 0.7234 | 2845.67 | 2840.00 | 2850.00 | 90000 | 125.50 | 135.50 | 130.25 |-0.276 | 0.5987 | 89
245 | 0.5891 | 0.6789 | 2234.12 | 2230.00 | 2240.00 | 95000 | 245.00 | 255.00 | 250.00 |-0.321 | 0.6123 | 134
数据字段说明:
- Call_OI/Put_OI: Call/Put持仓量
- Call_IV/Put_IV: Call/Put隐含波动率
- Call_Δ/Put_Δ: Call/Put Delta值
- Call_Mark/Put_Mark: Call/Put标记价格
- Call_Bid/Put_Bid: Call/Put买入价
- Call_Ask/Put_Ask: Call/Put卖出价
- Strike: 执行价格
Binance_options/
├── README.md # 项目说明文档
├── requirements.txt # Python依赖包
├── config.py # 配置文件
├── data_models.py # 数据模型定义
├── binance_api.py # Binance API接口
├── data_storage.py # 数据存储功能
├── btc_options_crawler.py # 主爬虫程序
├── example_usage.py # 基本使用示例
├── example_option_chain.py # 期权链数据示例 NEW
└── data/ # 数据存储目录
├── btc_option_contracts.csv
├── klines/ # K线数据
├── orderbook/ # 订单簿数据
├── trades/ # 成交数据
├── mark_prices/ # 标记价格数据
├── open_interest/ # 持仓量数据
└── option_chains/ # 期权链数据 NEW
from binance_api import BinanceOptionAPI
from data_storage import DataStorage
# 初始化
api = BinanceOptionAPI()
storage = DataStorage()
# 获取期权链数据
option_chain_data = api.get_option_chain_data()
# 显示摘要
storage.display_option_chain_summary(option_chain_data)
# 保存为T型表格
storage.save_option_chain_data(option_chain_data)from btc_options_crawler import BTCOptionsCrawler
crawler = BTCOptionsCrawler()
# 获取最近7天的完整数据
crawler.run_full_crawl(days_back=7)from binance_api import BinanceOptionAPI
api = BinanceOptionAPI()
# 获取特定合约的标记价格
mark_price = api.get_mark_price("BTC-250131-100000-C")
# 获取订单簿
orderbook = api.get_orderbook("BTC-250131-100000-C")
# 获取持仓量
open_interest = api.get_open_interest("BTC-250131-100000-C")- BINANCE_BASE_URL: Binance期权API基础URL
- REQUEST_TIMEOUT: 请求超时时间
- RATE_LIMIT_DELAY: 请求间隔时间
- MAX_RETRIES: 最大重试次数
- KLINE_INTERVALS: 支持的K线时间周期
- DEFAULT_KLINE_LIMIT: 默认K线数据数量
- ORDERBOOK_DEPTH: 订单簿深度
- 完整JSON数据:
data/option_chains/option_chain_TIMESTAMP.json - T型表格CSV:
data/option_chains/option_chain_table_EXPIRY_TIMESTAMP.csv
- 合约信息:
data/btc_option_contracts.csv - K线数据:
data/klines/SYMBOL_INTERVAL_DATE.csv - 订单簿:
data/orderbook/orderbook_snapshots_DATE.csv - 成交记录:
data/trades/SYMBOL_trades_DATE.csv - 标记价格:
data/mark_prices/mark_prices_TIMESTAMP.csv - 持仓量:
data/open_interest/open_interest_TIMESTAMP.csv
- API限制: 请遵守Binance API的速率限制
- 网络稳定: 确保网络连接稳定
- 存储空间: 期权数据量较大,请确保足够的存储空间
- Python版本: 需要Python 3.7+
- 依赖版本: 使用最新的依赖包版本以确保兼容性
- ✅ 新增期权链(T型表格)数据获取功能
- ✅ 修复API端点兼容性问题
- ✅ 优化数据存储格式
- ✅ 新增标记价格和持仓量数据采集
- ✅ 改进错误处理和重试机制
- ✅ 基础期权数据爬取功能
- ✅ K线、订单簿、成交数据采集
- ✅ 数据存储和分析功能
-
API请求失败
- 检查网络连接
- 确认API端点可访问
- 检查请求频率是否过高
-
数据格式错误
- 更新到最新版本
- 检查API响应格式变化
-
依赖安装失败
- 使用虚拟环境
- 更新pip版本
- 检查Python版本兼容性
如有问题或建议,请通过以下方式联系:
- 创建Issue进行讨论
- 提交Pull Request贡献代码
免责声明: 本工具仅供学习和研究使用,使用时请遵守相关法律法规和交易所规定。