用如下函数记录一个开仓品种的开仓数量:
//开多 - 正常(早盘)开多或止损后开多
OU:GETREGVAL('GSWDayMPXR','MP_OU',0);
OA:=GETREGVAL('GSWDayMPXR','MP_'&STKLABEL&'_UC',0);
if NEX and OT and CTO and OU<TU and OA>0 and BO and GETREGVAL('GSWDayMPXR','MP_'&STKLABEL&'_OU',0)=0 and GETREGVAL('GSWDayMPXR','MP_'&STKLABEL&'_SL_L',0)=0 then begin
TBuy(1,OA,lmt,BPR,0,AC18),allowrepeat;
SETREGVAL('GSWDayMPXR','MP_'&STKLABEL&'_HD',OA);
SETREGVAL('GSWDayMPXR','MP_'&STKLABEL&'_OU',1);
OU1:=GETREGVAL('GSWDayMPXR','MP_OU',0);
OU1:=OU1+1;
SETREGVAL('GSWDayMPXR','MP_OU',OU1);
SETREGVAL('GSWDayMPXR','MP_'&STKLABEL&'_BOP',MB*10000);
end
由于用C判断开仓条件,信号可能重复出现。在没有信号重复的情况下,输出正常。在有信号重复时,输出奇怪的大数:
2012-12-06 09:26:20.781 MP_AG01_HD:4294967293
2012-12-06 09:26:20.781 MP_AG01_SL:49
2012-12-06 09:26:20.781 MP_AG01_OA:3
2012-12-06 09:26:20.781 MP_AG01_OT:1
2012-12-06 09:26:20.781 MP_AG01_CT0:1
2012-12-06 09:26:20.781 MP_AG01_SL_S:0
2012-12-06 09:26:20.781 MP_AG01_SL_L:1
2012-12-06 09:26:20.781 MP_AG01_BP_S:0
2012-12-06 09:26:20.781 MP_AG01_BP_L:0
2012-12-06 09:26:20.781 MP_AG01_BP:145
2012-12-06 09:26:20.781 MP_AG01_NEX:1
2012-12-06 09:26:20.781 MP_AG01_BuyRate:0.10000
2012-12-06 09:26:20.781 MP_AG01_SellRate:0.10000
2012-12-06 09:26:20.781 MP_AG01_multiplier:15.00
2012-12-06 09:26:20.781 MP_TASSET:11189986.00
2012-12-06 09:26:20.781 MP_MyASSET:1000000.00
2012-12-06 09:26:20.781 MP_TCASH:10848328.00
2012-12-06 09:26:20.781 MP_BZJ:60079.50
2012-12-06 09:26:20.781 MP_AG01_OU:4294967295.00
注册表里看到的也是一样的。用EXTGBDATASET也出现同样的情况。
请帮忙看看是什么问题。看起来像是输出函数在有信号重复时的BUG。
是一个变量,用来保存当前品种的开仓手数。
把代码发全,不然不好测试
在有信号重复的时候,把第1次出信号的输出(09:26)也发一下.
如果本地有下单日志,这个点前后的,也请发一下,谢谢
已经传给你了,有空收一下。
由于是20秒才写一次,没有输出第一次出信号时的情况。
没开日志,明天开了试试。