CTP 学习笔记 前言 综合交易平台(Comprehensive Transaction Platform,CTP)是专门为期货公司开发的一套期货经纪业务管理系统,由交易、风险控制和结算三大系统组成。 前后研究了两个多星期 CTP,各种查资料,感觉总算是基本搞清楚了 CTP 是个什么东西(鬼知道我为什么要搞 CTP),说多了都是泪。 本文主要通过对 CTP 简单案例的实现,对 CTP 进行简单的讲解,以及本人学习过程中遇到的一些坑。 至此,我们简单实现了「行情部分」的「登录」和「获取行情」,总的来说,重点是理解 CTP 的工作原理以及流程。对于「交易部分」的实现也是类似的,这里就不再赘述。 参考资料 CTP 客户端开发指南 API 接口说明
主要介绍了CTP的简单使用方式以及在使用过程中易遇到的‘坑’,并附上一些代码帮助学习。 1 什么是CTP CTP是上海期货推出的一套可供程序调用的交易接口。 2 接口文件获取 CTP接口可以在上期官网下载。 (http://www.sfit.com.cn/5_2_DocumentDown.htm) 注:上期的CTP接口维护似乎比较混乱,新旧版本混在一起了。 前置知识 CTP的所有接口都分为Spi和Api两种,分别对应C++中的类:XXXXSpi和XXXXApi。下面说的Api和Spi指的都是这两种东西。 确认结算 CTP有个特别的要求,就是在交易之前,必须确认一下昨天的结算结果。 就像是在说:“嘿,你昨天输了好多钱,不要赖账,先算清楚今天再继续!”
微软发布于10月6日发布了Visual Studio “14”CTP 4,本次发布的更新主要包括:ASP.NET vNext runtime和一些工具的优化(ASP.NET vNext runtime References node for project.json dependency changes Known Issues 具体的更新详情请见微软官方博客 Visual Studio “14” CTP 4 发布,可通过下面地址下载: Download the latest Visual Studio "14" CTP (web) package now. Download the latest Visual Studio "14" CTP (iso) package now. Visual Studio “14”中的Web开发新技巧 ASP.NET samples that run in Visual Studio 14 CTP 4
VNPY官网 : http://www.vnpy.cn VNPY学习资料大全 http://www.gucps.cn 入门篇《VNPY CTP 仿真柜台怎么用来实现CTP 程序TICK级回测》 : VNPY 我有一个程序员朋友,自2015年偶然受一个职业炒手之托,开发一个CTP抢单程序而接触到CTP接口, 他在CTP研发上投入大量时间,到了2016年他接触到了投资人,投资人让他管理了4000万资金,利润条件是 不用实盘交易的话,可以采用上期CTP的模拟账户进行测试和开发,相关网址链接如下: 上海期货交易所SIMNOW CTP模拟账户注册地址。 而VNPY CTP仿真柜台是和CTP api是同一个级别的底层库,设计原则是尽量不采用第三方方案,以CTP标准进行设计。 所以市场上所有针对CTP的框架,其实都可以用在VNPY CTP仿真柜台上。 VNPY CTP仿真柜台开创的全新的量化交易回测方式,兼容几乎全部的第三方CTP框架。
12月份发布了Entity Framework Feature CTP 5,这也是最后一个CTP版本了,明确了RTM的发布时间是2011年Q1,CTP5主要是加强了CTP4(Entity Framework Feature CTP 4更新了Code First编程模型并提升了生产率)已经引入的DbContext 和codeFirst。
微软发布ASP.NET 5 支持在Windows、Mac和Linux上构建程序,Visual Studio 2015 CTP6(社区预览版)现已发布了。 感兴趣的朋友们可以登录官网下载【http://www.visualstudio.com/downloads/visual-studio-2015-ctp-vs】。 另外同时还发布了Team Foundation Server 2015 CTP。 ? 对于熟悉CodeLens的用户,CTP 6中也带来了一个更新,以便大家可以方便地看到C++、SQL、或者JavaScript在Git上的文件版本记录(通过CodeLens的'文件层级指示器'--file-level
下面是我更新Silverlight ctp到Silverlight beta 1.0的一个纪录,希望对各位同学有帮助。 1、卸载Silverlight ctp 和sdk以及VS template 2、安装Silverlight Beta 1.0 (http://www.microsoft.com/silverlight/
「重新编译了Python3版本的ctp接口」 http://www.vnpie.com/forum.php? mod=viewthread&tid=2636&extra=page%3D1 这个帖子提供的是编译好的python3.6 CTP接口,可以直接下载附件使用。 ?
vn.py目前所使用的数据库是MongoDB,鉴于一些用户更加习惯使用mySql,论坛内desont提供了一个vn.py与mySql相结合管理数据的示例,感谢desont的分享!
写过CTP的同学可能不多,这是一个期货接口。没听说过的也无妨。 C++多线程回调 CTP 提供了若干个父类供开发者继承,里面的回调都是通过覆盖父类的纯虚函数实现。 那么如何让CTP开发也能很舒服呢?或者干脆将CTP封装成Node的原生模块,然后在Node中调用,岂不妙哉。 这时候协调C++多线程和Nodejs单线程的关键角色就登场了,这就是libuv。 https://github.com/langhuihui/node-ctp
vnpy的作者还是有很大格局的,希望自己的作品可以兼容很多数据交易接口,所以就比较通用,这里就把ctp这种接口叫做Gateway,而且后面写的也比较复杂,目的就是为了集大成,还是很佩服的。 然后是初始化了一些ctp的控制常量和ctp配置文件的地址。 我们先不看这个类下面还有别的什么,我们先来看一下它的父类VtGateway吧。 后面有机会讲ctp封装的时候给大家解释这个。 所以,我们不需要知道什么,只需要知道这行代码是创造了一个API对象,为了后面可以使用ctp。后面的几个方法也都是在父类中定义的,我们只需要知道功能即可。 交易前置也是一样的道理,在CTP中交易接口和行情接口是分开的。这样我们就讲完了接口的连接。 同样的,行情订阅的结构也是这样类似的,在这里就不多赘述了。
(顺便介绍一下 Windows 版本 CTP 库的组成文件:) ? 我看了一下对应的 WinDataCollect.h 头文件,表示此库中只有一个函数 CTP_GetSystemInfo。 再补充介绍一下,从程序开始执行到期货公司收到采集信息的数据包,一共经历了四个步骤: 1.CTP 动态库被加载,调用了动态库的初始化函数 2.程序调用 CTP->Init 函数 3.程序调用 CTP->ReqAuthenticate 我并没有 CTP 库的源码 因此,想要弄明白上面的问题,让我们回到 Linux。 (顺便介绍一下 Linux 版本 CTP 库的组成文件:) ? 查看 CTP 官方文档,发现 CTP 在 Windows 上采集系统信息用到的手动执行的命令,是 cmd 命令 "wmic path win32_physicalmedia get SerialNumber 那么猜测如果运气好的话,CTP 也是调用过这个函数,只是没有把错误信息打印出来。
再来看看Windows Phone Developer Tools CTP能不能安装吧。 ,Windows Phone Developer Tools CTP (WPDT CTP)与Visual Studio 2010 RTM是不兼容的。 因为WPDT CTP是建立在Visual Studio 2010 release candidate (RC)版本之上的,这样,引起了WPDT CTP与最终的Visual Studio 2010 RTM 将Visual Studio 2010 RTM与WPDT CTP安装在不同的机子上。 具体原因有以下三点: 因为WPDT CTP不支持虚拟机安装。 如果首先安装了Visual Studio 2010 RTM,那么,就无法安装WPDT CTP了。
接触CTP也才半年多,一边学习一边摸索,看到各大CTP的QQ群里,也都是在问一些很菜的问题,就简单总结和介绍下,今天主要是基础知识,即CTP程序的基础和开源的Demo版本: CTP交易接口是由:: 下载地址:::::::上海期货信息技术有限公司:::::: 2:CTP开发中使用的模拟账号密码,要到SIMNOW上注册。 6:Demo版本使用CTP接口是比较早的版本,有兴趣可以自己更新成2016版的接口,初学者可以不用改,影响不大。 7:CTP接口若做高频交易,基本是使用C++编程,速度上会更快;不擅长C++的,现在网上也有C#、Python和Java等版本的接口,可以下载参考学下。 ; c,==> 国内 CTP 平台目前是否有办法获得频率高于 2 tick 每秒的高频期货数据?
近期,上海期货信息技术有限公司(以下简称上期技术)和腾讯云联合举办的“CTP 专项培训-TDSQL 架构与实践深度解析”在腾讯开展现场研讨活动。 上期技术的专家以及30多家期货公司的数据库和 CTP 系统运维的技术负责人莅临参加,分享交流包括 TDSQL 数据库架构和行业实践、CTP 系统结合 TDSQL 数据库的运维实践、TDSQL 运维实操等内容 腾讯云 TDSQL 与上期技术 CTP 系统已完成国产适配。目前,南华期货 CAP 统一账户系统已做好上线准备,CTP 结算系统的双轨运行工作正在积极推进。
这个例子连接到CTP接口,每秒检查一下目标合约的价格,若低于指定价格则买入,若高于指定价格则卖出。 2 创建项目 首先,请看前篇《手动搭建vnpy环境-编程环境》,依步骤创建一个项目。 然后找个目录添加以下文件: buy_low_sell_high.py : 主脚本 CTP_connect.json : CTP连接参数 3 初始化vn.py 首先,我们创建一个EventEngine和MainEngine 4 连接CTP 添加CTP接口 使用MainEngine.addGateway可以添加接口,在该例子中,我们使用CTP接口。 不过在此之前,我们需要在CTP_connection.json中设置好连接参数。 行情服务器连接成功 2018-06-12 04:42:50,503 INFO: CTP交易服务器连接成功 2018-06-12 04:42:50,505 INFO: CTP行情服务器连接断开 2018
[ctp_para] ctp_used = 1 ctp_name = “gt9xx_ts” ctp_twi_id = 0 ctp_twi_addr = 0x5d ctp_screen_max_x = 1024 ctp_screen_max_y = 600 ctp_revert_x_flag = 0 ctp_revert_y_flag = 0 ctp_exchange_x_y_flag= 0 ctp_int_port =port:PB05<4><default><default><default> ctp_wakeup = 3000 ;ctp_power_io = ;——————————————————————————– ; CTP automaticdetection configuration ;ctp_detect_used * ctp_used set to 0!
.NET FX 3.0 July CTP... While I am here, might as well share a headache from last week... The .NET FX 3.0 July CTP shipped with out "cider" (aka VS Extensions for Orcas)... OK, so no Cider does that mean you should skip July CTP? if you are *not* in one of these situations: You need to run 5472.5 of vista, which ships w/ July CTP If you are in the second one, use a test machine just to validate your progress but develop in June CTP
Visual Studio 2015 CTP 5,全称为 Visual Studio 2015 Community Technology Preview 5,意为社区技术预览版,之前的版本为:Visual Studio 2015 Preview,多了一个 CTP,虽然都为预览版,但这次 CTP 的版本发布,显然离 VS2015 的正式版本发布已经不远了。 先贴一个重要链接:Visual Studio 2015 CTP 5 更新说明。 2014 年,Javascript 领域风起云涌,这里我们主要提两件事。 stevescodingblog.co.uk/grunt-npm-and-bower-in-visual-studio-its-awesome-right/ 升级 Visual Studio 2015 CTP
说句真心话,回测框架比vnpy好的框架太多了,但是都是国外的,能够和ctp结合,进行实盘的,目前看来只有大商所的飞创还可以自己写写代码,但是是java的,虽然笔者也能写写java,但是策略编写太复杂,框架设计的时候不够友好 ') le.info(u'连接CTP接口') sleep(10) # 等待CTP接口初始化 me.dataEngine.saveContracts ee = EventEngine2() le.info(u'事件引擎创建成功') c.需要一个大的类来把策略、ctp行情、事件引擎comgbine起来。 ') le.info(u'连接CTP接口') sleep(10) # 等待CTP接口初始化 me.dataEngine.saveContracts () # 保存合约信息到文件 这里其实完成的东西有点多,首先,把ee这个事件引擎的实例挂上去,然后把ctp挂上去,说是挂ctp,其实是挂数据接口。