要在order里面保存自己的信息怎么办

Discussion in 'CTP' started by qsoft_cn, Sep 22, 2012.

  1. 请教各位大佬设计师:
      目前希望做一个不依靠与策略通信就能对策略订单进行监控的模块。毕竟策略服务器在托管机房,而我监控需要在本地,远程登录不方便。这样需要在订单里面保存自定义的消息,本地的会话收到订单回报的时候通过解析消息区分策略甚至区分信号。

    之前试了一种方法:把策略名称保存在UserProductInfo里面,然后监控端收到OnRtnOrder的时候解析里面的这个字段,达到区分策略(即不同的TraderSession)的目的。但这样的局限性在于一个Session如果有多个策略那就不好区分了。

    现在发现发送订单的时候貌似可以自定义BusinessUnit,这样可以保存每笔订单的详细状况(比如信号名称,甚至log,毕竟可以保存20个字符),试了一下发现OnRtnOrder返回的这个字段是一串数字加字母,不是我ReqOrderInsert时候的自定义的字段。

    难道真要走正统的设计方法:监控模块需要监听各个策略的消息请求?没法直接通过订单回报来区分策略?
     
  2. 存文本
     
  3. 3q。。
    我还是开VNC远程监控好了,或者ssh到远程,tail -f文本的log,自己写了个脚本大概是:
    #!/bin/bash
    ####### monitor all strategy log ######

    tput clear
    tput civis

    while true;do
    today=`date +%Y%m%d`
    if [[ $today != $lastday ]]; then
    clear
    fi
    tput cup 0 0
    # clear
    # sleep 1
    for logfile in `find ~/strategy -name "RealTime*${today}*log*" `
    do
    filename_ext=` echo $logfile | awk -F '/' '{print $7}' `
    filename=` echo $filename_ext | awk -F '.' '{print $1}' `
    strategy=` echo $filename | awk -F '_' '{print $2 "_" $3}' `
    instrument=` echo $filename | awk -F '_' '{print $5}' `
    instrument=` echo $instrument | awk -F '-' '{print $1}' `
    tradingday=` echo $filename | awk -F '_' '{print $4}' `

    tput smso
    echo "###| TRADINGDAY: $today | STRATEGY : ${strategy} | INSTRUMENT : $instrument |###"
    # tput ed
    tput rmso
    #clear rest character of current line

    tail -n1 $logfile
    #clear rest character of current line
    # tput ed

    done #done for
    lastday=`date +%Y%m%d`
    sleep 1
    # clear
    done

    哎,,总之终究还是要远程登录。。
     
  4. 把这些日志文件都扔到一个webserver 的目录去。 到时候你就直接网页查看就可以了