4.18K 浏览
0

以下是平仓代码:

while True:
     position_dict = api.get_position()
    api.wait_update()
    pos_len = len(position_dict)
    if pos_len == 0:
        break
     for key, value in position_dict.items(): 
        # 根据技术指标平仓

但即使在期货APP中看见没有持仓,程序还是在运行不会停止。

Shoe X 已回答的问题 2020年10月15日
0

get_position

文档说:

注意: 为保留一些可供用户查询的历史信息, 如 volume_long_yd(本交易日开盘前的多头持仓手数) 等字段, 因此服务器会返回当天已平仓合约( pos_long 和 pos_short 等字段为0)的持仓信息

于是,遇到当天有平仓时,pos_len == 0 为False,则不会退出循环。

试试这样写:

position_dict = api.get_position()
for SYMBOL, position in position_dict.items(): 
    if 平仓条件成立:
        # 下单指令
        while True:
            api.wait_update()
            if position.pos_long==0 and position.pos_short==0:
                break

Shoe X 编辑答案 2020年10月16日

这种情况如果有锁仓的话也会不准的可以再加个判断pos_long 是否为0

谢谢老师提醒,已经做了修改

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