vnpy/vn.ib
2016-11-20 14:42:29 +08:00
..
build 完成vn.ib接口的linux封装,并增加到了vn.trader中 2016-11-20 14:42:29 +08:00
ibapi 完成vn.ib接口的linux封装,并增加到了vn.trader中 2016-11-20 14:42:29 +08:00
test 完成vn.ib接口的linux封装,并增加到了vn.trader中 2016-11-20 14:42:29 +08:00
vnib 完成vn.ib接口的linux封装,并增加到了vn.trader中 2016-11-20 14:42:29 +08:00
build.sh 修改vn.ib下的IB API到最新的9.72版本 2016-11-12 00:42:37 +08:00
CMakeLists.txt 更新vn.ib接口中linux相关的代码 2016-11-13 12:08:32 +08:00
README.md 完成vn.ib接口的linux封装,并增加到了vn.trader中 2016-11-20 14:42:29 +08:00

vn.ib

目前vn.ib还处于开发中完成了封装部分的工作欢迎贡献测试相关的代码。

简介

基于IB POSIX C++ API的Python封装提供原生API的全部功能同时Python代码中函数和类的命名定义都和C++中保持一致。

vn.ib和IbPy的不同点

  1. vn.ib基于Boost.Python封装了原生Posix C++接口比起IbPy能提供更好的性能

  2. vn.ib底层代码中添加了异常捕捉功能避免IbPy的函数触发异常后没有报错直接断开连接导致无法调试的问题

  3. vn.ib安装时可能需要编译默认的pyd在Windows7 Python 2.7 32位下编译IbPy是纯Python的可以直接使用

  4. vn.ib基于较新的IB官方API9.72 beta开发IbPy则是采用了较老的API9.70 stable

对原生接口的修改部分

shared_ptr.h和SoftDollerTier.h中加入了对象比较函数的代码用于实现其对应vector的自动Python封装。

Linux版

IB API的Linux版本存在若干问题需要先手动修改

  1. 上面的原生接口修改部分依旧必须修改
  2. EReader.cpp下的EReader::bufferedRead函数中有个调用min函数的地方会报错需要修改为std::minWindows版中调用的是Win32的一个min函数所以无需修改
  3. EClient.cpp中需要在EncodeField模板函数下加入EncodeField<const char*>这一对EncodeField的偏特化实现具体请参考linux文件夹下的代码GCC在编译时不会去特化模板函数如果不手动实现则运行时会报错undefined symbolMSVC则无此问题

也可以看出IB的开发团队主要是在Windows上做开发和测试编译步骤

  1. 先进入vn.ib/ibapi/linux文件夹下运行bash build.sh生成twsapi.so
  2. 然后回到vn.ib文件夹下运行bash build.sh生成vnib.so

API版本

版本IB API for Windows beta 9.72.18

日期2016-09-14

链接:http://interactivebrokers.github.io/