分享上一个帖子的解决方法

找了好久找到了解决办法,分享下技巧
在程序化交易策略编写过程中,往往需要对交易的品种,市场,策略使用的周期,交易账号等作出限制,以限制该策略适用的运行环境。限定交易举例如下:
1、限定交易的品种,只能在上期、郑商、大商和中金所4个市场的品种运行
2、限定策略的有效时间
3、限定单个品种
4、限定策略运行的周期
5、限定交易账号
6、限定此策略运行在某台固定的电脑上

     一、策略限定使用(图表程序化交易)

      //该策略适用于图表程序化交易
     //该策略仅供范例演示,请勿直接用于实盘

     //中间变量
     INPUT:SS(1,1,50,1),M(26,5,100,10),K(2,0.4,10,1);
     MID:  MA(CLOSE,M);                                //布林中轨
     UPPER: MID + K*STD(CLOSE,M);              //布林上轨
     LOWER: MID - K*STD(CLOSE,M);              //布林下轨

     //交易条件
     KDPKCON:=CROSS(C,LOWER);                 //开多平空条件
     KKPDCON:=CROSS(UPPER,C);                  //开多平空条件

     //策略使用环境限定
     SC:=STRCMP(MARKETLABEL,'ZJ')=0 OR STRCMP(MARKETLABEL,'SQ')=0 OR STRCMP(MARKETLABEL,'DQ')=0 OR STRCMP(MARKETLABEL,'ZQ')=0;                                     //限定交易品种为上期、中金、郑商、大商所的品种
     RQ:DATE<1201231;                                 //限定策略的有效时间在20年12月31日之前         

     PZ:STRCMP(STRLEFT(STKLABEL,2 ),'CU')=0;
     DRAWTEXTEX(PZ,0,10,2,'高度关注');           //如果交易品种是沪铜,则在图表左上角显示高度关注
     ZQ:DATATYPE<>1;                                   //限定该策略只能运行在1分钟周期上
     ZH:STRCMP(TACCOUNT(1),'351579')<>0;  //限定该策略只能在交易账号351579上使用
     JQM:STRCMP(ENGINCODE,'D01F34D4065BF4D0')<>0;    //限定该交易账号只能在机器码为D01F34D4065BF4D0的电脑上运行
     IF SC OR RQ OR ZQ OR ZH OR JQM THEN  
        EXIT;

     //交易系统
     平空:SELLSHORT(KDPKCON,SS,MARKET);
     平多:SELL(KKPDCON,SS,MARKET);
     开多:BUY(KDPKCON,SS,MARKET);
     开空:BUYSHORT(KKPDCON,SS,MARKET);

猜你喜欢

转载自blog.51cto.com/14661216/2480250