4.48K 浏览
0

问题描述:
1. 论坛中多次提到一个问题:原来持仓1手隔夜,次日早上开盘瞬间会对出一对 “买-卖”操作,长期以来该问题一直存在。每天忍受着每次开盘时无故多出的一对“买卖”+滑点损失。

(注:隔夜1手持仓,晚间程序被kill掉,早上9:00启动程序)

—————————————————————————————
if tiaojian == True:
if position.pos_long == 0 and position.pos_short == 0:
target_pos.set_target_volume(1)

2020-06-04 21:01:12,254 – INFO – 通知: 成交通知,合约:DCE.a2009,手数:1
2020-06-04 21:01:12,732 – WARNING – 通知: 撤单失败,CTP:报单已全成交或已撤销,不能再撤
2020-06-04 21:01:12,763 – WARNING – 通知: 撤单失败,CTP:报单已全成交或已撤销,不能再撤
2020-06-04 21:01:15,508 – INFO – 通知: 下单成功
2020-06-04 21:01:15,686 – INFO – 通知: 成交通知,合约:DCE.a2009,手数:1
2020-06-04 21:01:15,731 – WARNING – 通知: 撤单失败,CTP:报单已全成交或已撤销,不能再撤
2020-06-04 21:01:15,733 – WARNING – 通知: 撤单失败,CTP:报单已全成交或已撤销,不能再撤
—————————————————————————————
因为该问题只在开盘瞬间(程序启动时)出现,无法print及logger,无法详细知道程序的逻辑。
大胆猜测问题可能原因: 1. 程序启动;2. position信息在程序启动瞬间未获得持仓信息(1手隔夜的持仓没有获得到);3. 因为条件==True且position.pos_long == 0 就下单交易了;4. 下单后又获得了更新后的position信息,发现已经是2了,所以撤单;5.撤单失败;6.position.pos_long == 2,故平一手! (无缘无故多出一对“买-卖操作” + 滑点)

问题出在2,获取隔夜的持仓信息position信息不准确或不全即开始下单,即:position信息和下单时异步操作出现了逻辑问题????????

2. 一点建议:tqsdk的logger问题,默认import logger的时候会产生大量调试信息,可否在新版本中将logger交给用户配置?

mingtaish 已回答的问题 2020年6月29日
0

你的情况怎样了呢,有后续研究吗,登录账户后,应该有很长时间获得持仓信息的呀,

Z Liu 发表新评论 2020年6月29日

加了几行代码:
position = api.get_position(SYMBOL)
deadline = time.time() + 1
while api.wait_update(deadline=deadline):
pass
等一秒,暂时解决问题。但不保险,一秒后也有可能不能获得position信息。

官方有is_serial_ready函数,没有is_position_ready。

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