def get_ticks(pair, PER):
print('PER =', PER)
#_SQL = """select * from trade"""
x=int(time.time())
pr = PER * 60
x= x - pr*100
_SQL = """SELECT
FLOOR(MIN(`date`)/%s)*%s AS date,
SUBSTRING_INDEX(MIN(CONCAT(`date`, '_', id, '_', price)), '_', -1) AS `open`,
MAX(price) AS high,
MIN(price) AS low,
SUBSTRING_INDEX(MAX(CONCAT(`date`, '_', id, '_', price)), '_', -1) AS `close`
FROM trade
WHERE date >= %s
GROUP BY FLOOR(`date`/%s)
ORDER BY date"""
db = mysql.connector.connect(host="localhost", user="u", passwd="secret", db="exmo")
cur = db.cursor()
cur.execute(_SQL,(pr,pr,x,pr))
chart_data = {} # сформируем словарь с ценой закрытия по PERIOD минут
for item in cur.fetchall():
d = item[0] # Округляем время сделки до PERIOD минут
if not d in chart_data:
chart_data[d] = {'open':0, 'close':0, 'high':0, 'low':0}
chart_data[d]['close'] = float(item[4])
chart_data[d]['open'] = float(item[1])
chart_data[d]['high'] = float(item[2])
chart_data[d]['low'] = float(item[3])
cur.close()
db.close()
return chart_data
------------------------------------------------------------------------------------------------------------------------
Поясним как работает:
SUBSTRING_INDEX(MAX(CONCAT(`date`, '_', id, '_', price)), '_', -1) AS `close`
Мы замешиваем date, id, price:
1519478976_57723762_1090.00000000
Из записей с одинаковым временем берем с большим id ( функция MAX())
Далее выделяем цену функцией SUBSTRING_INDEX() - 1090.00000000
print('PER =', PER)
#_SQL = """select * from trade"""
x=int(time.time())
pr = PER * 60
x= x - pr*100
_SQL = """SELECT
FLOOR(MIN(`date`)/%s)*%s AS date,
SUBSTRING_INDEX(MIN(CONCAT(`date`, '_', id, '_', price)), '_', -1) AS `open`,
MAX(price) AS high,
MIN(price) AS low,
SUBSTRING_INDEX(MAX(CONCAT(`date`, '_', id, '_', price)), '_', -1) AS `close`
FROM trade
WHERE date >= %s
GROUP BY FLOOR(`date`/%s)
ORDER BY date"""
db = mysql.connector.connect(host="localhost", user="u", passwd="secret", db="exmo")
cur = db.cursor()
cur.execute(_SQL,(pr,pr,x,pr))
chart_data = {} # сформируем словарь с ценой закрытия по PERIOD минут
for item in cur.fetchall():
d = item[0] # Округляем время сделки до PERIOD минут
if not d in chart_data:
chart_data[d] = {'open':0, 'close':0, 'high':0, 'low':0}
chart_data[d]['close'] = float(item[4])
chart_data[d]['open'] = float(item[1])
chart_data[d]['high'] = float(item[2])
chart_data[d]['low'] = float(item[3])
cur.close()
db.close()
return chart_data
------------------------------------------------------------------------------------------------------------------------
Поясним как работает:
SUBSTRING_INDEX(MAX(CONCAT(`date`, '_', id, '_', price)), '_', -1) AS `close`
Мы замешиваем date, id, price:
1519478976_57723762_1090.00000000
Из записей с одинаковым временем берем с большим id ( функция MAX())
Далее выделяем цену функцией SUBSTRING_INDEX() - 1090.00000000