以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  如何记录前一天的持仓。  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=174756)

--  作者:qq代人发帖
--  发布时间:2020/3/4 14:50:04
--  如何记录前一天的持仓。

请教:如何记录前一天的持仓。最近被持仓问题搞疯。全局变量,内置数据库都用了。

有没有什么好办法记录前一天的持仓情况。好让策略能在前一天持仓的基础上继续运行?


--  作者:FireScript
--  发布时间:2020/3/4 14:53:35
--  
 你是图表程序化?还是后台程序化?
具体操作过程能否说明下。
[此贴子已经被作者于2020/3/4 14:57:12编辑过]

--  作者:starmichael
--  发布时间:2020/3/4 15:24:30
--  
是后台操作
--  作者:FireScript
--  发布时间:2020/3/4 15:32:20
--  
后台读取的就是账号最新的状态,也就是昨日最后的仓位情况。你这还需要记录啥呢?
--  作者:wenarm
--  发布时间:2020/3/4 15:33:29
--  

1.这种状态记录,只能选择在某个时间点,将其写入到ext全局变量中。

2.你这种操作实际上没有多大意义。不知道你记历史做什么用。

 

 


--  作者:starmichael
--  发布时间:2020/3/4 21:42:19
--  
1. 因为有多策略。所以要分清各个策略的持仓情况。
2. 因为第二天,策略重新运行。如果没有昨天的开仓状态,就会出现重复开仓的现象。

--  作者:wenarm
--  发布时间:2020/3/4 22:05:20
--  

1您这种需求,最好的解决办法是多账户。别的想区分策略持仓的方法都无法满足。

2在后台中,这种情况是不存在的。虽然重新启动运行,但是之前的开平信号等记录都还是在的。对其操作不可能丢。

你说的重复下单,指的是什么?后台不会对历史信号操作。

 

建议你把完整代码贴出来给我们看下。


--  作者:starmichael
--  发布时间:2020/3/5 9:13:06
--  
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
这是今早开盘记录的持仓信息。
一开盘,我就有了两个持仓。而实际情况是,仓位在昨天就清空了。
也就是今天开盘的持仓和昨天的持仓没有衔接上,而是又新计算了一个持仓。

--  作者:FireScript
--  发布时间:2020/3/5 9:21:50
--  
 你这个输出的代码怎么写的啊。贴下看下。
--  作者:starmichael
--  发布时间:2020/3/5 9:57:31
--  
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