Script en python para comparar la paridad de criptomonedas entre diferentes exchange. Descubre dónde comprar más baratas tus criptomonedas.
El objetivo de esta web es explicar cómo poder obtener la información del mercado cripto para poder utilizarla en tus decisiones de compra y venta. Para ello vamos a utilizar la api de Cryptowatch un servicio propiedad del exchange Kraken que proporciona datos de mercado de criptomonedas en tiempo real.
Esta información puede ser muy útil para que puedas saber si una criptomoneda está bajando o subiendo, que exchange tiene el intercambio de monedas más barato (o caro) o que criptomoneda esta obteniendo mejores resultados. Con estos datos podemos llegar a crear programas que interactúen con el mercado siguiendo pautas previamente definidas y obtener beneficios de ello.
Si no tenéis la formación adecuada paaraa ejecutar el script, podéis consultar un ejemplo de ejecución del siguiente script en la web
https://1938.com.es/consultar-par-cripto
¿De dónde viene la información?
La información la obtengo de Cryptowatch, un servicio propiedad del exchange
Kraken que proporciona datos de mercado de
criptomonedas en tiempo real. Es gratuito, hasta cierto punto (unas 5000 peticiones diarias), es decir, si no se
abusa de esta herramienta puedes obtener bastante información sin necesidad de contratar una suscripción.
Los datos en tiempo real de Cryptowatch se proporcionan directamente desde los
exchanges de criptomonedas a través de su API y cubre más de 700 mercados disponibles en más de 25 exchanges.
Para más información, consulta la
página de Cryptowatch.
Información Básica
¿Qué es una paridad?
Una paridad es una relación entre una criptomoneda y una moneda fiat. Por ejemplo, si quieres comprar una criptomoneda en BTC y quieres venderla en USD, la paridad es 1 BTC = $1 USD.
¿Qué es un exchange?
Un exchange es una plataforma que ofrece servicios de trading de criptomonedas. Por ejemplo, Kraken es un exchange de criptomonedas.
¿Qué es una criptomoneda?
Una criptomoneda es una moneda digital que se puede comprar y vender. Por ejemplo, BTC es una criptomoneda.
¿Qué es una moneda fiat?
Una moneda fiat es una moneda que se puede comprar y vender. Por ejemplo, USD es una moneda fiat.
¿Qué es una cripto-fiat?
Una cripto-fiat es una paridad de criptomoneda y moneda fiat. Por ejemplo, BTC/USD es una cripto-fiat.
Consulta de los intercambios activos por exchange.
El objetivo de este script es conocer que intercambios de criptos disponible dado un exchange. En este caso, hemos escogido los exchange
Liquid, Binance y Coinbase. El script es el siguiente:
import requests
base_url = "https://api.cryptowat.ch/markets"
response = requests.get(base_url)
print('Ejemplo de obtención de un mercado.')
print(response.json()['result'][0])
listado_exchange = response.json()['result']
print('Listados de exchange')
for i in listado_precios:
print('{} , {}'.format(i['exchange'],
str(i['price'])))
print('-----------------------')
print('-----------------------')
print('-----------------------')
print('Listado de pair disponibles coinbase-pro')
pairs_posible = []
for exchange in listado_exchange:
if exchange['pair'] and exchange['exchange'] == 'coinbase-pro' and exchange['pair'] not in pairs_posible:
pairs_posible.append(exchange['pair'])
print(pairs_posible)
print(len(pairs_posible))
print('Listado de pair disponibles binance')
pairs_posible = []
for exchange in listado_exchange:
if exchange['pair'] and exchange['exchange'] == 'binance' and exchange['pair'] not in pairs_posible:
pairs_posible.append(exchange['pair'])
print(pairs_posible)
print(len(pairs_posible))
print('Listado de pair disponibles Liquid')
pairs_posible = []
for exchange in listado_exchange:
if exchange['pair'] and exchange['exchange'] == 'liquid' and exchange['pair'] not in pairs_posible:
pairs_posible.append(exchange['pair'])
print(pairs_posible)
print(len(pairs_posible))
Lo primero es obtener la información de los mercados disponibles en la API de cryptowatch. Una vez obtenidos, almacenamos la información almacenada en la key result para recorrerla y posteriormente almacenar en una lista los pares de intercambio que pertenezca al exchange escogido.
Podemos transformar el código para obtener las siguientes funciones:
'''
Esta función devuelve una lista de diccionarios con la información de cada
exchange y par disponible en la API de CryptoWatch.
Parámetros:
None
Retorno:
listado_exchange: lista de exchange disponible en la API de CryptoWatch.
'''
def consulta_mercados():
response = requests.get(_base_url)
listado_exchange = response.json()['result']
return listado_exchange
Esta función función devuelve una lista de diccionarios con la información de cada exchange y par disponible en la API de CryptoWatch. A partir de esta lista conoceremos todos los pares disponibles y los exchanges que la ofertan.
'''
Esta función devuelve una lista con los pares de intercambio que posee un exchange.
Parámetros:
exchange_consultado: exchange del que se quiere conocer los pares de intercambio.
listado_exchange: lista de exchange disponible en la API de CryptoWatch.
Retorno:
listado_exchange: lista de exchange disponible en la API de CryptoWatch.
'''
def consulta_pares_intercambios( exchange_consultado, listado_exchange= None):
pairs_posible = []
if not listado_exchange:
listado_exchange = consulta_mercados()
for exchange in listado_exchange:
if exchange['pair'] and exchange['exchange'] == exchange_consultado and \
exchange['pair'] not in pairs_posible:
pairs_posible.append(exchange['pair'])
return pairs_posible
Con esta función podemos obtener la lista de pares de intercambio que pertenezca al exchange escogido. Dado el nombre del exchange, directamente nos devuelve una lista de pares que podremos utilizar cómo selector en un formulario.
El programa principal de ejemplo puede ser el siguiente:
from utils import *
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
listado_exchange = consulta_mercados()
print('Listado de pair disponibles coinbase-pro')
pairs_posible = consulta_pares_intercambios('coinbase-pro',listado_exchange)
print(pairs_posible)
print(len(pairs_posible))
print('Listado de pair disponibles binance')
pairs_posible = consulta_pares_intercambios('binance',
listado_exchange)
print(pairs_posible)
print(len(pairs_posible))
print('Listado de pair disponibles Liquid')
pairs_posible = consulta_pares_intercambios('liquid',
listado_exchange)
print(pairs_posible)
print(len(pairs_posible))
Tanto la función cómo el código lo puedes encontrar en el repositorio:
https://github.com/al118345/cripto_marketConsulta de los intercambios de activos más caros y más baratos.
El objetivo de este script es conocer que intercambios de criptos tienes un mejor rate que otros con el objetivo de comprar dónde este más barato y vender dónde este más caro.
El script es el siguiente:
import requests
base_url = "https://api.cryptowat.ch/markets"
intercambio_consultado = 'btceur'
response = requests.get(base_url)
print('Ejemplo de obtención de un mercado.')
print(response.json()['result'][0])
listado_exchange = response.json()['result']
listado_exchange_con_btceur = []
print('-----------------------')
print('-----------------------')
print('-----------------------')
print('Ahora buscamos todos los exchange con la opción de transformar BTC a EUR.')
for exchange in listado_exchange:
if exchange['pair'] == intercambio_consultado and exchange['active']== True:
print(exchange['exchange'], end = '; ')
listado_exchange_con_btceur.append(exchange)
print('Un total de {}'.format(str(len(listado_exchange_con_btceur))))
print('-----------------------')
print('-----------------------')
print('-----------------------')
print('Ahora buscamos el precio más alto y el más barato.')
print('Empezamos con un ejemplo')
response = requests.get('{}/{}/{}/price'.format(base_url,
listado_exchange_con_btceur[0][
'exchange'],
intercambio_consultado))
print('Por ejemplo, en el exchange de ' + listado_exchange_con_btceur[0][
'exchange'] +
' tenermos un precio de ' + str(response.json()['result']['price']))
listado_precios = []
for exchange in listado_exchange_con_btceur:
response = requests.get('{}/{}/{}/price'.format(base_url ,exchange['exchange'], intercambio_consultado))
aux = response.json()['result']
aux['exchange'] = exchange['exchange']
listado_precios.append(aux)
listado_precios = sorted(listado_precios, key=lambda d: d['price'])
print("El exchange que tiene el minimo valor es {} - con: {}".format(
listado_precios[0]['exchange'],
str(listado_precios[0]['price'])))
print("El exchange que tiene el minimo valor es {} con: {}".format(
listado_precios[-1]['exchange'],
str(listado_precios[-1]['price'])))
Lo primero es obtener la información de los mercados disponibles en la API de cryptowatch. Una vez obtenidos, almacenamos la información almacenada en la key result para recorrerla y posteriormente almacenar en una lista los pares de intercambio interesado. Una vez obtenido, simplemente obtenemos el valor de par de intercambio y lo almacenamos.
Posteriormente ordenamos la lista de pares de intercambio de mayor a menor y devolvemos la información.
Podemos transformar el código para obtener las siguientes funciones:
'''
Esta función devuelve una lista con los exchanges que poseen un par de intercambio y su valor.
parámetros:
intercambio: par de intercambio que se quiere conocer los exchanges y su valor.
listado_exchange: lista de exchange disponible en la API de CryptoWatch.
Retorno:
listado_precios: lista de precios/exchanges de un par de intercambio.
'''
def consulta_mejor_par_intercambio( intercambio, listado_exchange= None):
listado_exchange_con_btceur = []
if not listado_exchange:
listado_exchange = consulta_mercados()
for exchange in listado_exchange:
if exchange['pair'] == intercambio and exchange[
'active'] == True:
print(exchange['exchange'], end='; ')
listado_exchange_con_btceur.append(exchange)
listado_precios = []
for exchange in listado_exchange_con_btceur:
response = requests.get(
'{}/{}/{}/price'.format(_base_url, exchange['exchange'],
intercambio))
aux = response.json()['result']
aux['exchange'] = exchange['exchange']
listado_precios.append(aux)
return listado_precios
El programa principal de ejemplo puede ser el siguiente:
from utils import *
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
intercambio_consultado = 'btceur'
print(
'Ahora buscamos todos los exchange con la opción de transformar BTC a EUR.')
listado_precios = \
consulta_mejor_par_intercambio(intercambio_consultado)
listado_precios = sorted(listado_precios, key=lambda d: d['price'])
print("El exchange que tiene el minimo valor es {} - con: {}".format(
listado_precios[0]['exchange'],
str(listado_precios[0]['price'])))
print("El exchange que tiene el minimo valor es {} con: {}".format(
listado_precios[-1]['exchange'],
str(listado_precios[-1]['price'])))
print('-----------------------')
print('-----------------------')
print('-----------------------')
print('Listados de exchange')
for i in listado_precios:
print('{} , {}'.format(i['exchange'],
str(i['price'])))
Tanto la función cómo el código lo puedes encontrar en el repositorio:
https://github.com/al118345/cripto_market