逐K下运行。
VARIABLE:arry[12]:=0;
t:=STRRIGHT(STKLABEL ,2);
z:=STRTRIMRIGHT(STKLABEL ,t );//截取出品种名称,如AL,RB
temp:='';
if ISLASTBAR then begin //如果不加这一句,历史K都走一次循环,会非常卡。
FOR i=1 to 12 do
begin
if i<10 then temp:=STRCAT(z,'0'+NUMTOSTR(i,0)); else if then temp:=STRCAT(z,NUMTOSTR(i,0));//拼接品种代码名称
openints:=CALLSTOCK(temp,vtOPENINT,6,0);//直接引用持仓量
if not(openints) then arry[i]:=0;else if then arry[i]:=openints;//如果取不到持仓量数据,直接写入0.
end
end
op1:=0;//最大持仓量合约
op2:=0;//最小持仓量合约
for j=1 to 12 do
begin
if HOD2(arry, 0, arry[j])=1 then op1:=j;
if HOD2(arry, 0, arry[j])=2 then op2:=j;
if op1*op2 <>0 then break;
end
//到这里已经挑选出持仓量第一和第二的合约了 分别用op1和op2表示 ,使用的时候注意这2个值是1到12的值。
//剩下的引用品种对应的均线,请自行补充完整。