741057228我QQ 发表于 2017-12-8 20:44:14

BotVS开发基础—2.4 获取订单、取消订单、获取未完成订单

  代码



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());

  返回
页: [1]
查看完整版本: BotVS开发基础—2.4 获取订单、取消订单、获取未完成订单