Exemplo n.º 1
0
    def trade_ioc(self, pair, side, price, amount, reason):
        price = ("%0." + str(PAIRS[str(pair)]['price_decimals']) + "f") % price
        amount = ("%0." + str(PAIRS[str(pair)]['lot_decimals']) + "f") % amount

        order_info = self.api.create_order(self.wallet_id, side,
                                           symbol_to_itbit(pair.token), amount,
                                           price, self.pair_name(pair)).json()

        print 'first print'
        print order_info
        order_id = order_info['id']

        if order_is_open(order_info):  # try to get order result immediately
            order_info = self.api.get_order(self.wallet_id, order_id).json()

        if order_is_open(
                order_info):  # still not complete, cancel, wait, and retry
            record_event("SLEEPING,1,EXEC_WAIT")
            time.sleep(1)
            self.api.cancel_order(self.wallet_id, order_id)

            record_event("SLEEPING,1,EXEC_WAIT")
            time.sleep(1)
            order_info = self.api.get_order(self.wallet_id, order_id).json()

        print 'second print'
        print order_info

        assert (not order_is_open(order_info))
        filled_qty = Decimal(order_info['amountFilled'])
        average_price = Decimal(order_info['volumeWeightedAveragePrice'])

        record_event("EXEC,%s,%s,%s,%s,%s,%0.9f,%0.9f" %
                     (side.upper(), reason, self.name, pair.token,
                      pair.currency, filled_qty, average_price))

        return filled_qty
Exemplo n.º 2
0
                   name=market,
                   kwargs=dict(InvocationType='Event', FunctionName=market))
        t.start()


def invoke_all(markets, reason):
    for market in markets:
        invoke_one(str(market), reason, 0, throttle=False)


if __name__ == '__main__':
    with open('../markets.csv') as f:
        all_markets = [line.strip('\n').replace(',', '-') for line in f]

    while True:
        record_event("QUERY_ALL_START")
        books = query_all()
        record_event("QUERY_ALL_END")

        for pair, pair_books in books.items():
            for book in pair_books:
                book_age[book.name] = book.age

            if near_crossed(pair_books) or any(
                    map(lambda sym: pair.endswith(sym),
                        MAKER_CURRENCIES)) or any(
                            map(lambda sym: pair.startswith(sym),
                                MAKER_SYMBOLS)):
                for book in pair_books:
                    if book.age > ACTIVE_AGE:
                        invoke_one(book.name, 'ACTIVE', book.age)
Exemplo n.º 3
0
 def withdraw(self, dest, symbol, amount):
     record_event("WITHDRAW,%s,%s,%s,%s,%s" %
                  (self.name, dest.name, symbol, amount,
                   dest.deposit_address(symbol)))
Exemplo n.º 4
0
 def cancel_all_orders(self):
     for order in self.active_orders():
         record_event("CANCELALL,%s,%s" % (self.name, order.order_id))
         self.cancel(order)
Exemplo n.º 5
0
 def cancel_all_orders(self):
     for order in self.api.get_open_orders():
         record_event("CANCELALL,%s,%s" % (self.name,order['OrderUuid']))
         self.api.cancel(order['OrderUuid'])
Exemplo n.º 6
0
 def cancel_all_orders(self, exclude_list=[]):
     for txid, info in self.active_orders().items():
         if txid not in exclude_list:
             record_event("CANCELALL,%s,%s" % (self.name, txid))
             self.cancel(txid)