请教:如何记录前一天的持仓。最近被持仓问题搞疯。全局变量,内置数据库都用了。
有没有什么好办法记录前一天的持仓情况。好让策略能在前一天持仓的基础上继续运行?
你是图表程序化?还是后台程序化?
具体操作过程能否说明下。
[此贴子已经被作者于2020/3/4 14:57:12编辑过]
后台读取的就是账号最新的状态,也就是昨日最后的仓位情况。你这还需要记录啥呢?
1.这种状态记录,只能选择在某个时间点,将其写入到ext全局变量中。
2.你这种操作实际上没有多大意义。不知道你记历史做什么用。
1. 因为有多策略。所以要分清各个策略的持仓情况。
2. 因为第二天,策略重新运行。如果没有昨天的开仓状态,就会出现重复开仓的现象。
1您这种需求,最好的解决办法是多账户。别的想区分策略持仓的方法都无法满足。
2在后台中,这种情况是不存在的。虽然重新启动运行,但是之前的开平信号等记录都还是在的。对其操作不可能丢。
你说的重复下单,指的是什么?后台不会对历史信号操作。
建议你把完整代码贴出来给我们看下。
2020-03-04 14:54:02.790 -================open=4153.00=====================
2020-03-04 14:54:03.009 Holding=0.000
2020-03-04 14:54:03.009 vHolding=0.000
2020-03-04 14:54:03.009 rAG1vHolding=0.000
2020-03-04 14:54:03.025 --------------------------------- End of Data close=4151.00-----------------------
2020-03-04 14:57:02.587 workmode=1.000
2020-03-04 14:57:02.587 -================open=4151.00=====================
2020-03-04 14:57:02.775 Holding=0.000
2020-03-04 14:57:02.775 vHolding=0.000
2020-03-04 14:57:02.790 rAG1vHolding=0.000
2020-03-04 14:57:02.790 --------------------------------- End of Data close=4153.00-----------------------
这是昨晚系统记录的持仓情况。
2020-03-05 09:00:08.635 workmode=1.000
2020-03-05 09:00:08.641 -================open=4153.00=====================
2020-03-05 09:00:08.858 Holding=2.000
2020-03-05 09:00:08.865 vHolding=2.000
2020-03-05 09:00:08.872 rAG1vHolding=2.000
2020-03-05 09:00:08.879 --------------------------------- End of Data close=4155.00-----------------------
2020-03-05 09:03:02.431 workmode=1.000
2020-03-05 09:03:02.446 -================open=4147.00=====================
2020-03-05 09:03:02.587 Holding=2.000
2020-03-05 09:03:02.587 vHolding=2.000
2020-03-05 09:03:02.587 rAG1vHolding=2.000
这是今早开盘记录的持仓信息。
一开盘,我就有了两个持仓。而实际情况是,仓位在昨天就清空了。
也就是今天开盘的持仓和昨天的持仓没有衔接上,而是又新计算了一个持仓。
VARIABLE:vHolding=IF(workmode=3 or workmode=0,0,EXTGBDATA('AG1vHOLDING'));
。。。。。。
IF (workmode=1 or workmode=2) THEN
BEGIN
EXTGBDATASET('AG1vHolding',vHolding);
rAG1vHolding:EXTGBDATA('AG1vHolding'),LINETHICK0;
END
IF ISLASTBAR and (workmode=1 or workmode=2) THEN
BEGIN
DEBUGFILE(debugfilename,'-================open=%.2f=====================',open);
DEBUGFILE(Debugfilename,'Holding=%.3f',Holding);//输出vHolding
DEBUGFILE(Debugfilename,'vHolding=%.3f',vHolding);//输出vHolding
DEBUGFILE(Debugfilename,'rAG1vHolding=%.3f',rAG1vHolding);//输出vHolding
DEBUGFILE(debugfilename,'--------------------------------- End of Data close=%.2f-----------------------',close);
END