Ccxt: Comment obtenir OHLCV jusqu'à une date

Créé le 25 oct. 2017  ·  3Commentaires  ·  Source: ccxt/ccxt

Salut, j'essaie d'obtenir des données non seulement avec une date de début, mais aussi avec une date de fin. Je veux dire, quelque chose comme ça:

since=int(datetime.datetime.strptime('2017-1-15 00:00:00', '%Y-%m-%d %H:%M:%S').strftime("%s"))
until=int(datetime.datetime.strptime('2017-1-17 00:00:00', '%Y-%m-%d %H:%M:%S').strftime("%s"))
poloniex.fetch_ohlcv("ETH/BTC", '5m', since, until)

Je sais que fetch_ohlcv n'autorise pas le paramètre "jusqu'à", et je me demande s'il est prévu d'être implémenté, ou quelle serait la manière suggérée pour obtenir une plage. Je ne voudrais pas avoir une plage complète, à partir d'une date jusqu'à aujourd'hui, mais je voudrais obtenir des données pour des moments spécifiques dans le temps, comme dans mon exemple (un mois de l'année dernière, ou un jour dans le passé ou quelque chose comme ca)

J'ai trouvé le ticket # 215 mais après avoir vérifié l'exemple fourni, je ne suis pas sûr qu'il donne le bon résultat. Dans l'exemple, j'ai changé les données initiales avec ceci:

from_datetime = '2017-10-22 00:00:00'
from_timestamp = exchange.parse8601(from_datetime)

#now = exchange.milliseconds()
until = '2017-10-23 00:00:00'
now=exchange.parse8601(until)

Mais alors, lorsque j'imprime des "données", les résultats ne sont pas dans cette plage:

(1508887746600, 'Fetching candles starting from', '2017-10-22T00:00:00.000Z')
(1508887754233, 'Fetched', 142, 'candles')
('First candle epoch', 1508632200000, '2017-10-22T00:30:00.000Z')
('Last candle epoch', 1508886000000, '2017-10-24T23:00:00.000Z')
(1508887754233, 'Fetching candles starting from', '2017-10-22T02:22:00.000Z')
(1508887757689, 'Fetched', 138, 'candles')
('First candle epoch', 1508639400000, '2017-10-22T02:30:00.000Z')
('Last candle epoch', 1508886000000, '2017-10-24T23:00:00.000Z')
(1508887757689, 'Fetching candles starting from', '2017-10-22T04:40:00.000Z')
(1508887761784, 'Fetched', 133, 'candles')
('First candle epoch', 1508648400000, '2017-10-22T05:00:00.000Z')
('Last candle epoch', 1508886000000, '2017-10-24T23:00:00.000Z')

Je ne suis pas sûr de comprendre comment faire cela ...

question

Commentaire le plus utile

giphy-downsized-it

Tous les 3 commentaires

Salut!

Je sais que fetch_ohlcv n'autorise pas le paramètre "jusqu'à", et je me demande s'il est prévu d'être implémenté, ou quelle serait la manière suggérée pour obtenir une plage.

La méthode fetchOHLCV n'a pas d'argument "jusqu'à", mais elle a un argument "limite" à la place, c'est-à-dire le nombre de bougies que vous voulez récupérer. L'argument "limite" est plus courant que "jusqu'à", car la plupart des échanges acceptent un certain nombre de bougies et non la date de fin de la plage.


Exemple A

Donc, disons, vous récupérez 2 jours de 5m:

(1440 minutes in one day * 2 days) / 5 minutes = 576 candles

Par conséquent, nous avons besoin d'une limite de 576 bougies. À partir de ccxt v1.9.252, vous pouvez faire ceci:

# datetimes are UTC
import ccxt
poloniex = ccxt.poloniex()
ohlcv = poloniex.fetch_ohlcv("ETH/BTC", '5m', poloniex.parse8601('2017-01-15 00:00:00'), 576)
for entry in ohlcv:
    print('Example A', poloniex.iso8601(entry[0]), entry[1:5])

Cela vous donnera exactement la quantité de bougies du 2017-01-15 00:00:00 au 2017-01-17 00:00:00 inclusivement.


Exemple B

Une autre façon, qui fonctionne également avec les versions antérieures de ccxt, est de passer le paramètre supplémentaire end (Poloniex exige qu'il soit en secondes):

import ccxt
poloniex = ccxt.poloniex()
start = poloniex.parse8601('2017-01-15 00:00:00')
end = poloniex.parse8601('2017-01-17 00:00:00')  # inclusive
ohlcv = poloniex.fetch_ohlcv("ETH/BTC", '5m', start, None, { 'end': int(end/1000)})
for entry in ohlcv:
    print('Example B', poloniex.iso8601(entry[0]), entry[1:5])

Les deux exemples ci-dessus doivent produire le même résultat. N'oubliez pas de passer à la version la plus récente de la bibliothèque.

THX!

PS Faites-nous savoir si cela vous a aidé ou non, plz.

Si j'utilise le premier exemple, cela me donne les bonnes bougies, mais le deuxième exemple (celui des versions antérieures de ccxt) ne fonctionnait pas et il m'a donné des bougies depuis la date jusqu'à aujourd'hui.

Mais de toute façon, le premier exemple fonctionne parfaitement donc ça me va :)

Merci!!

(au fait, dors-tu un jour ?? La rapidité de réponse aux questions et de développement de ce projet est folle!)

giphy-downsized-it

Cette page vous a été utile?
0 / 5 - 0 notes