找了好久找到了解决办法,分享下技巧
在程序化交易策略编写过程中,往往需要对交易的品种,市场,策略使用的周期,交易账号等作出限制,以限制该策略适用的运行环境。限定交易举例如下:
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);