请教各位大佬设计师: 目前希望做一个不依靠与策略通信就能对策略订单进行监控的模块。毕竟策略服务器在托管机房,而我监控需要在本地,远程登录不方便。这样需要在订单里面保存自定义的消息,本地的会话收到订单回报的时候通过解析消息区分策略甚至区分信号。 之前试了一种方法:把策略名称保存在UserProductInfo里面,然后监控端收到OnRtnOrder的时候解析里面的这个字段,达到区分策略(即不同的TraderSession)的目的。但这样的局限性在于一个Session如果有多个策略那就不好区分了。 现在发现发送订单的时候貌似可以自定义BusinessUnit,这样可以保存每笔订单的详细状况(比如信号名称,甚至log,毕竟可以保存20个字符),试了一下发现OnRtnOrder返回的这个字段是一串数字加字母,不是我ReqOrderInsert时候的自定义的字段。 难道真要走正统的设计方法:监控模块需要监听各个策略的消息请求?没法直接通过订单回报来区分策略?
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 哎,,总之终究还是要远程登录。。