代码
RetryDelay = 1500; def CancelPendingOrders(exch, orderType): # 取消所有未完成的挂单, 参数1 交易所 参数2 类型 global RetryDelay orders = _C(exch.GetOrders); #取订单确保成功 for order in orders: if order.Type == orderType: #当前订单类型不符合,跳过 exch.CancelOrder(order.Id, order); #取消订单 Sleep(RetryDelay); def StripOrders(exch, orderId): # 取消除 orderId 以外的 所有未成交 挂单 global RetryDelay orders = _C(exch.GetOrders); #取订单确保成功 for order in orders: if order.Id != orderId: #排除指定ID ,并且订单有未完成 exch.CancelOrder(order.Id, order, " 买单" if order.Type == ORDER_TYPE_BUY else " 卖单", ' 已成交', order.DealAmount); #取消订单 Sleep(RetryDelay); def main(): ticker = exchange.GetTicker(); # 获取 初始时的行情数据 Log("当前行情ticker:", ticker); #获取并打印行情 # 下一些不会成交的单子, 让单子 处于 pending 状态 ID1 = exchange.Buy(ticker.Last - 100, 0.1); ID2 = exchange.Buy(ticker.Last - 150, 0.2); ID3 = exchange.Sell(ticker.Last + 100, 0.3); ID4 = exchange.Sell(ticker.Last + 200, 0.4); pendingOrders = exchange.GetOrders(); for order in pendingOrders: # 第二个实例 Log("挂起订单Order:", order); CancelPendingOrders(exchange, ORDER_TYPE_BUY); # 按类型取消未完成的挂单 Sleep(2000); Log("当前订单orders : ", exchange.GetOrders()); StripOrders(exchange, ID4); # 按类型取消未完成的挂单 Sleep(2000); Log("当前订单orders : ", exchange.GetOrders());
返回