Как я могу получить все тикеры от Poloniex
Я использую функцию: polo.returnTicker()['BTC_ETH']
что я получил от этого пакета Python https://github.com/s4w3d0ff/python-poloniex чтобы получить текущий тикер от Poloniex. Функция возвращает объект json, который выглядит следующим образом:
{u'last': u'0.07120000', u'quoteVolume': u'3523.11980704', u'high24hr': u'0.07170000', u'isFrozen': u'0', u'highestBid': u'0.07120026', u'percentChange': u'-0.00154256', u'low24hr': u'0.07078026', u'lowestAsk': u'0.07120370', u'id': 148, u'baseVolume': u'251.02174618'}
Однако мне нужен массив со всеми тикерами из прошлого с интервалом в одну минуту, который я не знаю, как получить. Моя функция может возвращать только текущий тикер, а не прошлые тикеры, которые мне нужны. Кто-нибудь знает как это сделать?
1 ответ
Поскольку Poloniex не предоставляет историю тикеров, вам придется периодически запрашивать тикер, а затем сохранять результаты в файле, json или базе данных. Затем прочитайте ваш файл, локальный json или базу данных, чтобы получить массив прошлых тикеров.
Вы можете использовать что-то подобное (версия файла):
import requests
import time
import shutil
import os
import json
#this func is use to give you the ticker history
def do_job_with_ticker_history(ticker_history_directory="tickers_hist"):
sorted_ticker_history = sorted(os.listdir(ticker_history_directory))
ticker_array=[]
#iterate over all ticker file
for ticker_filename in sorted_ticker_history:
#get the filepath
ticker_path = ticker_history_directory+os.sep+ ticker_filename
#read the ticker
with open(ticker_path,'r') as f:
#add the ticker data to the array
ticker_array.append(json.loads(f.read()))
#############
#do your job here (first element is the older ticker, and last element is the last ticker)
print "\ndo the job with history (here we show the ",len(sorted_ticker_history),"last price)"
for ticker in ticker_array:
print ticker['BTC_ETH']['last']
#############
#this func is use to grab the ticker
def grab_ticker_periodically(period_in_s=5,ticker_history_directory="tickers_hist",max_history_size=3):
#delete directory
try:
shutil.rmtree(ticker_history_directory)
except:
pass
#create directory
try:
os.mkdir(ticker_history_directory)
except:
pass
ticker_path_name_list=[]
while 1:
print "\nWe get new ticker"
#get timestamp
timestamp = str(time.time())
#generate a filename using timestamp
ticker_path = ticker_history_directory+os.sep+timestamp+".json"
#write ticker data to filename
with open(ticker_path,"w") as f:
f.write(requests.get('https://poloniex.com/public?command=returnTicker').text)
#add new file to list
ticker_path_name_list.append( ticker_path )
#check we not reach the max size
if len(ticker_path_name_list)>max_history_size:
os.remove(ticker_path_name_list[0])
ticker_path_name_list.pop(0)
do_job_with_ticker_history()
#sleep until next grab
time.sleep(period_in_s)
grab_ticker_periodically()
Тогда вы можете:
- + Изменить
period_in_s=5
вperiod_in_s=60
захватывать тикер с интервалами в одну минуту max_history_size=x
чтобы соответствовать вашим требованиям к размеру истории.- Поместите ваш код в
#do your job here section
Которые дают вам:
We get new ticker
do the job with history (here we show the 1 last price)
0.03102500
We get new ticker
do the job with history (here we show the 2 last price)
0.03102500
0.03102500
We get new ticker
do the job with history (here we show the 3 last price)
0.03102500
0.03102500
0.03102500
We get new ticker
do the job with history (here we show the 3 last price)
0.03102500
0.03102500
0.03102500
[...]