10 分钟打通 openctp 的 CTP 模拟交易量化新手完整指南【免费下载链接】openctpopenctp提供CTP股票期权、中泰证券XTP、华鑫证券奇点TORA、东方证券OST、东方财富证券EMT、盈透证券TWS、易盛TAP、量投QDP等各通道的CTPAPI兼容接口CTP程序可以无缝对接各股票柜台。openctp也提供了一套基于TTS交易系统的模拟环境同样提供了CTPAPI兼容接口不仅支持国内期货与期权全品种也支持A股股票、基金、债券以及股票期权模拟交易可以替代Simnow为CTP量化交易开发者提供7x24可用的模拟环境。项目地址: https://gitcode.com/GitHub_Trending/op/openctpSimNow 只在交易时段可用申请模拟账号流程长晚上改完的回调代码要等到第二天开盘才有地方跑——这三个问题几乎绊倒每一个量化新手。openctp 用一套自研的 TTS 柜台解决了它7x24 全天候的 CTP 模拟交易环境覆盖国内期货、期权全品种以及 A 股股票、基金、债券、股票期权你写好的 CTP 回调代码一行不用改换个前置地址和账号就能直接跑。openctp 还是 SimNow差异在哪如果你正评估 openctp 能否作为 SimNow 替代直接看这张对照表维度SimNowopenctp可用性仅交易时段可用7x24、仿真、vip 仿真三套环境全天候可连账号门槛需申请 BrokerID、AppID、AuthCode无需经纪商号与认证信息注册模拟账号即可柜台覆盖仅 SimNow 柜台兼容 XTP、奇点、EMT、OST、TWS、QDP、FEMAS、TAP 等真实柜台品种覆盖期货与期权国内期货、期权全品种另加股票、基金、债券、股票期权语言支持以 C SDK 为主其他语言自行封装Python、Java、Go、C、C#、Rust 六套官方接口表格能这么填是因为 openctp 把各家柜台统一翻译成了 CTPAPI 标准同一份程序换 dll/so 就能从 TTS 模拟切到 XTP、奇点等真实柜台业务逻辑不用动。TTS 柜台本身采用与 CTP 相似的内存数据库 总线架构委托回报、成交回报的推送流程和 CTP 柜台完全一致所以接入它相当于同一套接口、换个前置而不是再学一套 API。动手前三套模拟环境与一个账号openctp 提供了三套模拟环境写代码之前先想清楚用哪一套7x24 环境循环回放最近交易日行情供开发调试全天候循环回放最近一个交易日的行情晚上写程序、调 bug 都合适。行情前置tcp://121.37.80.177:20004交易前置tcp://121.37.80.177:20002行情前置不需要账号。仿真环境交易时段与实盘一致用于验证策略交易前置tcp://121.37.90.193:20002支持国内各证券、期货交易所股票、期货及期权全品种合约仿真交易用来验证策略的实盘效果和培训演示。注意该环境不提供实盘行情推送需要实盘行情时用官方 CTP dll 连接实盘柜台无需账号。vip 仿真环境对仿真效果要求更高的用户功能与免费仿真环境相同另外支持 etf 期权等品种和 CTP 股票期权 API 兼容接口独立环境、带宽更高、可靠性更好属于付费服务。前置条件与 CTP 模拟账号规则环境要求只有两条Python 3.8 以上、网络可访问公网。模拟账号在 openctp 官网注册所有账号统一管理同一个微信号下的模拟号共享一个密码密码被改过用 MiniTrader 这类 CTP 客户端就能重置。10 分钟连上行情前置先执行pip install openctp-ctp安装 Python 接口无需自己编译然后跑最小行情程序from openctp_ctp import thostmduserapi as mdapi md mdapi.CThostFtdcMdApi.CreateFtdcMdApi() class MdSpi(mdapi.CThostFtdcMdSpi): def OnFrontConnected(self): print(已连上 openctp 行情前置) md.ReqUserLogin(mdapi.CThostFtdcReqUserLoginField(), 0) # 行情登录不校验账号 md.RegisterFront(tcp://121.37.80.177:20004) md.RegisterSpi(MdSpi()) md.Init()行情前置不校验账号密码OnFrontConnected回调里直接发ReqUserLogin即可。看到已连上 openctp 行情前置✅ 说明网络、接口、环境三件事全部就绪。顺带建立一个概念CTP 是回调驱动的Init()之后所有事件断线、登录结果、行情推送都从 Spi 回调里进来代码本身没有等待状态。第一次模拟成交的完整链路交易链路分五步缺一不可。第 1 步连接交易前置仿照上面的例子创建CThostFtdcTraderApiRegisterFront(tcp://121.37.80.177:20002)后调用Init()。少了这一步后面所有请求都发不出去。第 2 步登录 openctp 模拟账号在OnFrontConnected回调里发起ReqUserLogin。TTS 环境免 BrokerID、AppID、AuthCode填模拟账号和密码就行。第 3 步未确认结算单就下不了单⚠️ 登录成功后第一件事是调用ReqSettlementInfoConfirm等成功回调回来再下单。跳过这一步柜台会拒掉当天所有委托这是新手最高频的坑——委托莫名被拒时十有八九是它。第 4 步用关键字段下一笔限价单req tdapi.CThostFtdcInputOrderField() req.BrokerID # openctp 不需要经纪商号 req.UserID req.InvestorID 你的模拟账号 req.ExchangeID SHFE req.InstrumentID au2406 # 选回放时段内有成交的合约 req.Direction tdapi.THOST_FTDC_D_Buy # 买入 req.CombOffsetFlag tdapi.THOST_FTDC_OF_Open # 开仓 req.OrderPriceType tdapi.THOST_FTDC_OPT_LimitPrice # 限价单 req.LimitPrice 450.0 # 须为最小变动价位的整数倍 req.VolumeTotalOriginal 1 req.OrderRef 1 # 报单引用全局唯一逐单递增 td.ReqOrderInsert(req, 0)默认撮合机制是做市撮合柜台按实盘盘口撮合价格大于等于叫卖价的买单立即成交小于等于叫买价的卖单立即成交否则挂在队列里等行情符合条件。也就是说在 7x24 环境里限价只要越过回放盘口的对手价就会马上成交。7x24 环境另外提供客户间撮合仅限 TEST、BTC、MINUS 三个合约客户与客户直接成交可以按自己想要的节奏验证报单、撤单、部分成交逻辑。第 5 步用 OnRtnOrder 和 OnRtnTrade 跟踪回报下单结果不靠ReqOrderInsert的返回值靠回调推送def OnRtnOrder(self, order): print(报单状态:, order.OrderStatus, order.StatusMsg) def OnRtnTrade(self, trade): print(成交:, trade.InstrumentID, trade.Volume, , trade.Price)OnRtnTrade里看到成交链路就打通了。更完整的可运行版本参考 td_demo.py交易全流程与 md_demo.py行情订阅。下不了单照着这份清单自查现象原因处理办法前置连不上 / 连上即断行情与交易端口混填7x24 环境行情用 20004、交易用 20002仿真环境只有交易 20002能登录但下单全部被拒未确认结算单登录后先调ReqSettlementInfoConfirm等成功回调再下单登录失败账号没错同一微信号共享的密码被改过用 MiniTrader 等 CTP 客户端重置同微信号下账号同步生效报单被拒提示价格错误价格不是最小变动单位整数倍或超出涨跌停LimitPrice 取 PriceTick 的整数倍且不越过涨跌停价合约查不到行情 / 不成交合约不在回放时段7x24 回放最近交易日行情选当时正在交易的月份合约Linux 下订阅失败合约代码按字符串传入以 utf-8 字节串传入如au2406.encode(utf-8)进阶调优与周边生态几个上生产前值得记下的要点回调里只做轻量操作记状态、写队列sleep、文件 IO、网络请求全部丢给独立线程。行情按策略实际用到的合约订阅不做全量订阅。主题订阅用THOST_TERT_QUICK跳过历史回放只有需要复现历史数据时才切 RESTART。OrderRef必须全局唯一高频策略建议事件循环 线程安全队列单线程处理避免多线程竞争报单引用。周边工具与资料按需取用TickTraderopenctp 自研图形交易客户端支持点价下单、自动开平、图表可接 CTP、TTS、XTP、奇点等柜台。MiniTraderTickTrader 迷你版经 CTPAPI 兼容接口直连各柜台无需自己替换 dll。vn.pyVeighNa流行的 Python 量化框架仓库 readme 的友情推荐项目可配合 CTPAPI 做模拟交易。MT5CTPMT5 客户端直连 CTP 系柜台的桥接软件在 MetaTrader 5 界面里交易国内期货和期权。ViTrader仓库自带的命令行 CTP 交易客户端配置一个 ini 就能连柜台源码在 widgets/ViTrader/。tools 工具集prices行情显示、ctpcommand交互式查询资金持仓订单、ctpsettle把结算单解析成 JSON、FTD-XML从结构定义批量生成代码见 tools/README.md。其余语言接口ctpapi-java/、ctpapi-go/、ctpapi-c/、ctpapi-csharp/、ctpapi-rust/股票期权 API 的 Python 接口在 ctpopt-python/C 打印样例在 demo/ctpprint/。接下来你可以做读 CTP接口扩展说明掌握股票、债券、基金等品种的扩展枚举值对接股票柜台前必看。精读 td_demo.py 和 md_demo.py再浏览 docs/ 里的官方 PDF 资料。把 TTS-CTPAPI 说明 中三套环境的前置地址抄进自己的配置文件。【免费下载链接】openctpopenctp提供CTP股票期权、中泰证券XTP、华鑫证券奇点TORA、东方证券OST、东方财富证券EMT、盈透证券TWS、易盛TAP、量投QDP等各通道的CTPAPI兼容接口CTP程序可以无缝对接各股票柜台。openctp也提供了一套基于TTS交易系统的模拟环境同样提供了CTPAPI兼容接口不仅支持国内期货与期权全品种也支持A股股票、基金、债券以及股票期权模拟交易可以替代Simnow为CTP量化交易开发者提供7x24可用的模拟环境。项目地址: https://gitcode.com/GitHub_Trending/op/openctp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考