请教下同策略多账户后台,入单模块用tbuy函数,采用循环语句分别指定多账户的account分别下单。
在这种情况下,监控的tenterbars, ttotaldaytrade函数是按策略本身记录的还是每个账户下单一次记录一次。谢谢。
实际测试好像不是哦。
经测试
accnumber:= 2;
variable: account[2] = '';
account[1]:= 'aaaaaaa';
account[2]:= 'bbbbbbb';
for i=1 to accnumber do begin
debugfile(‘d:\test.txt’,account[i]'tenterbars:%.0f',tenterbars(1));
if tenterbars(1)<>0 then begin
tbuy(1,acc_n,mkt,0,0,account[i],stklabel),orderqueue,allowrepeat;
end
如上代码,用1分钟k线结束模式,在第一个账户'aaaaaaa'记录的tenterbars是1,然后会入场,在第二个账户'bbbbbbb'记录的tenterbars是0,说明当根k线入过场了,其实这里的入场是aaaaaaa入的,于是就不入场了。这样就产生问题了,跟在第一个账户之后,第二个账户永远也不会入场。
如上代码改一句话。漏了连字符
debugfile(‘d:\test.txt’,account[i]'tenterbars:%.0f',tenterbars(1));
改成
debugfile(‘d:\test.txt’,account[i]&'tenterbars:%.0f',tenterbars(1));
你看看,是不是和后台 监控 里的记录一致
是和监控里记录的一致。但是我不希望和监控里记录的一致。监控里有一个账户下单就会记录一次。这样如果我有10个账户,出一次开平信号,ttotaldaytrade就会记录10次。
tenterbars,texitbars也会出问题。比如在固定轮询的时候我要限定当根k线如果有入场就不再入场,tenterbars(1)<>0, 这样其实只对第一个账户有效,第二个账户读取tenterbars(1)就永远是0,也就不会入场了。
在固定轮询的时候我要限定当根k线如果有入场就不再入场.
你是希望,如果当根K线,如果帐户A开仓了,那么帐户B的不再开仓吗?
不是。是希望AB账户都开仓。但是单根k线里AB账户都只开一次仓。
但是目前tenterbars函数会把A账户的开仓同时记入B账户,导致B账户误认为当根k线已经开过仓了,导致B账户不开仓了。