QIFIAccount
QIFIAccount copied to clipboard
卖出委托只有部分成交会报错
- 卖出委托,部分成交执行make_deal 报找不到字段coeff错
- 卖出委托 部分成交后(未结算)持仓的状态量值问题
assert pos.volume_long == amount - part_deal # 1000 - 300 股
assert pos.volume_long_his == amount - part_deal # 1000 - 300股
assert pos.volume_long_today == -amount # 当日委托卖出1000股
assert pos.volume_long_frozen_today == amount # 冻结 1000 股
- 卖出委托部分成交结算的状态量问题 根据 qa_position 中 settle 函数,执行settle后,被直接按卖出委托全部成功处理持仓量变量(实际只成交了部分)
assert pos.volume_long == amount - part_deal # 1000 - 300 股
assert pos.volume_long_his == amount - part_deal # 1000 - 300股
assert pos.volume_long_today == 0 # 重置
assert pos.volume_long_frozen_today == 0 # 重置
- 测试代码
def test_part_sell():
code, price, amount = '000001', 10, 1000
part_deal = 300
acc: QIFI_Account = QIFI_Account("x4", "x4")
acc.initial()
r = acc.send_order(code, amount=amount, price=price, towards=ORDER_DIRECTION.BUY).copy()
acc.make_deal(r)
pos: QA_Position = acc.positions.get(code)
volume_his = pos.volume_long_his
print("建仓买入", pos.hold_detail)
assert pos.volume_long_his == 0
assert pos.volume_long == amount
assert pos.volume_long_today == amount
assert pos.volume_long_frozen_today == 0
acc.settle()
print("买入结算后", pos.hold_detail)
assert pos.volume_long_his == amount
assert pos.volume_long == amount
assert pos.volume_long_today == 0
assert pos.volume_long_frozen_today == 0
r = acc.send_order(code, amount=amount, price=price, towards=ORDER_DIRECTION.SELL).copy()
r['volume_left'] = part_deal
acc.make_deal(r)
print("卖出委托部分成交后", pos.hold_detail)
assert pos.volume_long == amount - part_deal # 1000 - 300 股
assert pos.volume_long_his == amount - part_deal # 1000 - 300股
assert pos.volume_long_today == -amount # 当日委托卖出1000股
assert pos.volume_long_frozen_today == amount # 冻结 1000 股
acc.settle()
print("结算后", pos.hold_detail)
assert pos.volume_long == amount - part_deal
assert pos.volume_long_his == amount - part_deal
assert pos.volume_long_today == 0
assert pos.volume_long_frozen_today == 0