Saludos a todos, espero se encuentren muy bien. Desde hace unos años he estado incursionando el mundo de las criptomonedas, conociendo, estudiando y probando diferentes tecnológicas relacionadas a la Blockchain y específicamente lo que tiene que ver con las FinTech, no pasó mucho tiempo cuando me dispuse a buscar mayores niveles de automatización de los Exchange de Criptomonedas y es así como termine integrando el API del Exchange Binance con PHP.
Realmente lo que esta ocurriendo en el sector financiero mundial en este momento es impresionante, una verdadera revolución económica y social en todos los niveles. Iniciando por la tecnología Blockchain, Bitcoin, las plataformas de pago descentralizadas, los Smart Contract o contratos inteligentes son apenas aristas de un gran ecosistema de las criptomonedas a nivel mundial que hoy día ya nadie puede ignorar.
¿Qué es un Exchange?
Tabla de contenido
Los Exchange de criptomonedas, también conocidos como plataformas o mercados de intercambio, son plataformas digitales que permiten intercambiar monedas digitales por dinero fiat y/u otras criptomonedas o mercancías.
Son plataformas centralizadas que ofrecen mecanismos que faciliten la compra y venta de persona a persona mediante sistemas de anuncios, puntuación y depósito de garantía (como es el caso de portales como LocalBitcoins y LocalEthereum) o incluso acudir a un esquema de compra y venta de empresa a persona.
Binance es un Exchange global de criptomonedas que proporciona una plataforma para el comercio de más de 100 criptomonedas. Desde principios de 2018, Binance es considerado el mayor intercambio de criptomonedas en el mundo en términos de volumen de operaciones.
Automatización del API del Exchange Binance con PHP
En estos momentos estoy trabajando en un proyecto con un equipo de traders de criptomonedas, los cuales son unos genios en el área, han ideado un algoritmo para «alertar» sobre las compras y ventas en el mercado de las criptomonedas y vez de tener caídas abruptas de las inversiones, «planear» o «surfear la caída» de forma controlada o como dicen también «caer con estilo». Esto se logra a través del análisis de datos en tiempo real tomando ciertos indicadores directo del Exchange Binance y de esta manera he ido Integrando el API del Exchange Binance con PHP para ofrecer a los traders mejores herramientas para hacerlos mas productivos.
He usado una implementación genial del API de Binance para PHP , el cual es una versión bastante completa del Public Rest API de Binance . Como ustedes saben cada lenguaje de programación ha ido desarrollando sus propias implementaciones del API de Binance usando las bondades que ofrece cada lenguaje de programación, por ejemplo Python, Javascript, Java, Ruby entre otros.
La librería del API de Binance para PHP se auto define como:
Un proyecto diseñado para ayudarte a crear tus propios proyectos que interactúan con la API de Binance. Puede transmitir datos de gráficos de velas, profundidad del mercado o usar otras funciones avanzadas, como establecer paradas de pérdidas y órdenes de iceberg. Este proyecto busca tener una cobertura completa de API incluyendo WebSockets.
API de Binance PHP
Por lo general las implementaciones de los API que había hecho, buscaban consultar o validar alguna información en una plataforma de interés, por ejemplo autenticar usuarios con Google, publicar alguna información en Twitter o subir vídeos automáticamente a Youtube, para el caso de API de Binance hay que ser cuidadoso con la seguridad del Exchange, ya que estamos hablando de dinero, mucho o poco, pero al final del camino son los fondos de inversión de traders de criptomonedas que lo último que queremos es que estén en riesgo.
La seguridad de un Exchange hoy día está muy por encima de la seguridad de la banca en línea convencional.
Configurando el API del Exchange Binance con PHP
Lo primero que necesitamos para usar el API de Binance, es autorizarlo en el panel principal del Exchange de Binance, donde habilitaremos su uso creando nombre de la aplicación.
Luego de creada la aplicación podremos obtener el API PUBLIC KEY Y EL API PRIVATE KEY, las cuales son necesarias para poder conectarnos con el Exchange, estos datos son muy importantes y debes conservarlos con la mayor privacidad y protección, porque son las llaves de conexión de nuestra aplicación con Binance.
Creada el API de la aplicación que tendrá acceso a Binance, podemos colocar algunos parámetros adicionales de seguridad, por ejemplo:
- Si el API es de solo lectura.
- SI el API tiene permisos para hacer trading.
- Si el API permitirá hacer retiros de fondos de la cuenta (riesgoso).
- Si el API podrá ser acceso desde cualquier IP o si por el contrario solo permitiremos el acceso desde uno o varios servidores de confianza.
Usando el API del Exchange Binance con PHP
Crearemos un archivo PHP sencillo en el cual incluyo la librería PHP Binance API, de esta manera tengo disponible todos los métodos que soporta el API desde la v1 hasta la v3 de Binance, en el cual puedo realizar las siguientes accesiones:
- Test connectivity – GET /api/v1/ping
- Check server time – GET /api/v1/time
- Exchange information – GET /api/v1/exchangeInfo
- Order book – GET /api/v1/depth
- Recent trades list – GET /api/v1/trades
- Old trade lookup (MARKET_DATA) – GET /api/v1/historicalTrades
- Kline/Candlestick data – GET /api/v1/klines
- Current average price – GET /api/v3/avgPrice
- New order (TRADE) – POST /api/v3/order (HMAC SHA256)
- Query order (USER_DATA) – GET /api/v3/order (HMAC SHA256)
- Cancel order (TRADE) – DELETE /api/v3/order (HMAC SHA256)
- Current open orders (USER_DATA) – GET /api/v3/openOrders (HMAC SHA256)
- All orders (USER_DATA) – GET /api/v3/allOrders (HMAC SHA256)
- Account information (USER_DATA) -GET /api/v3/account (HMAC SHA256)
Hay muchos más métodos disponibles, prácticamente puedes manejar completamente el Exchange de Binance a través de su API, digamos que estos son los métodos que más he usado durante el desarrollo. A continuación les dejo un ejemplo de su implementación.
<?php include_once('binance-api/vendor/autoload.php'); // Constructor $api = new Binance\API($public_key,$secret_key); $exchangeInfo = $api->exchangeInfo(); print_r($exchangeInfo); ?>
El método exchangeInfo() retorna las reglas y monedas disponibles al día de hoy por el Exchange, esto es muy útil a la hora de poder configurar las operaciones que se pueden hacer en el Exchange, por ejemplo el monto mínimo de operación, la cantidad de decimales que se debe usar para cada moneda, entre otros.
Si deseas crear una orden de compra dentro de Exchange de Binance puedes usar el método buy()
<?php include_once('binance-api/vendor/autoload.php'); // Constructor $api = new Binance\API($public_key,$secret_key); $quantity = 1; $price = 0.0005; $exchangeInfo = $api->exchangeInfo(); $minNotional = $price * $quantity; //price * quantity if ( $quantity >= floatval($exchangeinfo["minQty"] ) ){ echo "<br> Validacion 1: Cumple minQty $quantity >= ".floatval($exchangeinfo["minQty"]); } else { echo "<br> Validacion 1: No Cumple minQty $quantity >= ".floatval($exchangeinfo["minQty"]); } if ( $quantity <= floatval($exchangeinfo["maxQty"] ) ){ echo "<br> Validacion 2: Cumple maxQty $quantity <= ".floatval($exchangeinfo["maxQty"]); } else { echo "<br> Validacion 2: No Cumple maxQty $quantity <= ".floatval($exchangeinfo["maxQty"]);} if ( $minNotional >= floatval($exchangeinfo["minNotional"] ) ){ echo "<br> Validacion 3: Cumple minNotional $minNotional >= ".floatval($exchangeinfo["minNotional"]); } else { echo "<br> Validacion 3: No Cumple minNotional $minNotional >= ".floatval($exchangeinfo["minNotional"]);} $order = $api->buy("BNBBTC", $quantity, $price); print_r($order); ?>
Puedes revisar el estatus de la orden con el método orderStatus()
<?php include_once('binance-api/vendor/autoload.php'); // Constructor $api = new Binance\API($public_key,$secret_key); $orderid = "7610385"; $orderstatus = $api->orderStatus("BNBBTC", $orderid); print_r($orderstatus); ?>
Si deseamos ver una lista de las ordenes históricas creadas usamos el método history()
<?php include_once('binance-api/vendor/autoload.php'); // Constructor $api = new Binance\API($public_key,$secret_key); $history = $api->history("BNBBTC"); print_r($history); ?>
Existen muchas ideas que pueden desarrollarse con este API, solo es cuestión que juegues un poco con el y podrás llevar la automatización de tus tareas en el Exchange de Binance de una forma más inteligente y segura.
No dudes en escribir si estás integrando el API del Exchange Binance con PHP.
ya he conseguido hacerlo funcionar.
sabes como hacer para manejar el exchange de binance de futuros?
gracias
Saludos estimado, no lo he probado, lo tengo como tarea año 2020. Apenas tenga información la comparto por esta vía
Consulta el metodo de Withdraw lo quiero automatizar osea enviar de mi wallet a otras wallet dependiendo lo que el usuario ingrese en un input es un sistema de transacciones me podria ayudar en la parte de integración estoy algo perdida
Muy bueno el articulo. Esta bien claro el tema de la API de binance y con los ejemplo en php queda mas que clar. Si añadiera otros ejemplo seria mucho mejor. Gracias.
Seguro Orlando he estado haciendo pruebas incluso con otros exchange y lenguajes de programación. Apenas tenga avances los comparto por aquí. Date un paseo por aquí en unas semanitas y lo verás. Gracias por comentar.
Juan saludos hermano de dónde sale esa ruta?… Estoy tratndo de implementarlo sobre un código que ya tengo y nada
include_once(‘binance-api/vendor/autoload.php’);
Hay varias maneras Sr. Jaime, una puede ser que ejecute el comando composer install o descargue el paquete completo de binance y lo incluya dentro de su proyecto. Y ahi podra acceder a esas librerías directamente.
Excelente, esta librería resolvió todos mis problemas. Gracias.
A la orden estimado, si quieres seguir recibiendo información puedes suscribirte a la página web o unirte al grupo de Telegram a través de https://t.me/joinchat/J1BY3RfN4zjPNq5PYa4AOA
Apenas estoy empezando con la librería y hay una duda que me carcome y no veo el momento en el que llegaré a ese punto para averiguar…
¿Se pueden obtener los datos de cualquier gráfica (digamos Medias Móviles) y poder establer una orden según los datos de esa gráfica?
Saludos Carlos,
El Api ofrece una gran variedad de opciones, no las probe todos los gráficos, es cuestión de revisar la libreria.
autoload.php no se encuentra en los archivos de tu repositorio
Una pregunta, puedo usar la api de binance en mi tienda virtual para el pago de un producto? Es que soy nuevo en esta herramienta
Puedes usar tu address de Binance para recibir pagos en tu web, si quiere hacer una pasarela de pagos en criptomonedas habría que buscar alguna integración disponible o hacerla a la medida para ti
Saludos. Tu librería está «descontinuada». Es decir, la librería PHP para Binance ya no le darás más soporte?
Saludos Jaime, no he tenido chance de actualizar las librerias.
Súper interesante artículo! Me gustaría poder hablar contigo ya que tengo una estrategia de day trading conservadora pero muy efectiva y estoy convencido de que se podría automatizar ( formato avisador) con alertas configurando los indicadores como parámetros.
Saludos, puedes ubicarme por Telegram. Quedo atento.
¿Alguna forma de enviar una orden de compra sin instalar composer y otras librerias que con el tiempo se desactualizan y no son compatibles con nuestros otros proyectos?
Puedes conectarte directo a través de los endpoint de binance, algunos POST o GET y no requieres usar librerías externas. Esta forma la he usado es confiable pero mas engorrosa
Saludos Juan, quiero configurar un sitio web para recibir pagos con binance. es una página de apuestas. Quería saber si con la API puedo obtener la data del usuario al hacerse efectiva una transacción, para actualizar los datos del balance en la cuenta de los usuarios?; es decir, cuando el usuario escanee el código Qr, y me haga un pago, obtener esa info de ese usuario, para luego ajustar su balance en el sitio web de apuestas?
Saludos Enrique, si esa implementacion la he realizado usando las API propias de Binance a través de ccxt en Python. Lo que podrias hacer es verificar si los pagos se abonaron en tu cuenta centralizadora de Binance y asi actualizar el balance del cliente.