第一章:期货市场与API基础
各位同学,咱们今天聊聊期货市场的根基——API对接。说实话,我做了这么多年量化交易系统,见过太多人一上来就急着写代码,结果连交易所的规则都没搞清楚。嗯,这就像你还没学会走路就想跑,摔跤是必然的。
1.1 国内四大期货交易所概览
国内期货市场,说白了就是四个大佬在坐庄。我习惯把它们分成两组:商品期货和金融期货。
| 交易所 | 简称 | 主要品种 | 特点 |
|---|---|---|---|
| 上海期货交易所 | SHFE | 铜、铝、锌、黄金、螺纹钢 | 工业品为主,流动性好 |
| 大连商品交易所 | DCE | 豆粕、豆油、铁矿石、焦炭 | 农产品+黑色系 |
| 郑州商品交易所 | ZCE | PTA、甲醇、白糖、棉花 | 化工品+软商品 |
| 中国金融期货交易所 | CFFEX | 沪深300、中证500、国债 | 金融衍生品,门槛高 |
你想想看,这四个交易所的API接口、交易规则、结算方式都不一样。我在项目中遇到过最头疼的事,就是同时对接三个交易所,结果每个交易所的报单格式都差那么一点点。嗯,细节决定成败。
核心要点:每个交易所都有自己的交易时间、涨跌停板、保证金比例。别指望一套代码通吃所有。
1.2 CTP与易盛API简介
说到API,国内期货市场绕不开两个名字:CTP和易盛。
CTP(综合交易平台),这是上期技术开发的。说实话,CTP是目前国内期货市场最主流的API。我个人的习惯是,只要条件允许,优先用CTP。为什么?因为它稳定、文档全、社区活跃。
CTP的核心特点:
- 支持期货、期权、股票期权
- 采用TCP长连接,心跳保活
- 报单速度在毫秒级
- 支持多账户、多席位
易盛API,这是郑州易盛公司开发的。我记得有一次帮客户做高频交易系统,客户指定要用易盛。当时我还不太熟悉,结果发现易盛的API设计思路和CTP完全不同。
易盛的核心特点:
- 主要面向商品期货
- 支持FIX协议和私有协议
- 报单速度更快,适合高频
- 但文档相对较少
我的建议:如果你是新手,先从CTP入手。CTP的文档和示例代码更完善,社区里踩坑的人也多,遇到问题容易找到答案。
1.3 API对接的合规要求与风险
这部分内容,我建议你认真看。因为合规问题一旦出事,不是赔钱那么简单,可能直接吊销牌照。
合规要求:
- 必须使用交易所认证的API版本
- 交易数据必须本地保存至少20年
- 禁止对交易所系统进行压力测试(除非获得许可)
- API密钥必须加密存储,不能硬编码在代码里
警告:我曾经见过一个团队,把API密钥直接写在配置文件里,还上传到了GitHub。结果被交易所发现,直接暂停了交易权限。嗯,这种事真的不能马虎。
主要风险:
- 网络延迟风险:你的服务器和交易所机房的物理距离,决定了你的报单速度。我建议你把服务器托管在交易所附近的机房。
- 协议变更风险:交易所会不定期更新API协议。我记得有一次CTP升级,很多人的程序直接崩了,因为数据结构变了。
- 风控风险:你的程序必须内置风控模块。比如单笔最大下单量、日内最大亏损、异常报单检测等。
说白了,API对接不只是技术活,更是合规活。你想想看,交易所每天处理几百万笔交易,你的程序如果出问题,影响的可能是整个市场。
1.4 知识体系总览
下面这张图,是我自己整理的API对接知识体系。你可以把它当作学习路线图。
这张图其实就概括了本章的核心内容。从上到下,你先了解交易所和API,然后掌握核心模块,最后别忘了合规和风控。嗯,每一步都不能少。
个人经验:我建议你在开始写代码之前,先把这张图打印出来贴在墙上。每次遇到问题,看看自己卡在哪一层,这样思路会清晰很多。
好了,第一章的内容就到这里。记住,API对接不是一蹴而就的事,慢慢来,把基础打牢。后面我们会一步步深入,从行情订阅到交易报单,再到性能调优,每一步我都会把踩过的坑告诉你。