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

返回

原文地址:https://www.cnblogs.com/bitquant/p/7209769.html