综合交易平台技术Q&A

Discussion in 'CTP' started by LumenXH, Jun 19, 2009.

  1. 下载了CTP的API,经过几天的分析试验,已经建立了几组最简单的请求/响应。

    同时,由于对CTP的理解还不够深入,也遇到了很多问题,比如接口参数与业务场景的对应关系等等。
    对此,上期技术是否能提供更多的业务说明资料呢?

    此外,不清楚是否是因为使用模拟帐户的原因,在测试过程中,一些响应信息与预期的并不吻合,在这种时候比较难判断是发送的请求信息错误还是CTP的bug。
    关于这一点,上期技术能提供更多的技术支持么?比如,类似oracle metalink的一个开放式错误报告平台?

    另,再次感谢jovebird最近的帮助!:)
     
  2. 在使用综合交易平台api的过程中,如果大家有什么问题,欢迎在这里讨论。
     
  3. 给大家介绍一下,wang.yc汪先生是我们上期技术的资深程序员,对综合交易平台API的使用有很丰富的经验,大家有这方面的问题可以与汪先生进行充分的讨论,谢谢!
     
  4. 欢迎!
     
  5. 关于“响应信息与预期的并不吻合”,常见的原因是:
    客户端在准备请求参数前没有清0,就开始设置字段,那些没有设置的字段就可能随机数。
    服务器会处理所有的请求参数中的字段,这样就导致了预期的记录被过滤掉,或者请求参书不合法导致命令失败,如登入失败,撤单失败等。
     
  6. 遇到高手才Google的 :o
     
  7. TraderApi是类,其成员函数无法直接从c#中PInvoke,所以需要新建WIN32 DLL,将Api中的函数全部extern出来,然后再从C#中调用这个新建的DLL。

    之前和贵公司的阿华兄聊过,知道你们近期没有公开C#接口的计划,所以只好自己动手搞定了:p
     
  8. 新新手,接触交易才1年多而已,在海洋潜水许久一直不敢造次
    才浮上来喘口气,就被海洋老大抓住,以后还要多多关照下:D
     

  9. 多谢汪兄指点,对C本身就不是很熟,估计会问题多多,想来以后还要多亲近:D

    先来两个小问题

    1、合约所属的交易所不正确
    以下是合约查询结果的一部分数据
    Code:
    FIELD [CFTDOrderField] START
    	[BrokerID][0][2030]
    	[InstrumentID][0][a0909]
    	[ExchangeID][0][SHFE]
    FIELD [CFTDOrderField] END
    
    是模拟帐户的原因么?

    2、响应中bIsLast始终为True
    以下为报单查询的响应数据
    Code:
    FTDC PACKAGE HEADER
    Version[0X06],Chain[0X43],SequenceSeries[4],TransactionId[0X00008001],SequenceNumber[2]
    FieldCount[2],FTDCContentLength[1060],RequestId[4]
    FTDC PACKAGE CONTENT START
    FIELD [CFTDOrderField] START
    	[InstrumentID][0][a1001]
    	[InsertDate][0][20090619]
    	[InsertTime][0][13:13:26]
    FIELD [CFTDOrderField] END
    FIELD [CFTDOrderField] START
    	[InstrumentID][0][a0909]
    	[InsertDate][0][20090619]
    	[InsertTime][0][14:38:59]
    FIELD [CFTDOrderField] END
    FTDC PACKAGE CONTENT END
    
    以下为终端得到的结果
    Code:
    ======>>  QueryOrder OK!!  
    InstrumentID:a1001
    OrderStatus:AllTraded
    bIsLast:True
    ======>>  QueryOrder OK!!  
    InstrumentID:a0909
    OrderStatus:AllTraded
    bIsLast:True
    
     
  10. 是不是象下面地址里介绍的那样搞“托管”?

    你也使用托管C++吗?
    http://www.hylt.net/vb/showthread.php?t=19951
    使用托管C++粘合C#和C++代码(一)
    http://www.hylt.net/vb/showthread.php?t=19954
     
  11. 综合交易平台模拟交易系统只配置了一个上期所的交易所系统,所以只有上期所的合约,其他交易所的合约也只是在上期所模拟了一个同样的品种。

    bislast标示是否是最后一笔记录,在查询报单时如果有多笔,前面收到的记录应该bislast为0,最后一笔的bislast为1。
     
  12. 问题1: 在模拟环境中, 所有的合约都包括在上期所下。
    问题2:IsLast表示当前的记录是这次查询的最后一条结果。
     
  13. 谢谢汪兄,我再检查一下程序

    另外,目前CTP是不是不提供行情数据的回补?
    比如我下午登录的时候,回补上午的行情数据
     
  14. 目前, 不提供行情数据的回补,只能收到当前最新状态。所以mdapi中不能指定公有流的订阅方式。
    用户订阅某个合约的行情后,马上可以收到该合约当前的最新行情,之后如果行情有变化,客户端就会收到更新。
     
  15. 无法回补数据,这可能会成为终端开发上的一个很大的问题:o
    即需要提供额外的数据回补通道(或者是从第三方导入,或者是终端厂商提供单独的行情服务器)
     
  16. 行情不回补数据是可以理解的。
     
  17. 关于mduserapi的登陆/登出问题(traderapi表现正常):似乎无论填写任何brokerid,userid,password都可以login,且返回的CThostFtdcRspUserLoginField只设置frontid和sessionid,其余项目均填空。另外,发logout请求(使用traderapi的brokerid,userid,password给CThostFtdcUserLogoutField赋值,或者干脆全部填空)时,OnRspUserLogout不放生回调动作。这些都是预期的反应么?