OPENO:=DYNAINFO(4);pl:=ref(l,1);
kd1:=ref(c>openo,1);
thold:=ref(tholding,1);
kdc:=TSUBMIT(1);//开多
if kd1 and r1>1 and kdc=0 then
begin
tbuy(pl<=pc and thold=0 and tholding=0,1,lmt,min(o+dw,pc-dw));
tbuy(tholding<2 and thold<2,1,lmt,min(o+dw,pc-3*dw));
end
这是最大开2手的后台程序写法,可是总是会开出来超过2手的仓位,好像是识别不了持仓,实盘也试过,还是不行,怎么解决啊,急....
如果有1手未成交开空,如果有1手未成交平空,那么用户要怎么定义这两种仓位?
还有,我现在正在开发高频程序,可是每个周期后台只出一次信号,比如我想让一个周期重复开平仓,怎么写;
pc:=ref(c,1);po:=ref(o,1);dw:=mindiff;
kk1:=pc>po;
if kk1 then tbuy(tholding=0,1,lmt,pc+dw);
if kk1 then tbuy(tholding>-2 and tholding<0,1,lmt,pc+2*dw);
tsell(tholding=-1 ,1,lmt,pc-dw);
tsell(tholding=-2,1,lmt,pc-2*dw);
如何写才能让它持仓最大=2手,且可以在1根K线里按这个逻辑反复挂单并开平仓。我测试下来,总是会开出来超过2手,而且每个周期只能挂一次单,我后台设置的每1秒轮询;
到底问题出在哪里?我在开仓条件里设置上周期持仓=0都不行,还是会开出多余的仓位
首先请回答下我的问题
然后ref来获取上周期持仓是没用的,tholding是没有历史值的
kdc:=TSUBMIT(1);//未成交的开多挂单
开多仓条件中 kdc=0 也就是没有未成交的开多挂单
那你用DEBUGFILE记录一下日志,看一下。
另外
tbuy(pl<=pc and thold=0 and tholding=0,1,lmt,min(o+dw,pc-dw));
这里你改成 <2试试
如果有1手未成交开空,如果有1手未成交平空,那么用户要怎么定义这两种仓位?
答:我每个周期结束的时候会提前撤单;