CTP程序化交易入门系列之一:准备

论坛 期权论坛 期权     
期权匿名问答   2022-11-15 00:39   10036   17
前言:
笔者自毕业后一直从事低延时交易系统开发行业,这些年经历过神奇bug,给客户培训,回答客户千奇百怪的问题。在这个过程中,自身能力得到了很大的提升,但有时在面对一些小白问题时,总是感叹为何没有一系统的文章教一些最简单的入门,降低程序化交易的门槛,于是便心生了写一系列文章的初衷。
目前国内期货程序化交易条件成熟,入门门槛很低。证券程序化虽然有逐步放开的趋势,但现在看来还具有一定门槛。所以这一系列文章将以期货程序化交易为例,期望读者有基本的期货知识,Python语言基础。
这一系列文章将分享:

  • 程序化入门知识;
  • 如何用CTP API报单,获取行情
  • 如何计算资金,持仓;
  • 如何由Tick数据获得K线数据;
  • 如何计算现手增仓及如何实现一些简单的策略;
......
由于本人经验有限,难免文章中也会有各种问题,欢迎各位一起讨论及指正。
一、柜台系统简介




图1 程序化交易链路简图

    依据国内监管要求,客户无法直连交易所系统,中间必须经过期货公司(Broker)的系统,这便是柜台系统
    期货公司会有多套柜台系统,在功能上可以分为主席和次席系统。主席系统功能全面,支持出入金,盘后结算等,讲究的是高吞吐量与高可靠性,一般客户都是在主席系统上交易。
    例如CTP (Comprehensive Transaction Platform, 综合交易平台)即是上期所子公司上期技术开发的一套主席系统。
    次席系统一般只做下单及撤单用,讲究的是低延迟穿透时间,一般为对时延要求较高的客户准备。
    对于同时报出的相同订单,次席的单子会先到达交易所撮合。不过报单如何最快地到达交易所是由很多因素所决定的,穿透时间的测试也有很多学问,后面我会单独分享一系列低延迟交易系统研究。
    柜台系统一般都会提供API(Application Programming Interface,应用程序编程接口)给程序化客户接入柜台使用。CTP API是CTP系统提供的编程接口,可以在上期技术官网直接下载得到。
    官网上只提供C++版本的API,而C++学习曲线陡峭,对很多初学者来说很不友好,不适合用来入门。本人编译了原生Python 版CTP API,这一系列文章将以此Python版API来讲解调试,所有代码完全开源。微信后台回复"PyCTP"可以直接获得Python版本API、demo及使用说明下载链接。
    Python版接口函数使用方法及数据结构与C++版完全一致,用法也是一样的,所以使用C++的读者也可以按本系列方法直接使用C++版API。
二、程序化登录信息

    客户如果需要调用API接入柜台进行程序化交易,登录时需要一些基本信息,如下:
    1. BrokerID
    简称期商编码,是指该期货公司在CTP系统上的编码,为四位数。例如海通期货是8000。
    2. TradeFront, MarketFront
    TradeFront是指CTP系统的交易前置IP地址,客户用来连接下单撤单等;MarketFront是指行情前置IP地址,用来订阅收取行情。
    3. InvestorID(UserID,InvestUnitID)
    投资者代码,是指该客户在CTP系统上的唯一ID,在期货公司开户后由期货公司分配得到。UserID是操作员代码,InvestUnitID是投资单元代码,普通投资者遇到要填这两个值的,直接填InvestorID即可。
    4.Password
    开户时设置的密码。需要注意的是开户完首次登录CTP系统需要修改密码,在期货公司官网上下载快期客户端登录,点修改密码就可以。
    5.AppID
    客户终端软件代码。
    6.AuthCode
    客户终端软件认证码。

    以上1和2对于一家期货公司同一套系统的所有客户都是一样的。开户时在哪家期货公司就用哪家期货公司的信息,如果开户时没有得到,可以查看期货公司页面或咨询客服得到。也可以公众号后台回复"地址"得到市场上主要期货公司的期商编码及前置地址。
    5和6信息是为了配合穿透式监管,如何获得请参考上篇文章什么是穿透式监管,需要投资者做什么?3.2.1章节。
三、模拟仿真

    仿真系统有两种,一种是期货公司提供的,这类后台基本是连接对应的交易所的测试环境,可以询问期货公司是否提供;
    另一种是上期技术提供的产品simnow。这一系列文章中我们主要用simnow测试。参考图1,Simnow仿真环境主要分为两部分:
    第一部分是CTP柜台系统,与生产环境相同。客户可以直接使用官网下载得到的CTP API在simnow测试,然后无缝对接到期货公司生产环境;
    第二部分是模拟交易所系统,目前这是上期技术基于上期所系统自己开发的模拟交易所,并非真正的对应的五个交易所的测试环境。

    在simnow上仿真交易也需要上述第二节中提到的登录信息。
    1和2可以从simnow主页产品与服务页面获取。这里有两套环境,注意看下面的服务时间,第一套与实际生产同步,只在交易日交易时间段提供服务。
    3和4可以从simnow主页右上角注册账号,注册成功后即可收到短信获取。
    5和6在simnow是默认统一的,即APPID为simnow_client_test,认证码为0000000000000000(16个0)。
提示:

  • 填写账号信息时,柜台选择选“标准CTP”。
  • 收到的短信中的账号密码即登录系统的InvestorID和Password,首次登录时需要修改密码,可以在simnow主页上点击修改密码。
  • 注册成功后将会得到200万模拟资金,如果资金亏完后可以去官网上入金。

好了,有了API,及测试的地址账号密码等信息,就可以开启程序化交易之路了!

下节预告:
CTPAPI基本架构,如何使用API获取行情

长按二维码,关注公众号
一起学习程序化交易!

分享到 :
0 人收藏

17 个回复

倒序浏览
2#
期权匿名回答  16级独孤 | 2022-11-15 00:40:44 发帖IP地址来自 广东广州
模拟账号注册后 默认初始资金改为200w了哈
3#
期权匿名回答  16级独孤 | 2022-11-15 00:40:52 发帖IP地址来自 北京丰台
谢谢提醒哈,改了[大笑]
4#
期权匿名回答  16级独孤 | 2022-11-15 00:41:32 发帖IP地址来自 北京
仿真交易挺多功能欠缺,不能查看历史交易记录,不能自己调整资金
5#
期权匿名回答  16级独孤 | 2022-11-15 00:42:18 发帖IP地址来自 中国
历史记录可以查历史结算单,网站现在可以自己入金
6#
期权匿名回答  16级独孤 | 2022-11-15 00:42:24 发帖IP地址来自 北京
很好的教程,感谢!
7#
期权匿名回答  16级独孤 | 2022-11-15 00:43:13 发帖IP地址来自 中国
谢谢,我再接再砺
8#
期权匿名回答  16级独孤 | 2022-11-15 00:43:32 发帖IP地址来自 中国
写的很好,希望继续看到楼主佳作
9#
期权匿名回答  16级独孤 | 2022-11-15 00:44:28 发帖IP地址来自 北京
写的非常好,让我们初入者少走了很多弯路
10#
期权匿名回答  16级独孤 | 2022-11-15 00:45:10 发帖IP地址来自 北京
谢谢认可[惊喜]
11#
期权匿名回答  16级独孤 | 2022-11-15 00:45:31 发帖IP地址来自 中国
这个相当于完全自己写交易软件吗?与那些量化平台(比如发明者)上开发有何不同呢?
12#
期权匿名回答  16级独孤 | 2022-11-15 00:46:15 发帖IP地址来自 北京
brokerid 是会重复吗,海通跟兴业是一样的
13#
期权匿名回答  16级独孤 | 2022-11-15 00:46:26 发帖IP地址来自 北京邮电大学
是的,都是8000,他们自己编的,想编啥编啥
14#
期权匿名回答  16级独孤 | 2022-11-15 00:47:00 发帖IP地址来自 北京
大神,转发了
[棒]
15#
期权匿名回答  16级独孤 | 2022-11-15 00:47:23 发帖IP地址来自 北京
谢谢
16#
期权匿名回答  16级独孤 | 2022-11-15 00:48:20 发帖IP地址来自 北京大兴
上期技术天天崩 进不去官网下载 请问肿么回事
[安慰]
17#
期权匿名回答  16级独孤 | 2022-11-15 00:48:33 发帖IP地址来自 广东东莞
PyCTP
18#
期权匿名回答  16级独孤 | 2022-11-15 00:49:21 发帖IP地址来自 北京
景色,按照你的说明,我把ctp跑起来了。这3中连接模式具体是什么场景啊:
1.直连模式
2.中继服务器操作员模式(一对多模式)
3.中继服务器非操作员模式(多对多模式)
不太明白,可以不吝赐教解答下么。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP