重写函数用法就很简单了,id=buy(价格,数量) 一句话就可以下单了,并返回id,适合懒人,并实现不成功自动撤单 实际上价格也是无效的,自动获取最新价+5跳 哈哈,这个是为了实盘避免撤单模拟对价成交
def buy(price, volume): global order_list, quote, deadline order = api.insert_order(symbol=SYMBOL, direction="BUY", offset="OPEN", limit_price=quote.ask_price1 + 5, volume=volume) while True: api.wait_update(deadline=deadline) if api.is_changing(order, "status"): print(order.status == "FINISHED", order.status != "FINISHED") if order.status == "FINISHED": return order.order_id break else: print('已撤单') api.cancel_order(order.order_id) def sell(price, volume): global order_list, deadline order = api.insert_order(symbol=SYMBOL, direction="SELL", offset="CLOSE", limit_price=quote.bid_price1 - 5, volume=volume) while True: api.wait_update(deadline=deadline) if api.is_changing(order, "status"): print(order.status == "FINISHED", order.status != "FINISHED") if order.status == "FINISHED": return order.order_id break else: print('已撤单') api.cancel_order(order.order_id) def short(price, volume): global order_list, quote, deadline order = api.insert_order(symbol=SYMBOL, direction="SELL", offset="OPEN", limit_price=quote.bid_price1 - 5, volume=volume) while True: api.wait_update(deadline=deadline) if api.is_changing(order, "status"): print(order.status == "FINISHED", order.status != "FINISHED") if order.status == "FINISHED": return order.order_id break else: print('已撤单') api.cancel_order(order.order_id) def cover(price, volume): global order_list, deadline order = api.insert_order(symbol=SYMBOL, direction="BUY", offset="CLOSE", limit_price=quote.ask_price1 + 5, volume=volume) while True: api.wait_update(deadline=deadline) if api.is_changing(order, "status"): print(order.status == "FINISHED", order.status != "FINISHED") if order.status == "FINISHED": return order.order_id break else: print('已撤单') api.cancel_order(order.order_id)
chengxiaohui321 未选择答案 2021年2月1日
谢谢大佬分享,,想请教下,这个里面用了while True: api.wait_update(deadline=deadline)
这样的话,还能把这个buy函数放到一个大的循环里去吗?大的循环就是while True:wait_update
在这个buy里不是会阻塞吗?
xuansuokeji 发表新评论 2021年2月1日
要是官方把发送数据和接收行情分开就好了。又不是一直要发送。。。
关于wait_update这里我也不是特别的熟悉,回测时候是没有问题的不会阻塞,实盘的时候不清楚到底是多个update只更新一次还是有一个就更新一次