예제 #1
0
    def buyp(self, price, amount):
        orderId = None
        cancel = False
        try:
            _, orderId = yield bitfinex.sell(self.data['pairs'], price, amount)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())
        else:
            if orderId is not None:
                print('SUCCESSFULLY BUYP:', orderId)
                try:
                    order = yield bitfinex.getOrder(self.data['pairs'],
                                                    orderId)
                except Exception as err:
                    failure = Failure(err)
                    print(failure.getBriefTraceback())
                    cancel = True
                else:
                    if order.status != 'done':
                        cancel = True

        if cancel:
            self.state = 'wait'
            self.reactor.callWhenRunning(self.cancel, orderId)
        else:
            self.data['buyp'] = orderId
            self.data['buys'] = []
            self.state = 'run'
예제 #2
0
def sell(exchange,coinPair,amount,price):
    global state
    global stateStr
    global traded_count
    orderId = None

    if True:#balance >= amount:
        try:
            orderId = yield exchange.sell(coinPair,price,amount)
            print(orderId)
            stateStr += '| SELL:' + str(orderId)
        except Exception as err:
            failure = Failure(err)
            stateStr += '| SELL ERROR:' + str(failure.getBriefTraceback())
            print(failure.getBriefTraceback())

    if orderId[1] is not None and orderId[0] == True:
        print("SUCCESSFULLY SELL:", orderId[1])
        stateStr += '| SUCCESSFULLY SELL:' + str(orderId[1])
        traded_count += 1
        try:
            order = yield exchange.getOrder(coinPair,orderId)
        except Exception as err:
            failure = Failure(err)
            stateStr += '| getOrder ERROR:' + str(failure.getBriefTraceback())
            print(failure.getBriefTraceback())

    state = "GO"
예제 #3
0
    def test_writeFailure(self, logger):
        """
        L{writeFailure} writes a L{Failure} to the log.
        """
        if Failure is None:
            raise SkipTest("Twisted unavailable")

        try:
            raise RuntimeError("because")
        except:
            failure = Failure()
            expectedTraceback = failure.getBriefTraceback()
            writeFailure(failure, logger)
        message = logger.messages[0]
        assertContainsFields(
            self,
            message,
            {
                "message_type": "eliot:traceback",
                "exception": RuntimeError,
                "reason": failure.value,
                "traceback": expectedTraceback,
            },
        )
        logger.flushTracebacks(RuntimeError)
예제 #4
0
    def test_writeFailure(self, logger):
        """
        L{writeFailure} writes a L{Failure} to the log.
        """
        if Failure is None:
            raise SkipTest("Twisted unavailable")

        try:
            raise RuntimeError("because")
        except:
            failure = Failure()
            expectedTraceback = failure.getBriefTraceback()
            writeFailure(failure, logger)
        message = logger.messages[0]
        assertContainsFields(
            self,
            message,
            {
                "message_type": "eliot:traceback",
                "exception": RuntimeError,
                "reason": failure.value,
                "traceback": expectedTraceback,
            },
        )
        logger.flushTracebacks(RuntimeError)
예제 #5
0
파일: udplog.py 프로젝트: containerz/udplog
    def log(self, category, eventDict):
        """
        Log an event.

        @param category: A short string identifying the type of log event.
            The receiving log server may use this to collect all messages of the
            same category in their own log files.
        @type category: C{bytes}

        @param eventDict: The event dictionary. As this is serialized to JSON
            (see L{serialize}), for complex values, you may want to render them
            to a string before adding them to the event dictionary.
        @type eventDict: C{dict}
        """
        self.augment(eventDict)
        data = self.serialize(category, eventDict)

        try:
            self.socket.send(data)
        except:
            failure = Failure()
            why = "Failed to send udplog message"
            data = self.serializeFailure(category, eventDict, len(data),
                                         failure, why)
            try:
                self.socket.send(data)
            except Exception:
                import sys
                text = why + '\n' + failure.getBriefTraceback()
                print >> sys.stderr, text
예제 #6
0
파일: udplog.py 프로젝트: mochi/udplog
    def log(self, category, eventDict):
        """
        Log an event.

        @param category: A short string identifying the type of log event.
            The receiving log server may use this to collect all messages of the
            same category in their own log files.
        @type category: C{bytes}

        @param eventDict: The event dictionary. As this is serialized to JSON
            (see L{serialize}), for complex values, you may want to render them
            to a string before adding them to the event dictionary.
        @type eventDict: C{dict}
        """
        self.augment(eventDict)
        data = self.serialize(category, eventDict)

        try:
            self.socket.send(data)
        except:
            failure = Failure()
            why = "Failed to send udplog message"
            data = self.serializeFailure(category, eventDict, len(data),
                                         failure, why)
            try:
                self.socket.send(data)
            except Exception:
                import sys
                text = why + '\n' + failure.getBriefTraceback()
                print >> sys.stderr, text
예제 #7
0
파일: botbot.py 프로젝트: fxia22/ASM_xf
 def receiveDirectMessage(self, senderName, messageText, metadata=None):
     cmdline = string.split(messageText, ' ', 1)
     if len(cmdline) == 1:
         cmd, arg = cmdline[0], ''
     else:
         cmd, arg = cmdline
     try:
         getattr(self, "bot_%s" % cmd)(senderName, arg, metadata)
     except:
         f = Failure()
         self.voice.directMessage(senderName, f.getBriefTraceback())
예제 #8
0
    def cancel(self, orderId):
        try:
            result, data = yield bitfinex.cancel(self.data['pairs'], orderId)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())
        else:
            if result:
                print('SUCCESSFULLY CANCEL:', orderId)

        self.state = 'run'
예제 #9
0
def buy(exchange, coinPair, amount, price):
    global buy
    global state
    orderId = None

    if True:  #balance >= price*amount:
        try:
            orderId = yield exchange.buy(coinPair, price, amount)
            print(orderId)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())

    if orderId[1] is not None and orderId[0] == True:
        print("SUCCESSFULLY BUY:", orderId[1])
        buys += 1
        try:
            order = yield exchange.getOrder(orderId, coinPair)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())
예제 #10
0
    def cbRun(self, exchange):
        if self.running:
            # print('running')
            orderBook = [[], []]
            try:
                orderBook = yield EXCHANGE[exchange].getOrderBook(self.pairs)
            except Exception as err:
                failure = Failure(err)
                print(failure.getBriefTraceback())
            self.slots[exchange].setOrderBook(orderBook)
            # print(orderBook)

            yield self.cbRun(exchange)
예제 #11
0
def buyp(amount, price="", sellAmount=0):
    global state
    global buys
    global buypId
    orderId = None
    try:
        if price == "":
            matchPrice = "1"
        else:
            matchPrice = "0"
        orderId = yield okexFuture.trade(pairs,
                                         price=price,
                                         amount=str(round(amount)),
                                         tradeType="3",
                                         matchPrice=matchPrice)
    except Exception as err:
        failure = Failure(err)
        print(failure.getBriefTraceback())

    if orderId:
        print("SUCCESSFULLY BUYP:", orderId)

        try:
            order = yield okexFuture.getOrder(pairs, orderId=orderId)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())
        else:
            print(order)

    buypId = orderId
    if state == 'PPP':
        if sellAmount > 0:
            state = 'PPPsell'
            reactor.callWhenRunning(sellp, amount=sellAmount)
        else:
            state = 'STOP'
    else:
        state = 'BUYPCHECK'
예제 #12
0
    def sell(self, price, amount):
        orderId = 0
        try:
            _, orderId = yield bitfinex.sell(self.data['pairs'], price, amount)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())
        else:
            if orderId != 0:
                print('SUCCESSFULLY SELL:', orderId)

        self.data['sells'].append((price, amount))
        self.state = 'run'
예제 #13
0
def buy(amount=1.0, price=""):
    global state
    global buys
    global lastBuyAmount
    orderId = None
    try:
        if price:
            matchPrice = "0"
        else:
            matchPrice = "1"
        orderId = yield okexFuture.trade(pairs,
                                         price=price,
                                         amount=str(round(amount)),
                                         tradeType="1",
                                         matchPrice=matchPrice)
        print(orderId)
    except Exception as err:
        failure = Failure(err)
        print(failure.getBriefTraceback())

    if orderId:
        print("SUCCESSFULLY BUY:", orderId)
        try:
            order = yield okexFuture.getOrder(pairs, orderId=orderId)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())
        else:
            print(order)
            price = order[0]['price']
            buys.append((price, float(amount)))
            data = shelve.open(dataFile)
            data['buys'] = buys
            lastBuyAmount = amount
            data.close()
            # time.sleep(1)

    state = 'GO'
예제 #14
0
    def cbRun(self, *args, **kwargs):
        if self.running:
            ticker = {}
            try:
                ticker = yield EXCHANGE[self.key].getTicker(*args, **kwargs)
            except Exception as err:
                failure = Failure(err)
                print(failure.getBriefTraceback())
            if ticker == {}:
                self.slot.setData()
            else:
                self.slot.setData({'ticker': ticker})

            yield self.cbRun(*args, **kwargs)
예제 #15
0
def sell(exchange, coinPair, amount, price):
    global sell
    global state
    orderId = None

    if True:  #balance >= amount:
        try:
            orderId = yield exchange.sell(coinPair, price, amount)
            print(orderId)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())

    if orderId[1] is not None and orderId[0] == True:
        print("SUCCESSFULLY SELL:", orderId[1])
        sells += 1
        try:
            order = yield exchange.getOrder(orderId, coinPair)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())

    state = "GO"
예제 #16
0
    def cbRun(self, *args, **kwargs):
        if self.running:
            klines = []
            try:
                klines = yield EXCHANGE[self.key].getKLineLastMin(
                    *args, **kwargs)
            except Exception as err:
                failure = Failure(err)
                print(failure.getBriefTraceback())
            if klines == []:
                self.slot.setData()
            else:
                self.slot.setData({'klines': klines})

            yield self.cbRun(*args, **kwargs)
예제 #17
0
    def cbRun(self, *args, **kwargs):
        if self.running:
            orderBook = {}
            try:
                orderBook = yield EXCHANGE[self.key].getOrderBook(
                    *args, **kwargs)
            except Exception as err:
                failure = Failure(err)
                print(failure.getBriefTraceback())
            if orderBook == {}:
                self.slot.setData()
            else:
                self.slot.setData({'orderBook': orderBook})

            yield self.cbRun(*args, **kwargs)
예제 #18
0
def sellp(amount, price=""):
    global state
    global sells
    global sellpId
    orderId = None
    try:
        if price == "":
            matchPrice = "1"
        else:
            matchPrice = "0"
        orderId = yield okexFuture.trade(pairs,
                                         price=price,
                                         amount=str(round(amount)),
                                         tradeType="4",
                                         matchPrice=matchPrice)
        print(orderId)
    except Exception as err:
        failure = Failure(err)
        print(failure.getBriefTraceback())

    if orderId:
        print("SUCCESSFULLY SELLP:", orderId)
        try:
            order = yield okexFuture.getOrder(pairs, orderId=orderId)
        except Exception as err:
            failure = Failure(err)
            print(failure.getBriefTraceback())
        else:
            print(order)

    sellpId = orderId

    if state == 'PPPsell':
        state = 'STOP'
    else:
        state = 'SELLPCHECK'
예제 #19
0
def cancel(orderId):
    global state
    result = False
    data = -1
    try:
        result, data = yield okexFuture.cancel(pairs, orderId=orderId)
    except Exception as err:
        failure = Failure(err)
        print(failure.getBriefTraceback())

    if result:
        print('SUCCESSFULLY CANCEL:', orderId)
        print('cancel result:', data)
        state = 'GO'
    else:
        state = 'GO'
예제 #20
0
 def cbRun(self, *args, **kwargs):
     if self.running:
         data = {}
         try:
             data = yield EXCHANGE[self.key].getPosition(*args, **kwargs)
         except Exception as err:
             failure = Failure(err)
             print(failure.getBriefTraceback())
         if data == {}:
             self.slot.setData()
         else:
             self.slot.setData({'position': data})
         self.count += 1
         if self.count % self.LIMIT == 0:
             time.sleep(1)
             self.count = 0
         yield self.cbRun(*args, **kwargs)
예제 #21
0
    def errback(self, failure: Failure):
        """
        https://docs.scrapy.org/en/latest/topics/request-response.html
        https://docs.scrapy.org/en/latest/topics/request-response.html#topics-request-response-ref-errbacks
        :param failure:
        :return:
        """
        request = failure.request
        url = request.url
        _id = request.meta.get('_id', '')
        res = {
            '_id': _id,
            'url': url,
            'error_type': f"{failure.type}",
            'msg': failure.getErrorMessage(),
            'traceback': failure.getBriefTraceback(),
        }
        try:
            status = failure.value.response.status
            res.update({'status': status})
        except:
            pass

        self.logger.error(json.dumps(res, ensure_ascii=False))
예제 #22
0
def _do_get_connection(account, conductor, ready, retries_left, backoff):
    this_ready = defer.Deferred()
    factory = ImapClientFactory(account, conductor, this_ready)
    factory.connect()
    try:
        conn = yield this_ready
        # yay - report we are good and tell the real callback we have it.
        account.reportStatus(brat.EVERYTHING, brat.GOOD)
        ready.callback(conn)
    except Exception, exc:
        fail = Failure()
        logger.debug("first chance connection error handling: %s\n%s", fail.getErrorMessage(), fail.getBriefTraceback())
        retries_left -= 1
        if retries_left <= 0:
            ready.errback(fail)
        else:
            status = failure_to_status(fail)
            account.reportStatus(**status)
            logger.warning("Failed to connect, will retry after %s secs: %s", backoff, fail.getErrorMessage())
            next_backoff = min(backoff * 2, MAX_BACKOFF)  # magic number
            conductor.reactor.callLater(
                backoff, _do_get_connection, account, conductor, ready, retries_left, next_backoff
            )
예제 #23
0
def err(error: Failure):
    print("ERROR ENCOUNTERED")
    print(error.type)
    print(error.value)
    print(error.getBriefTraceback())
    reactor.stop()