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
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)
def withdraw(self, dest, symbol, amount): record_event("WITHDRAW,%s,%s,%s,%s,%s" % (self.name, dest.name, symbol, amount, dest.deposit_address(symbol)))
def cancel_all_orders(self): for order in self.active_orders(): record_event("CANCELALL,%s,%s" % (self.name, order.order_id)) self.cancel(order)
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'])
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)