CTP-Python搞好了

Discussion in 'CTP' started by lvsoft, Aug 2, 2010.

  1. 下载地址:
    http://lvsoft.3322.org/python-ctp.0.0.2-tar.bz2

    昨天终于有点时间了,花了一天搞了下。本来以为行情部分搞定了,交易就很容易了。
    没想到交易的接口规模远比行情要大的多,敲了半天的代码还看不到结束的尽头,
    一怒之下写了个解析器,分析CTP的.h文件,自动生成对应的python封装,把整个过程都自动化了~而且这样生成的代码比之前手写的质量要高很多,不仅不会有BUG,注释等信息也都整合进去了。更支持把接口读出的数据以human readable的方式显示出来。这样开展下一步的工作会舒心很多。

    目前的代码,交易部分还没有调试过,只是调试了行情部分。
    但是因为是解析器自动生成的代码,行情封装对了,交易应该也就对了。

    最后bs一下匈牙利命名法,满屏幕的CThostFtdcxxxxx,实在是太傻了。

    代码的运行环境:utf-8,linux 64bit,Python 2.4-2.6。
    下载下来的代码只有生成器部分,没有结果。跑一遍之后,python-ctp扩展的代码就自动生成好了。手写了600行代码量,生成的封装代码有11247行之多...

    已知问题:CTP服务器返回的字符串可能是基于GBK编码的,目前还没有做处理。
     
  2. 学习学习。
     
  3. 太牛了!
     
  4. LZ太牛了,佩服佩服!
     
  5. 我没啥牛的...写个程序简化手动工作量而已。

    我觉得比较牛的还是搞CTP接口的这个人...
    虽然我要提的许多意见中,最大的就是CTP封的冗余度太高了。
    但我觉得最牛的是,这么高的冗余度,这么大的代码量,上千行代码的格式是完全规整的:
    所有的struct格式都是完全一样,一定是换行{},上一行一定有一个注释,每个成员之间一定会有注释,连结构体之间的空行也都完全一样... ...

    这结构规整的,感觉就像是自动生成的一样。但是看这封装又不太像,如果是全部手敲的,那真的是太牛了~~~
    这么规整的结构,让我解析起来十分的方便。解析的代码之所以写的这么快,很大程度也得益于此。可以用简单字符串处理+简单正则表达式就搞定了。
    否则,对C++语法的解析,可是要用LR文法分析器的。
     
  6. lvsoft:
    你用的解析器是针对的c++接口还是后来的CTP-API接口的c封装?后来的CTP-API接口的c封装好像就是用自动生成器生成的。
     
  7. 我是针对c++的,因为那个CTP-API的C接口,移植到python还需要再封装一层python的,太麻烦了。
    既然我已经做了前面的工作,就直接接着做到底就可以了~
    而且CTP-API的C接口回避了很大一块工作量,就是结构体的封装。毕竟C可以直接复用那些C++的结构体。

    现在封装完毕之后,会有MdApi.py和TraderApi.py,接口形式是跟c++版本是完全一致的。参考demo.py看看,再结合CTP的例子,就知道怎么用了~
     
  8. 恩,发现一个新的问题。我封的过程中,存在内存泄漏问题,应该是python对象的引用计数没有维持好。
     
  9. 支持!
     
  10. 强人呀。下载试试。
     
  11. 你的链接下载不了啊。
     
  12. 不好意思,以后这个地址用来建立我自己的项目管理系统了。
    之前的下载全部移到/down下。

    例如:0.0.3版本的新下载地址如下:

    http://lvsoft.3322.org/down/python-ctp.0.0.3.tar.bz2