import time
import json
import requests
import urllib, http.client
import hmac, hashlib
import mysql.connector
import sys
import os, errno
import calendar
import numpy
import talib
from datetime import datetime
#1518628155 Начало базы 2018-02-14 20:09:15
#print('Начало базы', datetime.fromtimestamp(1518628155))
#Установим дату и время начала тестирования
time_start = (2018, 3, 14, 0, 0, 0, 0, 0, 0) #Время UTC
#timestampstart = time.mktime(time_start) #Локальное время
timestampstart = calendar.timegm(time_start) # время UTC
x=timestampstart
print('Начало тестирования utc ', datetime.utcfromtimestamp(timestampstart))
#Установим дату и время завершения тестирования
time_end = (2018, 3, 15, 0, 0, 0, 0, 0, 0) #Время UTC
#time_end = (2018, 3, 13, 15, 0, 0, 0, 0, 0) #Время UTC
#time_end = (2018, 3, 20, 5, 0, 0, 0, 0, 0) #Время UTC
#timestampend = time.mktime(time_end) #Локальное время
timestampend = calendar.timegm(time_end) # время UTC
print('Заввершение тестирования utc ', datetime.utcfromtimestamp(timestampend))
y=timestampend
PERIOD = 240 #Минут
USE_LOG = True
DEBUG = False # True - выводить отладочную информацию, False - писать как можно меньше
numpy.seterr(all='ignore')
# Свой класс исключений
class ScriptError(Exception):
pass
class ScriptQuitCondition(Exception):
pass
def is_nan(x):
return (x is numpy.nan or x != x)
# Получаем данные, необходимые для построения индикаторов
#def get_ticks(pair):
def get_ticks(PER):
global y
global x
#_SQL = """select * from trade"""
#x=int(time.time())
#print('y = ',y)
#print(datetime.fromtimestamp(y))
pr = PER * 60
#x= y - pr*50 #Для построения MACD требуется примерно 50 периодов свечей
#_SQL = """select * from trade where date between 1519318790 and 1519318800; """
_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 and date <= %s
GROUP BY FLOOR(`date`/%s)
ORDER BY date"""
#db = mysql.connector.connect(host="localhost", user="u", passwd="secret", db="exmo")
db = mysql.connector.connect(host="10.8.1.1", user="u", passwd="secret", db="exmo")
cur = db.cursor()
cur.execute(_SQL,(pr,pr,x,y,pr))
sdata=[]
for item in cur.fetchall():
sdata.append({'date':int(item[0]),'open':float(item[1]),'high':float(item[2]),'low':float(item[3]),'close':float(item[4])})
cur.close()
db.close()
return sdata
# Выводит всякую информацию на экран, самое важное скидывает в Файл log.txt
def log(*args):
if USE_LOG:
l = open("./tester.txt", 'a', encoding='utf-8')
print(datetime.now(), *args, file=l)
#print(datetime.fromtimestamp(y+3*60*60), *args, file=l) #Локальное время
#print(datetime.utcfromtimestamp(y), *args, file=l) #UTC
l.close()
print(datetime.now(),' ', *args)
#print(datetime.fromtimestamp(y+3*60*60),' ', *args) #Локальное время
#print(datetime.utcfromtimestamp(y),' ', *args) #UTC
log('свечи PERIOD = ',PERIOD, ' мин')
log('начало запроса', datetime.utcfromtimestamp(x))
log('окончание запроса', datetime.utcfromtimestamp(y))
data=get_ticks(PERIOD)
date=numpy.asarray([int(item['date']) for item in data])
for offset, elem in enumerate(date):
#print(datetime.fromtimestamp(date[offset]), data[offset]) #Локальное время
print(datetime.utcfromtimestamp(date[offset]), data[offset]) #UTC
import json
import requests
import urllib, http.client
import hmac, hashlib
import mysql.connector
import sys
import os, errno
import calendar
import numpy
import talib
from datetime import datetime
#1518628155 Начало базы 2018-02-14 20:09:15
#print('Начало базы', datetime.fromtimestamp(1518628155))
#Установим дату и время начала тестирования
time_start = (2018, 3, 14, 0, 0, 0, 0, 0, 0) #Время UTC
#timestampstart = time.mktime(time_start) #Локальное время
timestampstart = calendar.timegm(time_start) # время UTC
x=timestampstart
print('Начало тестирования utc ', datetime.utcfromtimestamp(timestampstart))
#Установим дату и время завершения тестирования
time_end = (2018, 3, 15, 0, 0, 0, 0, 0, 0) #Время UTC
#time_end = (2018, 3, 13, 15, 0, 0, 0, 0, 0) #Время UTC
#time_end = (2018, 3, 20, 5, 0, 0, 0, 0, 0) #Время UTC
#timestampend = time.mktime(time_end) #Локальное время
timestampend = calendar.timegm(time_end) # время UTC
print('Заввершение тестирования utc ', datetime.utcfromtimestamp(timestampend))
y=timestampend
PERIOD = 240 #Минут
USE_LOG = True
DEBUG = False # True - выводить отладочную информацию, False - писать как можно меньше
numpy.seterr(all='ignore')
# Свой класс исключений
class ScriptError(Exception):
pass
class ScriptQuitCondition(Exception):
pass
def is_nan(x):
return (x is numpy.nan or x != x)
# Получаем данные, необходимые для построения индикаторов
#def get_ticks(pair):
def get_ticks(PER):
global y
global x
#_SQL = """select * from trade"""
#x=int(time.time())
#print('y = ',y)
#print(datetime.fromtimestamp(y))
pr = PER * 60
#x= y - pr*50 #Для построения MACD требуется примерно 50 периодов свечей
#_SQL = """select * from trade where date between 1519318790 and 1519318800; """
_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 and date <= %s
GROUP BY FLOOR(`date`/%s)
ORDER BY date"""
#db = mysql.connector.connect(host="localhost", user="u", passwd="secret", db="exmo")
db = mysql.connector.connect(host="10.8.1.1", user="u", passwd="secret", db="exmo")
cur = db.cursor()
cur.execute(_SQL,(pr,pr,x,y,pr))
sdata=[]
for item in cur.fetchall():
sdata.append({'date':int(item[0]),'open':float(item[1]),'high':float(item[2]),'low':float(item[3]),'close':float(item[4])})
cur.close()
db.close()
return sdata
# Выводит всякую информацию на экран, самое важное скидывает в Файл log.txt
def log(*args):
if USE_LOG:
l = open("./tester.txt", 'a', encoding='utf-8')
print(datetime.now(), *args, file=l)
#print(datetime.fromtimestamp(y+3*60*60), *args, file=l) #Локальное время
#print(datetime.utcfromtimestamp(y), *args, file=l) #UTC
l.close()
print(datetime.now(),' ', *args)
#print(datetime.fromtimestamp(y+3*60*60),' ', *args) #Локальное время
#print(datetime.utcfromtimestamp(y),' ', *args) #UTC
log('свечи PERIOD = ',PERIOD, ' мин')
log('начало запроса', datetime.utcfromtimestamp(x))
log('окончание запроса', datetime.utcfromtimestamp(y))
data=get_ticks(PERIOD)
date=numpy.asarray([int(item['date']) for item in data])
for offset, elem in enumerate(date):
#print(datetime.fromtimestamp(date[offset]), data[offset]) #Локальное время
print(datetime.utcfromtimestamp(date[offset]), data[offset]) #UTC
Комментариев нет:
Отправить комментарий