目前行情可以用python接收了。 其实还是蛮复杂的。因为在api里面会创建线程回调。 这种情况下需要在python端维护新的堆栈空间和全局锁。 而且这两天事情特别多...利用零零碎碎的时间终于折腾个大概了。 我把代码以LGPL授权共享: http://rapidshare.com/files/408623203/python-ctp.0.0.1-tar.bz2 运行环境为linux,64bit环境,python2.6环境。
CTP要做成让其他语言易封装的形式,关键在于API模型。 一个开放的API,应该尽可能基于C做。 因为绝大多数语言都是基于C实现的。 基于C++弄点class进去,这些语言要支持就会比较困难。 其实单单弄点class也还好,关键是还有callback,而且callback一样是class的。 这样的API利用了太多的C++特征,给其他人对接造成了许多困难。 我一开始想用boost.python对接的,发现完全不行, 最后还是基于c对这个c++的做了层封装,再把这个c实现移植到python里面, 再在python中按照c++的OO框架重建。整个过程有点累... 还好我用meta programming建立了python端的代码自动生成框架,否则会累吐血的... 另外就是CTP明显封装过度了。 定义了无数struct也就算了,这些struct里面每个field的type几乎都重新定义了,这个有必要么... 看到price,发现类型是pricetype...pricetype是个什么东西,再去看,哦原来是int... 这个很没有必要,这样看到一个field,想弄清楚他的类型,太累了。 其实CTP基本没用啥复杂类型,我封装行情接口的时候,弄来弄去也就是char[],int,double三种而已。直接在struct里面定义就可以了,再去typedef定义一套莫名其妙的类型干嘛~~