|
代码
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());
返回
|
|
|