前言:
笔者自毕业后一直从事低延时交易系统开发行业,这些年经历过神奇bug,给客户培训,回答客户千奇百怪的问题。在这个过程中,自身能力得到了很大的提升,但有时在面对一些小白问题时,总是感叹为何没有一系统的文章教一些最简单的入门,降低程序化交易的门槛,于是便心生了写一系列文章的初衷。
目前国内期货程序化交易条件成熟,入门门槛很低。证券程序化虽然有逐步放开的趋势,但现在看来还具有一定门槛。所以这一系列文章将以期货程序化交易为例,期望读者有基本的期货知识,Python语言基础。
这一系列文章将:
由于本人经验有限,难免文章中也会有各种问题,欢迎各位一起讨论及指正。
依据国内监管要求,客户无法直连交易所系统,中间必须经过期货公司(Broker)的系统,这便是柜台系统。
期货公司会有多套柜台系统,在功能上可以分为主席和次席系统。主席系统功能全面,支持出入金,盘后结算等,讲究的是高吞吐量与高可靠性,一般客户都是在主席系统上交易。例如CTP (Comprehensive Transaction Platform, 综合交易平台)即是上期所子公司上期技术开发的一套主席系统。
次席系统一般只做下单及撤单用,讲究的是低延迟穿透时间,一般为对时延要求较高的大客户准备。例如闪策,CTPmini2等柜台。
柜台系统一般都会提供API(Application Programming Interface,应用程序编程接口)给程序化客户接入柜台使用。CTP API便是CTP系统提供的编程接口,可以在上期技术官网直接下载得到。
官网上只提供C++版本的API,而C++学习曲线陡峭,对很多初学者来说很不友好,不适合用来入门。本人编译了原生CTP Python API,这一系列文章将以此Python版API来讲解调试,所有代码完全开源。
Python版接口函数使用方法及数据结构与C++版完全一致,用法也是一样的,所以使用C++的读者也可以按方法直接使用C++版API。
公众号后台回复"PyCTP"可以直接获得Python版本API、demo及使用说明下载链接。
客户如果需要调用API接入柜台进行程序化交易,登录时需要一些基本信息,如下:
以上1和2对于一家期货公司同一套系统的所有客户都是一样的。开户时在哪家期货公司就用哪家期货公司的信息,如果开户时没有得到,可以查看期货公司页面或咨询客服得到。也可以后台回复"地址"得到市场上主要期货公司的期商编码及前置地址。
5和6信息是为了配合穿透式监管,如何获得请参考公众号文章《什么是穿透式监管,需要投资者做什么?》3.2.1章节。
仿真系统有两种,一种是期货公司提供的,这类后台基本是连接对应的交易所的测试环境,可以询问期货公司是否提供;
另一种是上期技术提供的产品simnow。这一系列文章中我们主要用simnow测试。参考图1,Simnow仿真环境主要分为两部分:
在simnow上仿真交易也需要上述第二节中提到的登录信息。
1和2可以从simnow主页产品与服务页面获取。这里有两套环境,注意看下面的服务时间,第一套与实际生产同步,只在交易日交易时间段提供服务。
3和4可以从simnow主页右上角注册账号,注册成功后即可收到短信获取。
5和6在simnow是默认统一的,即APPID为simnow_client_test,认证码为0000000000000000(16个0)。
提示:
simnow常见问题:
下节预告:
CTPAPI基本架构及初始化
关注公众号,一起学习程序化交易!