Beispiel #1
0
 def get_candle_data(curr_target, date_start, date_end, period):
     polo = Poloniex.get_instance()
     ##print "Adding ", curr_target, " candle data between: ", timestamp_to_date(date_start), " ---- ", timestamp_to_date(date_end)
     ##configuration
     curr_ref = "USDT"
     ##curr_target = "BTC"
     ##start = 1451606400 ## Jan 01 2016
     ##end = 1459468800## Apr 1 2016
     ##start = 1459468800## Apr 1 2016
     ##end = 1467331200 ## july 01 2016
     ##start = 1467331200 ## july 01 2016
     ##end =  1475280000## oct 01 2016
     ##start = 1475280000 ## aug 8 2016
     ##end = 9999999999 ## present
     ##period = 14400 ## in seconds
     ##table_name = CandleTable.calc_table_name(curr_ref, curr_target, start, end, period)
     table_name = "CANDLE_" + curr_ref + "_" + curr_target + "_" + str(
         period)
     if not DBManager.exists_table(table_name):
         ct = CandleTable(curr_ref, curr_target, date_start, date_end,
                          period, table_name)
         ct.save()
     print("Populating table: " + table_name + " ...")
     curr_pair = curr_ref + "_" + curr_target
     data = polo.api_query(
         "returnChartData", {
             'currencyPair': curr_pair,
             'start': date_start,
             'end': date_end,
             'period': period
         })
     cp = CandleParser(table_name, data)
Beispiel #2
0
    def get_bottom_ask(self, curr_pair, prev_order=None):
        asks_result = Poloniex.get_instance().returnOrderBook(
            curr_pair)["asks"]
        if asks_result is None:
            print("API query error unable to get bottom ask")
            return self.get_bottom_ask(curr_pair, prev_order)
        else:
            if prev_order == None:
                return float(asks_result[0][0]) - OrderMaker.TINY_AMT
            else:
                if float(
                        asks_result[0][0]
                ) == prev_order.rate:  ##if prevorder is already bottom ask
                    return float(asks_result[1][0]) - OrderMaker.TINY_AMT
                else:
                    bits_below_my_order = 0
                    i = 0
                    while (float(asks_result[i][0]) < prev_order.rate) and (
                            bits_below_my_order < prev_order.amount * 0.25):
                        ##print asks[i][0], "at", asks[i][1]
                        bits_below_my_order += float(asks_result[i][1])
                        i += 1

                    ##if there is a substantial amount of bits priced under my prev_order, return bottom ask
                    ##else return prev order rate
                    if bits_below_my_order > prev_order.amount * 0.25:
                        return float(asks_result[0][0]) - OrderMaker.TINY_AMT
                    else:
                        return prev_order.rate
Beispiel #3
0
    def get_top_bid(self, curr_pair, prev_order=None):
        bids_result = Poloniex.get_instance().returnOrderBook(
            curr_pair)["bids"]
        if bids_result is None:
            print("API query error unable to get top bid")
            return self.get_top_bid(curr_pair, prev_order)
        else:
            if prev_order == None:
                return float(bids_result[0][0]) + OrderMaker.TINY_AMT
            else:
                if float(
                        bids_result[0]
                    [0]) == prev_order.rate:  ##if prevorder is already top bid
                    return float(bids_result[1][0]) + OrderMaker.TINY_AMT
                else:
                    bits_above_my_order = 0
                    i = 0
                    while (float(bids_result[i][0]) > prev_order.rate) and (
                            bits_above_my_order < prev_order.amount * 0.25):
                        bits_above_my_order += float(bids_result[i][1])
                        i += 1

                    ##if there is a substantial amount of bits priced over my prev_order, return top bid
                    ##else return prev order rate
                    if bits_above_my_order > prev_order.amount * 0.25:
                        return float(bids_result[0][0]) + OrderMaker.TINY_AMT
                    else:
                        return prev_order.rate
Beispiel #4
0
 def get_spread(curr_pair):
     orders_result = Poloniex.get_instance().returnOrderBook(curr_pair)
     if orders_result is None:
         print("API query error unable to get spread")
         return self.get_spread(curr_pair)
     else:
         bids = orders_result["bids"]
         asks = orders_result["asks"]
         return (float(bids[0][0]), float(asks[0][0]))
Beispiel #5
0
 def get_last_trade_rate(curr_pair, date):
     trades_result = Poloniex.get_instance().returnMarketTradeHistory(
         curr_pair)
     if trades_result is None:
         print("API query error unable to get trades")
         return self.get_last_trade_rate(curr_pair, date)
     else:
         for i in range(len(trades_result)):
             ##print(t)
             if createTimeStamp(trades_result[i]['date']) < date:
                 rate = float(trades_result[i]['rate'])
                 return rate
Beispiel #6
0
 def get_instant_rate_ask(self, curr_pair, money):
     bids_result = Poloniex.get_instance().returnOrderBook(
         curr_pair)["bids"]
     if bids_result is None:
         print("API query error unable to get instant ask")
         return self.get_instant_rate_ask(curr_pair, money)
     else:
         i = 0
         for a in bids_result:
             rate = float(a[0])
             amount = float(a[1])
             money_to_get = rate * amount
             money -= money_to_get
             if money < 0:
                 return rate
Beispiel #7
0
 def get_instant_rate_bid(self, curr_pair, money):
     asks_result = Poloniex.get_instance().returnOrderBook(
         curr_pair)["asks"]
     if asks_result is None:
         print("API query error unable to get instant bid")
         return self.get_instant_rate_bid(curr_pair, money)
     else:
         i = 0
         for a in asks_result:
             rate = float(a[0])
             amount = float(a[1])
             money_to_spend = rate * amount
             money -= money_to_spend
             if money < 0:
                 return rate
Beispiel #8
0
	def polo_update(self):
		polo = Poloniex.get_instance()
		polo_data = polo.api_query("returnOpenOrders", {'currencyPair': self.curr_pair})
		if polo_data is None:
			print("API error unable to polo_update order")
		else:
			found = False
			for d in polo_data:
				if d['orderNumber'] == self.id:
					found = True
					self.amount = float(d['amount'])
					self.update()
			
			if not found:
				self.drop()
				self.table_name = Order.ORDER_FILLED
				self.date_filled = time()
				self.save()
Beispiel #9
0
	def __init__(self):
		self.sym_infos = {}
		self.polo = Poloniex.get_instance()
		for s in self.SYMS:
			si = SymInfo(s)
			self.sym_infos[s] = si
Beispiel #10
0
 def __init__(self, order_updater, scheduler):
     self.polo = Poloniex.get_instance()
     self.order_updater = order_updater
     self.scheduler = scheduler