龙听期货论坛's Archiver

龙听 发表于 2018-1-29 11:34

[转载]【量化学园】—使用Matlab进行国内期货交易

[p=28, 2, left][b][font=微软雅黑][color=#000000]使用Matlab进行国内期货交易[/color][/font][/b][/p][p=28, 2, left][font=Arial, Helvetica, sans-serif][color=#000000]作者:银河期货技术支持部伍侃[/color][/font][/p][p=28, 2, left][font=Arial, Helvetica, sans-serif][b][color=#000000]第一节国内期货柜台系统介绍[/color][/b][/font][/p][p=30, 2, left][font=Arial][color=#000000]综合交易平台CTP:[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]上海期货信息技术有限公司(上海期货交易所旗下子公司)开发的期货经纪业务管理系统。在API的设计、业务模式、开放性上都比国内其它系统走得更远,大部分期货公司都支持CTP,目前已经是国内期货程序化交易接入的事实标准。同时上期技术在证券API上也做了一定的工作,证券接口也已经发布。[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]金仕达:[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]市场占有率极高的柜台系统,最初仅有B2B网关,用户接入时必须同期货公司商谈,并在期货公司机房内网架设服务器。在2012年时发布了B2C版KSFT_API,与CTP接口相似,仅在一些开发细节上有所区别,直接减少了用户的迁移成本。目前大部分公司同时支持金仕达和CTP,不过存在的问题是出入金不便。CTP没有提供次席的快速出入金的方案,而金仕达方也不提供,最终在主席系统的选项上,期货公司必须得做出选择,目前有部分期货公司正酝酿将主席切换成CTP。[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]易胜:[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]由易胜信息技术有限公司(郑州商品交易所期下子公司)开发,提供了行情与交易接口,目前仅有部分期货公司部署了对应的程序化交易模块。易胜API最大的优点是提供了部分历史数据,这应当时是为了满足他们的程序化交易客户端所提供的功能,缺点是要开发时得申请授权认证码,这限制了不少开发者。[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]飞创信息X-Speed:[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]大连飞创信息技术有限公司(大连商品交易所旗下子公司)也提供了交易与行情的API,但目前成熟度不够,使用者少。[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]恒生:[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]专业的同时提供了证券、期货经纪业务解决方案的提供商,普及面也很广。基金公司等大型机构都有风险控制需求,而恒生在这方面做得不错,但目前没有推出面向普通客户的交易接口。[/color][/font][/p][p=30, 2, left] [/p][p=30, 2, left][font=Arial][color=#000000]第二节开发前准备[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]CTP_API官方下载地址为:[url]http://202.109.110.121/api/[/url][/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]实际上此地址少有人维护,如想要最新版,还是得找CTP_API的官方QQ群,一般群共享有最新版的API及相关的文档,强烈建议提前将文档细读几遍。最关键的两个文档是《综合交易平台API技术开发指南》、《综合交易平台API特别说明》。[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]提供的CTP_API目前有三个版本:Linux x64、Windows x86、iOS。微软官方已经提到过,在64位进程中不能加载32位的dll,同理一个32位进程也不能加载一个64位dll。所以在Windows平台下采用一般的dll调用方式也就被限制在了主程序为32位程序。其实,分别使用32位和64位两个进程通讯的方式能解决这个问题。[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]在这,我们使用dll调用的方式。先确保自己安装的是32位的Matlab,如果你是在64位Windows上直接安装,默认是安装的64位系统,请进入到Matlab的安装目录,找到bin/win32下的setup.exe进行安装。[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]第三节各种对接方式[/color][/font][/p][list=1][*][p=24, 2, left][font=Arial][color=#000000]MEX版接口
[/color][/font][/p][/list][p=30, 2, left][font=Arial][color=#000000]运行效率最高,但开发起来工作量大,要做大量的数据结构转换。目前已经有公司或个人推出了MEX版。[/color][/font][/p][list=1][*][p=24, 2, left][font=Arial][color=#000000]进程间通讯
[/color][/font][/p][/list][p=30, 2, left][font=Arial][color=#000000]这种方式比较灵活,对接64位平台或者跨操作系统、跨主机都是没有问题的,但在运行效率上略为逊色。已经有网友提供了通用版本接口,即可以Matlab调用,也可以R语言调用。[/color][/font][/p][list=1][*][p=24, 2, left][font=Arial][color=#000000]COM版接口
[/color][/font][/p][/list][p=30, 2, left][font=Arial][color=#000000]COM接口在Windows平台下还是有一定的使用范围的,Matlab、Excel等都可以对接COM接口,目前网上可以下载到上海汇朋提供的盈佳COM接口。网址:[url]http://www.winnerfutures.com.cn/[/url][/color][/font][/p][list=1][*][p=24, 2, left][font=Arial][color=#000000]Java版接口
[/color][/font][/p][/list][p=30, 2, left][font=Arial][color=#000000]目前已经有少量网友开源了Java对接CTP的接口,但Matlab对接Java接口的还没有推出。同时转换的技术也有多种,如JNA、BridJ。[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]网址: [url]https://github.com/QuantBox/CTP/tree/master/Java-CTP[/url],JNA版[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]http://download.csdn.net/detail/vcfriend/5054163,BridJ版[/color][/font][/p][list=1][*][p=24, 2, left][font=Arial][color=#000000]NET版接口
[/color][/font][/p][/list][p=30, 2, left][font=Arial][color=#000000]NET版对接CTP的接口是百花齐放,版本比较多,网上目前比较知名的版本有[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]海风版:最早开源出来的C#版接口之一,P/Invoke封装[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]马不停蹄版:C++/CLI版封装 [font=Arial, Helvetica, sans-serif]http://ishare.iask.sina.com.cn/f/34438582.html[/font][/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]LumenXH版:[url]https://github.com/LumenXH/[/url],P/Invoke封装[/color][/font][/p][p=30, 2, left][font=Arial][color=#000000]QuantBox版:[/color][/font][/p][p=30, 2, left][color=#000000][url=https://github.com/QuantBox/CTP%EF%BC%8C%E4%B9%9F%E6%98%AF%E4%BD%BF%E7%94%A8%E4%BA%86P/Invoke%E5%B0%81%E8%A3%85%EF%BC%8C%E4%BD%86%E5%AF%B9API%E5%81%9A%E4%BA%86%E8%87%AA%E5%B7%B1%E7%9A%84%E7%BB%86%E8%8A%82%E5%A4%84%E7%90%86%E3%80%82]https://github.com/QuantBox/CTP,也是使用了P/Invoke封装,但对API做了自己的细节处理。[/url][/color][/p]

页: [1]