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.
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.
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.
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)