Introducción
Comprender y utilizar una API para el comercio de criptomonedas puede abrir un mundo de posibilidades a la hora de entrar y salir de posiciones. Con algunos conocimientos de codificación simples, puede conectarse al backend de un intercambio/exchange para automatizar sus estrategias de trading. Al desviar el sitio web, puede tomar un camino mucho más rápido al motor coincidente para aplicaciones de alto rendimiento.
El propósito de esta serie es presentarle la API REST de Binance y enseñarle cómo interactuar con ella. Al final, debe estar seguro de su capacidad para consultar información sobre los mercados y su posición y para colocar una gama de diferentes tipos de órdenes.
En este artículo, usaremos Postman para comunicarnos con el cripto exchange Binance. No se preocupe, no pondremos en riesgo fondos reales.
Requisitos previos
Claves Testnet
Vamos a usar la red de pruebas para nuestros propósitos. Esto nos dará algunos fondos sin valor real para jugar. Funcionan exactamente de la misma manera que las monedas y fichas reales, por lo que una vez que se sienta cómodo con la API, puede empezar a usarlo para el comercio de fondos reales.
- Comience dirigiéndose a la red de pruebas de spot.
- Para obtener acceso, deberá iniciar sesión con una cuenta de GitHub. Crea uno si aún no lo has hecho.
- Haga clic Autenticar e inicie sesión a través de GitHub.
- En Claves de API, se le informará de que no tiene claves registradas. Haga clic en Generar clave de HMAC_SHA256 para crear un par.
- En la siguiente pantalla, asigne una etiqueta a las teclas. Llámalos como quieras y golpea Generar.
- Se le presentan dos claves: el Clave API y el Clave secreta. Es importante que grabes esto ahora. Tendrá que iniciar el proceso de creación de claves de nuevo si no lo hace. Recomendamos almacenarlos en la aplicación de notas de su equipo para facilitar la copia y pegado más tarde.
Nota: etiquetado de sus llaves es algo que vale la pena hacer cuando se utiliza el exchange real con el fin de gestionar diferentes claves. Su cuenta puede tener varias claves con permisos diferentes. Si está ejecutando varios bots de trading, el uso de claves independientes con etiquetas descriptivas facilita la administración de permisos o la eliminación de claves individuales sin cambiar todos los bots.
Descarga e instalación de Postman
Postman es una plataforma de colaboración de API. Es un punto de partida perfecto para nosotros: tendremos acceso a colecciones de solicitudes Binance que probaremos sin necesidad de escribir una sola línea de código.
El programa está disponible para Mac, Windows y Linux. Dirígete a la página Descargas y descarga el archivo .zip.
Una vez que se haya completado, localícelo en el explorador de archivos e instálelo. Encienda la aplicación, y estamos listos para ir! Tenga en cuenta que puede crear una cuenta para iniciar sesión, pero no es necesario. Si desea omitir ese paso, simplemente seleccione la opción para hacerlo en la parte inferior de la ventana.
Creación del entorno
En esta etapa, debe tener una interfaz similar a la siguiente.
Queremos crear primero nuestro entorno. Esta es sólo una manera para que agreguemos variables al conjunto de solicitudes con las que vamos a trabajar. Para ello, primero tendremos que obtener información del repositorio GitHub de Binance. Dirígete aquí y descarga el archivo .zip.
La descarga no debería tardar mucho. Encuéntralo en tu explorador de archivos y descomprímalo. Entonces, podemos volver a Postman.
Haga clic en el icono de engranaje en la esquina superior derecha (ilustrado arriba). Usted será recibido con un Administrar entornos Popup.
- Seleccione Importación, y vaya a la carpeta que acaba de extraer (binance-postman-api).
- Introdúzcalo y, a continuación, introduzca la carpeta environments.
- Ahora verá dos archivos (uno para mainnet y otro para testnet). El que buscamos es binance_com_spot_testnet_api.postman_environment.json. Asegúrate de tener la correcta porque nuestras llaves no funcionarán con la otra.
Ya casi llegamos. Haga clic en Binance Spot Testnet API, y verá las variables a continuación. Edite los dos parámetros descritos en rojo pegando las teclas que guardó anteriormente. Haga clic en Actualizar y salga de la ventana emergente.
En esta pantalla, deje los campos de marca de tiempo y firma en blanco. Estos dos valores se crearán automáticamente a cada solicitud.
Hay una última cosa que hacer. A la derecha del icono de engranaje en el que hicimos clic para configurar el entorno anteriormente, verá un menú desplegable que actualmente dice Sin medio ambiente. Haga clic en él y seleccione Binance Spot Testnet API.
Importación de la colección
Ahora vamos a importar la colección – esta es una amplia variedad de solicitudes que hacen el trabajo pesado para nosotros cuando estamos haciendo llamadas. Para cargarlo en nuestro entorno:
- Haga clic Importación en la esquina superior izquierda.
- En la ventana emergente, bajo el Archivo pestaña, seleccione Subir archivos.
- Estamos buscando el binance-postman-api carpeta de nuevo. Localizarlo y abrirlo.
- Esta vez, escriba colecciones en el subdirectorio.
- Hay dos archivos aquí otra vez. Una es para trabajar con la API de futuros. Pero estamos trabajando con el punto uno, por lo que tendrá que seleccionar el binance_spot_api_v1.postman_collection.json Archivo.
- Ahora debería ver una pantalla de confirmación que identifica la importación como estar en el formato de colección de Postman. Seleccione Importar.
En la pestaña Colecciones a la izquierda de la ventana, ahora notará que tenemos una carpeta con más de 100 solicitudes. ¡Felicitaciones! Estamos listos para irnos. En la siguiente sección, echaremos un vistazo a los tipos de solicitudes que podemos hacer.
Hacer solicitudes
Si expande las carpetas en la pestaña Colecciones, verá que tenemos un montón de solicitudes diferentes que podemos hacer. A partir de la codificación de color, puede observar que hay tres tipos de métodos que podemos utilizar:
- Obtener: El Obtener método se utiliza para recuperar cosas de un servidor. Usaremos esto para encontrar información sobre el saldo de su cuenta, precios de activos, etc.
- Exponer: Generalmente usaremos el Exponer método para crear información en un servidor. Esto es necesario para cosas como hacer pedidos, solicitar retiros, etc.
- Eliminar: El Eliminar método es una solicitud para que el servidor elimine información. Será útil para cancelar pedidos.
Encuentre la lista de símbolos y las reglas de trading
¡Hora de nuestra primera solicitud! Vamos a obtener los símbolos que podemos operar en el exchange y las reglas de comercio:
Obtener /exchangeInfo
Este no toma ningún parámetro adicional: podría copiarlo y pegarlo en la barra de direcciones y obtendrá una respuesta. Pero para las solicitudes en las que incluimos varios parámetros, Postman hace que sea fácil verlos y modificarlos.
Para cargar esta solicitud, seleccione Mercado > Información del exchange. Aparecerá una pestaña como la siguiente:
No necesitamos hacer nada más aquí, así que adelante y golpea Enviar. A continuación, obtendrá una respuesta:
En la sección resaltada más alta, verá información importante:
- el estado de la respuesta (200 significa que hemos tenido éxito, 400-499 significa que nos hemos encontrar con un problema)
- el tiempo necesario para recibir la respuesta (menos de un segundo)
- el tamaño de la respuesta (22 KB).
En el segundo cuadro está la mayor parte de la respuesta. Ha sido bastante subrayado para que sea un poco más fácil para los ojos. Esto contiene información sobre el enchange en sí, así como los pares que puede operar y sus cantidades mínimas / máximas.
Parece mucha información, pero el formato hace que sea muy fácil trabajar con mediante programación. Al escribir scripts para interactuar con él, podrá elegir fácilmente propiedades específicas de elementos específicos de la respuesta.
Compruebe los saldos de la cuenta
Vamos a comprobar qué activos tenemos y cuánto de cada uno:
GET /account
Este se puede encontrar bajo Trading > Información de la cuenta. Haga clic en él, y verá un diseño similar al anterior. Sin embargo, también notará que tenemos dos nuevas variables: Timestamp Y Firma. La firma es una medida de seguridad. Debido a que ahora estamos pidiendo información confidencial, demostrará que somos el titular de la cuenta.
La marca de tiempo indica al servidor cuándo se envió la solicitud. Dado que las redes pueden no ser fiables o enfrentar el tiempo de inactividad, el servidor puede recibir nuestra solicitud mucho más tarde de lo previsto. Si ha pasado demasiado tiempo, rechazará la solicitud. Puede especificar cuánto tiempo desea esperar con el recvWindow parámetro, que tiene un valor predeterminado de 5000 milisegundos.
Postman maneja la generación de estos dos campos por nosotros. Haga clic en Enviar y obtendrá una respuesta. En los saldos, debería ver seis activos: BNB, BTC, BUSD, ETH, LTC y TRX. El saldo se dividirá a través de Gratis Y Bloqueado. Aún no hemos encerrado a nadie, así que todos sus activos deberían estar libres.
¡Felicitaciones por su nueva riqueza (inexistente)!
Cómo obtener el precio actual de un símbolo
Podemos conseguir el precio actual de un activo de diferentes maneras. Tal vez el más simple es con la siguiente solicitud:
GET /api/v3/ticker/24hr
Como puede adivinar, esto nos dará información sobre los precios de los activos de las últimas veinticuatro horas. Encuéntralo en Mercado > Estadísticas de cambio de precios de Ticker 24hr. El par predeterminado con el que recibimos como la variable de símbolo es BTCUSDT.
Puede enviar esto de inmediato para ver un desglose de la información de precios. También puede cambiar el símbolo (para BNBBUSD, LTCUSDT, etc.), o puede desmarcar la variable para devolver datos para 40 pares.
También tenemos una llamada más simple (Mercado > Símbolo Precio Ticker) que devuelve el precio actual al que opera un activo:
GET /api/v3/price
Al igual que con la anterior, puede cambiar la variable de símbolo o eliminarla por completo y obtener el precio más reciente para todos los símbolos.
Compruebe la profundidad actual del libro de pedidos
La profundidad del libro de pedidos (también conocida como profundidad de mercado, o DOM) puede decirnos mucho sobre el mercado. Vamos a hacer una llamada que devolverá alguna información útil:
GET api/v3/depth
Cuando enviamos esto con los valores predeterminados (Market > Order Book), se nos devuelve una respuesta que nos informa sobre las ofertas y solicita BTCUSDT. El servidor testnet no producirá tantos datos como el real, por lo que a continuación se muestra una captura de pantalla de lo que se esperaría ver en un entorno real:
En la sección resaltada anterior, podemos ver la primera puja. Puesto que estamos viendo el libro para BTCUSDT, el número superior es el precio que alguien está dispuesto a pagar por su BTC. A continuación se muestra la cantidad que están dispuestos a comprar. Lo que esto dice, por lo tanto, es que esta orden está pidiendo 0.999 BTC a una tasa de 9704.65 USDT por BTC. Si continuamos bajando, veríamos la disminución del precio de la oferta, lo que representa a los compradores que pagarían menos.
La oferta superior será naturalmente la más atractiva si usted está buscando bang para su dinero. Dicho esto, si usted está tratando de vender en el mercado, por ejemplo, 3 BTC, sólo será capaz de vender 0.999 BTC al mejor precio. Tendrás que tomar las ofertas subsiguientes (más baratas) hasta que se llene la totalidad de tu pedido.
Sigue desplazándose y verás las preguntas. Son funcionalmente similares a las ofertas, excepto que representan órdenes de Vender BTC para USDT.
Realizar un pedido de prueba
Ahora vamos a publicar una orden de prueba.
POST api/v3/order/test
A pesar de que solo estamos usando fondos testnet, esta solicitud no hará un pedido. Puede resultar útil para probar pedidos antes de enviarlos. Encuéntralo en Trading > Prueba Nueva Orden (TRADE).
Puede ver que tenemos muchos más parámetros involucrados. Vamos a caminar a través de los comprobados:
- Símbolo – nos hemos encontrado con este anteriormente. Este es el par que desea operar.
- Lado – aquí, usted estipulará si desea COMPRAR o VENDER. Con el par BTCUSDT, BUY indica que desea comprar BTC para USDT, mientras que la venta venderá BTC por USDT.
- Tipo – el tipo de pedido que desea enviar. Posibles valores (detallados aquí):
- Límite
- Mercado
- STOP_LOSS
- STOP_LOSS_LIMIT
- TAKE_PROFIT
- TAKE_PROFIT_LIMIT
- LIMIT_MAKER
- timeInForce– este parámetro expresa cómo desea que se ejecute la orden:
- Gtc (bueno hasta que se cancele) – tal vez la configuración más popular, GTC se asegurará de que su pedido es válido hasta que se llena, o hasta que lo cancele.
- Fok FOK indica al exchange que ejecute una orden a la vez. Si el exchange no puede hacerlo, el pedido se cancela inmediatamente.
- Ioc (inmediato o cancelado): la totalidad o parte de la orden debe ejecutarse inmediatamente o se cancela. A diferencia de FOK, los pedidos no se cancelan si se pueden rellenar parcialmente.
- Cantidad – simplemente, la cantidad del activo que desea comprar o vender.
- Precio – el precio al que desea vender. Para el par BTCUSDT, esto se expresa en USDT.
- newClientOrderId – un identificador de la orden. Este no es un campo obligatorio, pero puede establecerlo en un identificador que facilite la consulta más adelante. De lo contrario, es generado aleatoriamente por el exchange.
¡Bien! Vamos a crear un orden de prueba ahora. Vamos a ir con los valores generados automáticamente: una orden límite para vender 0.1 BTC para USDT en $9000. golpe Enviar. Si esto tuvo éxito, entonces simplemente obtendremos como respuesta.
Haga un pedido real
Es hora de hacer un pedido falso real.
POST /api/v3/order
Navegue hasta Trading > Nuevo pedido. Ya está familiarizado con las órdenes de prueba, por lo que los parámetros aquí no serán una sorpresa. Dejemos todos los valores como están, pero como somos permabulls, cambiaremos el precio al que vendemos a $40,000. Ajuste el valor del precio para reflejar esto. Luego, golpea Enviar.
Su respuesta devuelve un montón de detalles sobre el pedido si se realiza correctamente.
Comprobar el estado de una orden abierta
Recibimos confirmación de que el pedido se realizó en la sección anterior, pero ¿qué pasa si queremos volver a comprobarlo más tarde? Tenemos algunas peticiones a nuestra disposición.
GET /api/v3/openOrders
Encontrarás esto en Trading > Ordenes Abiertas Actuales (USER_DATA). BTCUSDT está seleccionado de forma predeterminada. Si golpeas Enviar, obtendrás todo tu abierto BTCUSDT órdenes (hasta ahora, sólo debe ver la que establecimos anteriormente). Puede optar por no especificar un símbolo, que devolverá todas sus órdenes abiertas en su lugar.
GET /api/v3/allOrders
Trading > Todas las órdenes (USER_DATA) le da una visión general de todas las órdenes, no sólo las abiertas. Aquí, debe proporcionar un símbolo. Orderid, Starttime, Endtime, y limit son parámetros opcionales que pueden ayudarle a refinar la búsqueda. Los dejaremos aquí, así que desactívelos. golpe Enviar, y verá la misma respuesta que antes. Si tuvieras pedidos cerrados o cancelados, también los verías aquí.
Por último, podemos consultar pedidos específicos con:
GET /api/v3/order
Conseguir esto bajo Trading > Orden de consulta (USER_DATA). Deberá proporcionar el orderId o el origClientOrderId (la etiqueta opcional «newClientOrderId» que puede agregar a los pedidos). Desmarque Orderid. Para origClientOrderId, vamos a proporcionar la etiqueta predeterminada de antes – «my_order_id_1». Rellene el campo y golpee Enviar para obtener la respuesta.
Cancelar un pedido
Después de algún tiempo, podríamos decidir que el objetivo de $40,000 es un poco demasiado optimista, así que queremos cancelarlo. En ese caso, usaríamos:
DELETE /api/v3/order
Bajo Trading > Cancelar orden es una solicitud que nos permitirá destacar pedidos de cancelación. Desmarque Orderid Y newClientOrderId y pasar «my_order_id_1» como el valor para origClientOrderId.
Cuando envíe esta solicitud, el pedido será devuelto. Si se desplaza hacia abajo hasta «Estado,» verá que de hecho está cancelado. Para confirmar esto, utilice el Obtener /api/v3/openOrders punto final de nuevo (que le da una lista vacía) o Obtener /api/v3/order con el origClientOrderId.
Realice un pedido que se llene al instante
Nuestra orden anterior no se llenó porque era una orden de límite que sólo se desencadenaría cuando el precio BTC golpeó $40,000. Con una orden de mercado, básicamente estamos diciendo «comprar / vender a cualquier precio al que el activo está operando actualmente». Esto se llenará al instante.
Para eso, volvamos a Trading > Nuevo pedido. Vamos a demostrar el tipo de respuesta (newOrderRespType), que es un parámetro que podemos modificar dependiendo de la respuesta que queramos obtener del servidor. Hay tres opciones aquí: Ack, ResultadoO Completo – puede ver ejemplos de cada respuesta aquí. Vamos a ir con Ack, lo que nos dará un simple acuse de recibo de que el pedido fue recibido.
A continuación, puede ver que estamos a punto de enviar una orden de mercado para vender BNB para BUSD al precio de mercado actual.
Tenga en cuenta que la respuesta nos proporciona una información mínima:
Puede verificar que el pedido se ha llenado con el /api/v3/allOrders Extremo.
Comprobación de sus operaciones
Por último, echemos un vistazo al punto final para comprobar sus operaciones:
GET /api/v3/myTrades
Esto se encuentra bajo Trading > Lista comercial de cuentas (USER_DATA). Le permite comprobar cada operación para un símbolo en particular. Si desea ver todas sus operaciones para el símbolo predeterminado (BTCUSDT), simplemente desmarque Starttime, Endtime Y fromId. La respuesta volverá a ser de hasta 500 operaciones – simplemente Límite si quieres ver más.
Depuración con Postman
En Postman, es posible revelar aún más la solicitud y respuesta HTTP sin procesar.
Este menú abrirá la consola postman, que imprime los detalles de cada solicitud.
Conclusion
El propósito de esta guía era presentarle suavemente a la API de Binance sin escribir una sola línea de código. Si usted ha seguido a lo largo, ahora debe tener una idea de cómo podemos solicitar y sinformación de ubmit.
En las próximas entregas de esta serie, presentaremos algunos conceptos básicos de codificación que nos permiten automatizar la compra y venta de criptomonedas y otros activos digitales.
Leave a Reply