4.86K 浏览
0

在回测中使用api.get_position(code).pos时返回的值为目前的净持仓,但有一个问题是,如果在回测中同一根k线内分批次进行平仓操作时,使用如下语句会出现平仓手数不对的情况。

我看了一下回测结果,发现问题在于get_position().pos的返回值不是当天的持仓,而是上一交易日的净持仓。(我的回测用的是历史日k)

所以我想问一下,这个问题的原因是我回测中历史k线没有更新吗?还是说所有情况下,这个语句都只能返回上一交易日的净持仓数据?

如果我需要拿到实时的净仓数据,应该用什么语句呢?

set_target_volume((api.get_position(code).pos - vol))
# vol为分批次需要平仓的手数
lookis 已回答的问题 2020年7月28日

补充问一下,get_position().pos这个语句是在什么时候更新返回值呢?
是wait_update()之后才会更新吗?还是说正常调用(模拟或实盘)时,只要我仓位有变化,下一次调用get_position().pos语句就能够拿到变化后的实时净仓数据呢?

我目前在回测的部分用代码绕过了这个问题,但是为了能上模拟和实盘,我还是想弄清楚get_position().pos究竟返回的是哪个时刻的净仓?这个语句的返回值会在什么机制下进行更新?

0

PS. 如果要用 asyncio 异步编程的话也需要做上面的那个判断,因为回调的时候有可能只是因为position别的字段被更新了,pos相关的字段没有更新(比方说 float_profit 字段更新也会有回调)

muze123 发表新评论 2020年7月28日

知道了,谢谢~

您正在查看2个答案中的1个,单击此处查看所有答案。