4.17K 浏览
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

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

0

因为position字段中除了现在的持仓字段以外还会记录以前是否有持仓等其他信息,需要判断持仓的话建议通过get_position具体合约然后来判断

ringo 已回答的问题 2020年10月15日