readme

编译方法:

Requirements:

  1. 使用ICC 编译,使用gcc 会有warning
  2. 需要 Evolution/UtilHeader 这个项目
  3. ICC 编译时 需要加上 imf,irng,svml,否则会出现能编译,但是python import 时找不到

进入PyUtil目录后:

./make.sh

注意 现在改成使用UtilHeader 这个路径下面的文件,编译环境需要调整下

使用方法(以ipython 为例)

  1. import WqUtils (必须 WqUtils.so 在sys.path 路径中)

  2. 使用 WqUtils.PyFastLog

    a = WqUtils.PyFastLog()
    a.init()
    a.log()
    
  3. 使用 WqUtils.PyIPCMQ

    a = WqUtils.PyIPCMQ(...)
    ptr = a.pull()
    #(data 是一个python class,但是它包含c++ 代码中相对应struct的成员 )
    data = PyIPCMQ.asTradeMsg(ptr) 
    or data = PyIPCMQ.asWQData(ptr)
    

    还提供一个工具函数,根据主力次主力拿到真实合约
    tickerName = PyIPCMQ.market2STName("rb0001")

    以上是旧版的用法,仍然可以用,但不推荐
    新版本(20170622) 推荐的用法

    事先,你必须知道 server 上 IPCMQ 里面存放的数据是 WQData 还是TradeMsg
    然后 ,参照testIPCMQ.py 演示的代码

    如果是存放TradeMsg
    mq =PyTradeMsgIPCMQ(ipcKey=0x0b0b0200,queueID="MSG_EMS_RSP",  \
        appID="YourName4",isreader=True)
    msg = mq.pull()
    print msg
    print msg.cmdType
    pritn msg.engineID
    # 注意 TradeMsg 比 WQData 的 pull 返回值 多了两个字段:cmdType 和 engineID
    # 也可以自己根据 msg.cmdType,msg.engineID 来判断 msg.data是哪种数据
    # 支持PyTRawOrder,PyTOrderAction,PyTEngInfo,PyTEmsNotice,
    # PyTRspExch,PyTRspFill,PyTRspOver  这七种数据结构,
    # 成员变量和C++中struct 保持一致
    if isinstance(msg.data,PyTRawOrder):
        print msg.data.orderID
        ...
    elif  isinstance(msg.data,PyTRspExch):
        pass
    elif  isinstance(msg.data,PyTRspExch):
        pass
    
    如果存放 WQData
    mq = PyWQDataIPCMQ(ipcKey=0x0ae8c120,queueID="ares",  \
        appID="YourName",isreader=True)
    msg = mq.pull()
    # 返回的msg 是 PyWQTickerIndex,PyWQTimeEvent,PyWQFutureL1,
    # PyWQFutureL2,PyWQFutureL2Shfe 中的一种,对应 c++ 的 相应wqdata
    print msg
    print type(msg)
    if  isinstance(msg,PyWQTickerIndex):
        pass
    
  4. 使用TimeUtil

    WqUtils.TimeUtil.getTimeUs()
    WqUtils.TimeUtil.getTimeNs()
    WqUtils.TimeUtil.getClock()
    WqUtils.TimeUtil.getClockLow()
    WqUtils.TimeUtil.getTimeNsDay(clock,fauseAdjust)
    WqUtils.TimeUtil.getTimeStr(outLen,ns)
    WqUtils.TimeUtil.getDateStr(rollBack)
    

你可能感兴趣的:(readme)