INPUT:M(10,1,100,1);
INPUT:a(1.67,1,100,1);
INPUT:N(75,1,100,1);
INPUT:LOT1(1,1,10,1);
INPUT:LOT2(1,1,10,1);
runmode:0;
YOPEN:='IF12$OPEN';
POPEN:='IF03$OPEN';
MEAN:=MA(YOPEN-POPEN,M);
vd:=std(YOPEN-POPEN,N);
UPPERBAND:=MEAN+a*vd;
LOWERBAND:=MEAN-a*vd;
IF NOT(ISLASTBAR) THEN EXIT;
//做空价差
IF TBUYHOLDINGEX('800980','IF12',0)=0 AND TBUYHOLDINGEX('800980','IF03',0)=0 AND TSELLHOLDINGEX('800980','IF12',0)=0 AND TSELLHOLDINGEX('800980','IF03',0)=0 THEN
BEGIN
TBUYSHORT(YOPEN-POPEN>=UPPERBAND,LOT1,lmt,YOPEN,0,'','IF12');
TBUY(YOPEN-POPEN>=UPPERBAND,LOT2,lmt,POPEN,0,'','IF03');
END
//做空套利平仓
//IF TSELLHOLDINGEX('800980','IF12',0)>0 AND TBUYHOLDINGEX('800980','IF03',0)>0 and tenterbars>0 THEN
//BEGIN
TSELLSHORT(YOPEN-POPEN<=MEAN,LOT1,lmt,YOPEN,0,'','IF12');
TSELL(YOPEN-POPEN<=MEAN,LOT2,lmt,POPEN,0,'','IF03');
//END
//做多价差
IF TBUYHOLDINGEX('800980','IF12',0)=0 AND TBUYHOLDINGEX('800980','IF03',0)=0 AND TSELLHOLDINGEX('800980','IF12',0)=0 AND TSELLHOLDINGEX('800980','IF03',0)=0 THEN
BEGIN
TBUY(YOPEN-POPEN<=LOWERBAND,LOT1,lmt,YOPEN,0,'','IF12');
TBUYSHORT(YOPEN-POPEN<=LOWERBAND,LOT2,lmt,POPEN,0,'','IF03');
END
//做多套利平仓
IF TBUYHOLDINGEX('800980','IF12',0)>0 AND TSELLHOLDINGEX('800980','IF03',0)>0 and tenterbars>0 THEN
BEGIN
TSELL(YOPEN-POPEN>=MEAN,LOT1,lmt,YOPEN,0,'','IF12');
TSELLSHORT(YOPEN-POPEN>=MEAN,LOT2,lmt,POPEN,0,'','IF03');
END
下单日志如下:
序号 品种名称 说明 预警名称 预警时间 预警价格 现价/盈亏 动作
请高手帮忙看看,怎么开仓这么频繁啊,程序思想很简单,取两品种N周期价差均值,上轨是价差均值+标准差,下轨是价差均值-标准差,价差突破上轨做空价差,回归均值平仓;做多价差同理
引用某个品种本周期的开盘价,要用双引号,注意,公式代码的书写,都要在英文状态下,您的有的地方的写法,不是英文状态输入
YOPEN:="IF01$OPEN";
POPEN:="IF03$OPEN";
另:同一个下单语句的条件,不要有交叉.把红色标识的地方,等号去掉,类似情况下,等号也去掉
TSELLSHORT(YOPEN-POPEN<=MEAN,LOT1,lmt,YOPEN,0,'','IF12');
TSELLSHORT(YOPEN-POPEN>=MEAN,LOT2,lmt,POPEN,0,'','IF03');
完全按4楼5楼的建议改写,没有新的改写.
一根K线上没有频繁开仓,只是会不成交,有未成交委托.
逻辑相关问题,自行修改完善.
注意本地,(1)IF01和IF03的1分钟K线有数据.(2)只监测品种IF01
INPUT:M(10,1,100,1);
INPUT:a(1.67,1,100,1);
INPUT:N(75,1,100,1);
INPUT:num(1,1,10,1);
runmode:0;
YOPEN:="IF01$OPEN";
POPEN:="IF03$OPEN";
o1:YOPEN-POPEN,noaxis;
MEAN:MA(o1,M),noaxis;
vd:=std(o1,N);
UPPERBAND:MEAN+a*vd,noaxis;
LOWERBAND:MEAN-a*vd,noaxis;
IF NOT(ISLASTBAR) THEN EXIT;
//做空价差
IF TBUYHOLDINGEX('xx','IF01',0)=0 AND TBUYHOLDINGEX('xx','IF03',0)=0 AND TSELLHOLDINGEX('xx','IF01',0)=0 AND TSELLHOLDINGEX('xx','IF03',0)=0 THEN
BEGIN
TBUYSHORT(o1>=UPPERBAND,num,lmt,YOPEN,0,'xx','IF01');
TBUY(o1>=UPPERBAND,num,lmt,POPEN,0,'xx','IF03');
END
//做空套利平仓
IF TSELLHOLDINGEX('xx','IF01',0)>0 AND TBUYHOLDINGEX('xx','IF03',0)>0 and tenterbars>0 THEN
BEGIN
TSELLSHORT(o1<MEAN,num,lmt,YOPEN,0,'xx','IF01');
TSELL(o1<MEAN,num,lmt,POPEN,0,'xx','IF03');
END
//做多价差
IF TBUYHOLDINGEX('xx','IF01',0)=0 AND TBUYHOLDINGEX('xx','IF03',0)=0 AND TSELLHOLDINGEX('xx','IF01',0)=0 AND TSELLHOLDINGEX('xx','IF03',0)=0 THEN
BEGIN
TBUY(o1<=LOWERBAND,num,lmt,YOPEN,0,'xx','IF01');
TBUYSHORT(o1<=LOWERBAND,num,lmt,POPEN,0,'xx','IF03');
END
//做多套利平仓
IF TBUYHOLDINGEX('xx','IF01',0)>0 AND TSELLHOLDINGEX('xx','IF03',0)>0 and tenterbars>0 THEN
BEGIN
TSELL(o1>MEAN,num,lmt,YOPEN,0,'xx','IF01');
TSELLSHORT(o1>MEAN,num,lmt,POPEN,0,'xx','IF03');
END
.(2)只监测品种IF01
监测套利品种之一即可。 难怪我重复发单了。 估计监测了2个 多发一次。