コード例 #1
0
ファイル: qipan.py プロジェクト: a04512/botvs-1
    def transaction(self, action, price, quantity, order_type):
        """
        下单
        :param action: 
        :param price: 
        :param quantity:
        :param type: 
        :return: 
        """
        while True:
            account_info = self.getAccountInfo()
            self.printAccountInfo(account_info)
            if order_type == self.ORDER_TYPE_SELL:
                if float(account_info['Stocks']) >= quantity:
                    break

            if order_type == self.ORDER_TYPE_BUY:
                if float(account_info['Balance']) >= quantity * price:
                    break

            Log(order_type, '钱或者币数量不够')
            Sleep(self.checkTryTime)

        while True:
            order_id = action(price, quantity)
            if order_id:
                return order_id

            order_id = self.orderIsNotExists()
            if order_id:
                return order_id

            Sleep(self.checkTryTime)
コード例 #2
0
ファイル: qipan.py プロジェクト: a04512/botvs-1
    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
コード例 #3
0
ファイル: qipan.py プロジェクト: a04512/botvs-1
    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 = []
コード例 #4
0
ファイル: qipan.py プロジェクト: a04512/botvs-1
    def run(self):
        """运行搬砖"""
        order_list = self.generateOrders()
        account_info = self.getAccountInfo()
        Log('---------初始化订单成功---------')

        while True:
            order_list = self.checkOrders(order_list)
            Sleep(self.checkTryTime)
コード例 #5
0
ファイル: qipan.py プロジェクト: a04512/botvs-1
    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