from tqsdk import TqApi, TargetPosTask ''' 价差回归 当近月-远月的价差大于200时做空近月,做多远月 当价差小于150时平仓 ''' api = TqApi() quote_near = api.get_quote("SHFE.rb2003") quote_deferred = api.get_quote("SHFE.rb2005") # 创建 rb2003 的目标持仓 task,该 task 负责调整 rb2003 的仓位到指定的目标仓位 target_pos_near = TargetPosTask(api, "SHFE.rb2003") # 创建 rb2005 的目标持仓 task,该 task 负责调整 rb2005 的仓位到指定的目标仓位 target_pos_deferred = TargetPosTask(api, "SHFE.rb2005") account = api.get_account() orders = api.get_order() while True: api.wait_update() if api.is_changing(quote_near) or api.is_changing(quote_deferred): spread = quote_near.last_price - quote_deferred.last_price print("当前价差:", spread) if spread > 250: print("目标持仓: 空近月,多远月") # 设置目标持仓为正数表示多头,负数表示空头,0表示空仓 target_pos_near.set_target_volume(-1) target_pos_deferred.set_target_volume(1) elif spread < 200: print("目标持仓: 空仓") target_pos_near.set_target_volume(0) target_pos_deferred.set_target_volume(0) for order in orders.items(): pass print(quote_datetime, "下单合约:{}, 下单时间:{}, 委托状态:{}, 下单方向:{}, 委托方向:{},委托手数:{}, 未成交手数:{}, 委托价格:{}".format (order[1].instrument_id, insert_timestamp, order[1].last_msg, order[1].direction, order[1].offset, order[1].volume_orign, order[1].volume_left, order[1].limit_price) ) print("账户权益:{}, 可用资金:{}, 保证金:{}, {}多头持仓:{}, {}空头持仓:{}".format (account.balance, account.available, position_nearby.margin, position_nearby.instrument_id, position_nearby.pos_long, position_deferred.instrument_id, position_deferred.pos_short) )
使用TargetPosTask进行套利下单,然后用api.get_order()获取委托信息,api.get_order()返回的是所有委托单记录,如何编写下单时只返回一次当前的委托记录和账户情况
arb zhou 选择最佳答案 2020年5月27日