Exemple #1
0
    def cancelPendingOrders(self):
        """取消所有未完成挂单"""

        orders = _C(self.exchange.GetOrders)
        for order in orders:
            while True:
                order_status = self.exchange.CancelOrder(order.Id)
                Log(order_status)
                order_info = _C(self.exchange.GetOrder, order.Id)
                if order_info['Status'] == self.ORDER_STATE_CLOSED:
                    break

                if (order_info['Status'] == self.ORDER_STATE_CANCELED):
                    if order_info['Type'] == self.ORDER_TYPE_SELL:
                        order_type = '卖单'
                    else:
                        order_type = '买单'

                    Log(
                        '取消了%s,订单号:%s,下单金额%s,下单数量%s,成交量%s,' %
                        (order_type, order_info['Id'], order_info['Price'],
                         order_info['Amount'], order_info['DealAmount']),
                        '#FF0000')
                    break

                Sleep(self.checkTryTime)

        self.orderList = []
Exemple #2
0
    def is_suport(self):
        datas = _C(self.get_symbols)
        for data in datas.get('data'):
            if data.get('base-currency') == self.base_currency and data.get(
                    'quote-currency') == self.quote_currency:
                self.price_precision = data.get('price-precision')
                self.amount_precision = data.get('amount-precision')
                return True

        return False
Exemple #3
0
 def orderIsNotExists(self):
     """判断是否有服务器存在的订单,本地却没有的订单,如果存在这种情况就返回 这个订单号"""
     pending_order_list = _C(self.exchange.GetOrders)
     current_order_id_list = [
         order_info['order_id'] for order_info in self.orderList
     ]
     for order in pending_order_list:
         if order['Id'] not in current_order_id_list:
             return order['Id']
     return False
Exemple #4
0
 def getAccountInfo(self):
     """获取交易所的账号的信息"""
     account_info = _C(self.exchange.GetAccount)
     total_balance = account_info["Balance"] + account_info["FrozenBalance"]
     total_stocks = account_info["Stocks"] + account_info["FrozenStocks"]
     account_info.update({
         'total_balance': total_balance,
         'total_stocks': total_stocks
     })
     self.printAccountInfo(account_info)
     return account_info
Exemple #5
0
    def checkOrders(self, order_list):
        for order in order_list:
            order_info = _C(self.exchange.GetOrder, order['order_id'])
            if order_info['Status'] == self.ORDER_STATE_CLOSED:
                Sleep(self.checkTryTime)
                fee = self.getFee()
                account_info = self.getAccountInfo()
                if order['type'] == self.ORDER_TYPE_BUY:
                    price = _N(order['price'] * (1 + self.spreads),
                               self.FLOAT_LENGTH)
                    quantity = _N(order['quantity'] * (1 - fee.get('buy')),
                                  self.FLOAT_LENGTH)
                    order_id = self.transaction(self.exchange.Sell, price,
                                                quantity, self.ORDER_TYPE_SELL)
                    new_order = {
                        'price': price,
                        'quantity': quantity,
                        'order_id': order_id,
                        'type': self.ORDER_TYPE_SELL
                    }

                    Log(
                        '订单号%s 以%s价格买入%s个币,交易成功,现在以%s价格卖出币' %
                        (order['order_id'], order['price'], order['quantity'],
                         price), '#ff0000@')
                else:

                    price = _N(order['price'] * (1 - self.spreads),
                               self.FLOAT_LENGTH)
                    quantity = _N(order['quantity'] * (1 + fee.get('buy')),
                                  self.FLOAT_LENGTH)

                    order_id = self.transaction(self.exchange.Buy, price,
                                                quantity, self.ORDER_TYPE_BUY)
                    new_order = {
                        'price': price,
                        'quantity': quantity,
                        'order_id': order_id,
                        'type': self.ORDER_TYPE_BUY
                    }

                    Log(
                        '订单号%s 以%s价格卖出%s个币,交易成功,现在以%s价格买入币' %
                        (order['order_id'], order['price'], order['quantity'],
                         price), '#ff0000@')

                order_list.append(new_order)
                order_list.remove(order)
                Log(order_list)
                Log('---------------------------')

        return order_list
Exemple #6
0
    def generateOrders(self):
        """初始化订单"""
        if self.basePrice == 0:
            ticker = _C(self.exchange.GetTicker)
            base_price = ticker['Last']
        else:
            base_price = self.basePrice

        Log('入手币价:', base_price)
        if self.entry_type:
            Log('法币入场')
            each_balance = _N(self.balance / self.numberGrids,
                              self.FLOAT_LENGTH)
            for i in range(1, self.numberGrids + 1):
                price = _N(base_price * (1 - self.spreads * i),
                           self.FLOAT_LENGTH)
                buy_quantit = _N(each_balance / price, self.FLOAT_LENGTH)
                order_id = self.transaction(self.exchange.Buy, price,
                                            buy_quantit, self.ORDER_TYPE_BUY)
                buy_info = {
                    'price': price,
                    'quantity': buy_quantit,
                    'type': self.ORDER_TYPE_BUY,
                    'order_id': order_id
                }
                self.orderList.append(buy_info)
                Sleep(self.checkTryTime)

        else:
            Log('持币入场')
            sellQuantity = _N(self.stocks / self.numberGrids,
                              self.FLOAT_LENGTH)
            for i in range(1, self.numberGrids + 1):
                price = _N(base_price * (1 + self.spreads * i),
                           self.FLOAT_LENGTH)

                order_id = self.transaction(self.exchange.Sell, price,
                                            sellQuantity, self.ORDER_TYPE_SELL)
                sell_info = {
                    'price': price,
                    'quantity': sellQuantity,
                    'type': self.ORDER_TYPE_SELL,
                    'order_id': order_id
                }
                self.orderList.append(sell_info)
                Sleep(self.checkTryTime)

        return self.orderList
Exemple #7
0
    def __init__(self, access_key, secrect_key, quote_currency, base_currency):
        Common.__init__(self, access_key, secrect_key, quote_currency,
                        base_currency)
        account = _C(self.get_accounts)

        self.account_id = account['data'][0]['id']