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

这一系列文章将:

  • 分享程序化入门知识;
  • 如何用CTP API报单,获取行情;
  • 如何计算资金,持仓,保证金,手续费;
  • 如何由Tick数据获得K线数据;
  • 如何计算现手增仓及如何实现一些简单的策略。

由于本人经验有限,难免文章中也会有各种问题,欢迎各位一起讨论及指正。

一、柜台系统简介

 依据国内监管要求,客户无法直连交易所系统,中间必须经过期货公司(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.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)。

提示:

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

simnow常见问题:

  • 1.连接不上,没有反应
    注意simnow提供了两套环境,服务时间在产品页面都已经写得很清楚。第一套与正式生产环境保持一致,一般来说是早8点开,下午4点停,晚上20:00开,凌晨2:30停。另外因为用户太多,有时前置会因为负载过大而宕机,可以换其他组IP测试,如果还是不行,那就只能联系上期技术客服了。
  • 2.simnow的行情哪里来
    第一套正式环境行情是直接转发的生产行情,也就是说客户报单成交对simnow的行情没有影响。第二套7*24环境是不间断重播上一交易日的行情。
  • 3.支不支持市价单,套利单,部分成交等
    因为simnow后台连接的是模拟交易所,功能待开发中。目前还不支持这些。
  • 4.其他
    可以先参考页面http://www.simnow.com.cn/static/SimNowFAQ.action查看常见问题,如果找不到请咨询客服。
    好了,有了API,及测试的地址账号密码等信息,就可以开启程序化交易之路了!

下节预告:
CTPAPI基本架构及初始化

关注公众号,一起学习程序化交易!

CTP程序化交易入门系列之一:准备相关推荐

  1. CTP程序化交易入门系列之四:行情订阅常见问题解答

    前言 这一章总结了大家订阅行情最常问的一些问题的相关解答,希望能有帮助.如有不对的地方,欢迎指正.后期会在这里更新迭代,欢迎到这底下提问! 更新时间:20201112 1 获取行情的地址在哪里可以查到 ...

  2. CTP程序化交易入门系列之六:报单(一)

    行情(mduserapi)这一块终于介绍的差不多了,下面着重介绍交易(traderapi)相关.再次强调两点: 一.交易和行情是完全独立的,互不干扰: 二.本系列用Python版本讲解,主要考虑到Py ...

  3. CTP程序化交易入门系列之二:API基本架构及初始化

    上节讲了CTP程序化交易的入门工作:下载API,准备账号密码地址等.这节我们来讲API基本架构及初始化. 一. CTP API基本架构  这里为了便于大家理解API的相关函数,我简略地讲一下API的基 ...

  4. CTP程序化交易入门系列之三:获取实时行情及k线合成

    前面两篇有了基础知识的准备,这一篇讲通过CTP API获取实时行情,录入csv,实时合成k线.github上开源了录入csv及合成k线代码,后台回复pyctp可获取.先上两张效果图: 图1 csv数据 ...

  5. 【量化】量化交易入门系列6:量化交易学习书籍推荐(二)

    作者:悠悠做神仙 来源: 恒生LIGHT云社区 上一篇 量化交易入门系列5:量化交易学习书籍推荐(一) 我们介绍一些量化交易一些操作和理论性书籍,可能对于刚入门的大家而言,可能有些枯燥.所以这篇文章, ...

  6. 【量化】量化交易入门系列5:量化交易学习书籍推荐(一)

    作者:悠悠做神仙 来源: 恒生LIGHT云社区 量化交易入门系列,给大家介绍了关于量化交易的数据源获取.编程语言推荐.经典的交易策略,那么本篇将介绍一些比较经典的量化交易书籍. 书籍是人类智慧的结晶, ...

  7. 【量化】量化交易入门系列2:经典的量化交易策略(上)

    作者:悠悠做神仙 来源: 恒生LIGHT云社区 上一篇文章 量化交易入门系列1:编程语言与数据源 ,介绍了关于量化交易的基本概念,以及要做量化交易的编程语言选择,和量化交易的一些数据源获取工具.那么, ...

  8. 小白期货CTP程序化交易开发入门(一)--CTP开发基础

    接触CTP也才半年多,一边学习一边摸索,看到各大CTP的QQ群里,也都是在问一些很菜的问题,就简单总结和介绍下,今天主要是基础知识,即CTP程序的基础和开源的Demo版本: CTP交易接口是由:::: ...

  9. MT5 C++ CTP程序化交易国内期货对接 MT5 (Meta Trader5)客户端技术方案(1)

    用C++实现程序化交易系统,采用上期技术CTP接口(期货).(股票)XPT接口:就系统架构而言,还算相比较单纯,但是要全面考虑各方面细节做到精致稳定,还是有一些工程量了:Meta Trader 5客户 ...

最新文章

  1. 斩草除根-修复被剪断的鼠标引线
  2. Html.BeginForm 与Section、Partial View 和 Child Action
  3. 万字归纳总结 | 数据库表设计与SQL编写技巧
  4. 用可编写脚本的终结点遍历REST应用程序
  5. mbsfn子帧_区分小区内子帧状态的方法、装置以及系统_2008100004878_说明书_专利查询_专利网_钻瓜专利网...
  6. 读中文_挑战来了!康辉喊你读中文十级绕口令!
  7. C#.net实现密码加密算法的语句
  8. 【Clickhouse】Clickhouse TTL 数据的存活时间
  9. React UI 库 React Suite 3.7.9 版本更新
  10. 机器学习之使用贝叶斯算法实现拼写检查器
  11. 中国移动企业文化考试试题含答案
  12. Trucksim车辆动力学模型
  13. c语言测试单句代码运行时间,c语言测试代码的运行时间
  14. 红月服务器制作过程,红月3.8C私服架设教程
  15. NOIP2017提高组广东省成绩
  16. maven-publish插件的使用笔记
  17. 安装程序无法继续因为计算机上安,Windows安装无法继续怎么办?Windows安装无法继续的解决方法...
  18. 软件公司的岗位职责 - IT项目经理
  19. Rosalind Java| Finding a Shared Motif
  20. Python imgaug库 安装与使用 (图片加模糊光雨雪雾等特效)

热门文章

  1. 相机拍摄照度均匀的画面,图像四周存在暗角的原因
  2. 张亚飞《.Net for Flash FMS》读后笔记一
  3. 高德地图添加瓦片图层
  4. Node.js 字体格式转换 ttf2eot ttf2woff ttf2svg
  5. 算法中的『前缀和』及『差分』思想详解
  6. FPGA+DSP编码过程
  7. Greenplum实战--standby master的模拟故障与修复
  8. Basler|基于OpenCV的Basler相机采集图像程序
  9. SSH登录一条线理解前因后果
  10. Excel中VLOOKUP跨文件查找