13.2 MATLAB对接CTP的各种方式

13.2 MATLAB对接CTP的各种方式

1. MEX版接口

MEX文件是一种可在MATLAB环境中调用的衍生程序,MEX的编译结果实际上就是一个带导出函数mexFunction的DLL文件,运行效率最高,但开发起来工作量大,要做大量的数据结构转换。目前己经有公司或个人推出了MEX版。

2. 进程间通信

这种方式比较灵活,可用到的技术也多种多样,对接64位平台或者跨操作系统、跨主机都是没有问题的,但在运行效率上略为逊色。己经有网友提供了通用版本接口,既可以通过MATLAB调用,也可以用R语言调用。此种通信方式的数据格式也可以自行约定,在这里建议使用FIX网关来实现。

3. COM版接口

COM component(COM 组件)是微软公司为了计算机工业的软件生产更符合人类的行为方式而开发的一种新的软件开发技术。MATLAB、Excel 等都可以对接COM接口。如果实现了进程外调用COM版接口,则可以绕过64位与32位相互调用的问题。以前从网上可以下载到上海汇朋提供的盈佳COM接口,但此版本己经很久没有更新了。可以考虑使用XAPI2中内置的COM版:https://github.com/QuantBox/XAP12/tree/master/tests/COM。

4. Java版接口

目前己经有少量网友开源了Java对接CTP的接口,但MATLAB对接Java接口的还没有推出。转换的技术有多种,如JNA、BridJ。

JNA (Java Natìve Access)提供了一组Java工具类,用于在运行期动态访问系统本地库(Native Library,如Window的DLL) ,而不需要编写任何Natìve/JNI代码。

JNA版: https://gìthub.com/QuantBox/XAPI2/tree/master/languages/Java 。

BrìdJ版: https ://github.com/tradercoder/CTPJA 。

5. NET版接口

NET版对接CTP的接口百花齐放,版本比较多,网上目前比较知名的版本有以下几种。

海风版:最早开源出来的C#版接口之一,P/Invoke封装。

马不停蹄版:C++/CLI版封装。

XAPI版:https ://gìthub.com/QuantBoxIXAPI2,也使用了P/lVoke封装,但对API做了自己的细节处理。