web-dev-qa-db-fra.com

Prix ​​historiques d'ethereum - Coinbase API

Utilisation de l'API python coinbase - Les fonctions - get_buy_price, get_sell_price, get_spot_price, get_historical_data, etc. Existe-t-il un moyen d'interroger les prix Ethereum? 

Il semblerait que currency_pair = 'BTC-USD' pourrait être remplacé par currency_pair = 'ETH-USD' bien que cela n’ait aucun effet.

Je m'attendrais à ce que l'API ne supporte tout simplement pas cela, sauf que la documentation officielle indique explicitement: 

Obtenez le prix total pour acheter un bitcoin ou de l'éther 

Je peux contourner ce problème quelque peu en utilisant le drapeau quote='true' dans la demande d'achat/de vente. Cependant, cela ne fonctionne que dans les années à venir, je voudrais des données historiques.

9
sam

code source sera toujours votre ami. 

def get_spot_price(self, **params):
    """https://developers.coinbase.com/api/v2#get-spot-price"""
    if 'currency_pair' in params:
        currency_pair = params['currency_pair']
    else:
        currency_pair = 'BTC-USD'
    response = self._get('v2', 'prices', currency_pair, 'spot', data=params)
    return self._make_api_object(response, APIObject)

def get_historic_prices(self, **params):
    """https://developers.coinbase.com/api/v2#get-historic-prices"""
    response = self._get('v2', 'prices', 'historic', data=params)
    return self._make_api_object(response, APIObject)

Nous pouvons voir que les deux fonctions appellent le même point de terminaison API. Nous constatons que get_spot_price prend en charge l'argument currency_pair et le transmet dans le cadre de l'appel api. get_historic_prices ne le fait pas.

Je me demande ce qui arriverait si cela arrivait. Essayons:

from coinbase.wallet.client import Client
from coinbase.wallet.model import APIObject

client = Client(api_key, api_secret)
client._make_api_object(client._get('v2', 'prices', 'ETH-USD', 'historic'), APIObject)


<APIObject @ 0x10dd04938> {
    "currency": "USD",
    "prices": [
        {
          "price": "52.60",
          "time": "2017-03-30T17:03:48Z"
        },
        {
          "price": "52.60",
          "time": "2017-03-30T17:03:38Z"
        },
        {
          "price": "52.54",
          "time": "2017-03-30T17:03:28Z"
        },
        {
          "price": "52.54",
          "time": "2017-03-30T17:03:18Z"
        },
        {
          "price": "52.54",
          "time": "2017-03-30T17:03:08Z"
        },
        {
          "price": "52.53",
          "time": "2017-03-30T17:02:58Z"
        },
        {
          "price": "52.53",
          "time": "2017-03-30T17:02:48Z"
        },
        {
          "price": "52.53",
          "time": "2017-03-30T17:02:38Z"
        },
        {
          "price": "52.53",
          "time": "2017-03-30T17:02:28Z"
        },
        .....

Succès!

Je vais envoyer un PR leur chemin. mais pour l'instant, vous pouvez utiliser mon extrait de code.


PR soumis

14

J'ai essayé cela et le problème était que l'utilisation d'un paramètre "currency_pair" avec le paramètre "historique" produirait un historique avec une granularité d'une seconde pour les derniers jours uniquement.

J'ai résolu ce problème en utilisant plutôt l'API client GDAX, ainsi que le client GDAX Python :

Installez le client GDAX Python:

pip install gdax

Ensuite, vous pouvez utiliser la partie API publique même sans avoir de compte GDAX:

import gdax

client = gdax.PublicClient()
client.get_product_historic_rates('ETH-USD', granularity=60*60*24)

Pour obtenir une liste des produits disponibles (paires crypto-monnaie/FIAT), utilisez

client.get_products()

et recherchez les entrées id.

4
Frank Blabu

Quelque chose a fonctionné pour moi avec un problème similaire en appelant les taux de change . Essayez de changer les paramètres dans 

coinbase\wallet\client.py

de 

response = self._get ('v2', 'prix', 'spot', data = params)

à

response = self._get ('v2', 'prix', 'spot', params = params)

0
penderi