我的意思是,当后主力合约和现在的主力合约,他们之间成交量或者持仓量的比大于一个数值,我就提取后主力合约。
您说的对,后主力合约的判断条件我自己添加,定义为:条件A;
达到条件A系统自动提取后主力合约的数据产生K线,开仓的不是主力合约而是后主力合约。
不是交易合约的转换,可能是我没阐述清楚。下面我给出一张图。在下图中,根据主力合约和后主力合约的持仓量或者成交量之间的比例为衡量标准。这个标准称之为条件A,当条件A成立时。交易系统自动提取后主力合约的数据产生信号。比方说下图的国债,在同一时间,12月合约有信号,而主力合约没有信号。
这段代码要同时交易主力和后主力合约
主力合约:='AA01';//这里AA01代表你的主力合约代码;
后主力合约:='AA02';//这里AA02代表你的后主力合约代码;
v1:=callstock(主力合约,vtvol,datatype);
v2:=callstock(后主力合约,vtvol,datatype);
bl:=v1/v2;//bl就是用户所需要的主力和后主力合约成交量的比值
A:=0.5;//A就是用户所讲的标准,这里赋值为0.5
if bl<a and stricmp(stklabel,主力合约) then buy(1,10,market);//当比值小于标准值时买主力合约的
if bl>a and stricmp(stklabel,后主力合约) then buy(1,10,market);//当比值大于标准值时买后主力合约的
M3 :=month>=10 and month<=12;
M6 :=month>=1 and month<=3;
M9 :=month>=4 and month<=6;
M12:=month>=7 and month<=9;//时间处于7月-9月期间
取3月 :=callstock('t03',vtOPENINT,datatype);
取6月 :=callstock('t06',vtOPENINT,datatype);
取9月 :=callstock('t09',vtOPENINT,datatype);
取12月:=callstock('t12',vtOPENINT,datatype);//取12月数据
后主力合约:=if(M3,取3月,if(M6,取6月,if(M9,取9月,取12月)));
主力合约:='t00';//这里AA01代表你的主力合约代码;
//后主力合约:='t12';//这里AA02代表你的后主力合约代码;
v1:=callstock(主力合约,OPENINT,datatype);
v2:=callstock(后主力合约,OPENINT,datatype);
bl:=v2/v1;//bl就是用户所需要的主力和后主力合约成交量的比值
A :=0.6;//A就是用户所讲的标准,这里赋值为0.5
if bl<a and stricmp(stklabel,主力合约) and holding<=0 then buy(1,10,market);//当比值小于标准值时买主力合约的
if bl>a and stricmp(stklabel,后主力合约)and holding>=0 then buy(1,10,market);//当比值大于标准值时买后主力合约的
以上代码错在哪里?没信号?