Skip to content

Repository files navigation

binapi

Binance API implemented in C++ for both synchronous and asynchronous way.

Donate

BTC: 3BJKvx6LyKB2J5KgRBqst415KKmwQE5eQX

Motivation

This implementation has been developed as a consequence of the lack of suitable alternatives as part of my multiuser trading platform project.

REST API

WebSocket API

Implementation details

The project is written using C++14 and boost (at least version 1.70). boost.beast is used to interact with the network.

Synchronous example

#include"binapi/api.hpp"
#include<boost/asio/io_context.hpp>
#include<iostream>intmain() {
const std::string pk = "...";
const std::string sk = "...";
boost::asio::io_context ioctx;
binapi::rest::api api(
ioctx
,"api.binance.com"
,"443"
,pk
,sk
,10000// recvWindow
);
auto account = api.account_info();
if ( !account ) {
std::cerr << "account info error: " << account.errmsg << std::endl;
returnEXIT_FAILURE;
}
std::cout << "account info: " << account.v << std::endl << std::endl;
returnEXIT_SUCCESS;
}

Asynchronous example

#include"binapi/api.hpp"
#include<boost/asio/io_context.hpp>
#include<iostream>intmain() {
const std::string pk = "...";
const std::string sk = "...";
boost::asio::io_context ioctx;
binapi::rest::api api(
ioctx
,"api.binance.com"
,"443"
,pk
,sk
,10000// recvWindow
);
api.account_info([](constchar *fl, int ec, std::string errmsg, binapi::rest::account_info_t res) {
if ( ec ) {
std::cerr << "account info error: fl=" << fl << ", ec=" << ec << ", emsg=" << errmsg << std::endl;
returnfalse;
}
std::cout << "account info: " << res << std::endl;
returntrue;
});
ioctx.run();
returnEXIT_SUCCESS;
}

WebSocket example

#include<binapi/api.hpp>
#include<binapi/websocket.hpp>
#include<boost/asio/io_context.hpp>
#include<iostream>intmain() {
boost::asio::io_context ioctx;
binapi::ws::websockets ws{
ioctx
,"stream.binance.com"
,"9443"
};
ws.part_depth("BTCUSDT",
[](constchar *fl, int ec, std::string emsg, auto depths) {
if ( ec ) {
std::cerr << "subscribe depth error: fl=" << fl << ", ec=" << ec << ", emsg=" << emsg << std::endl;
returnfalse;
}
std::cout << "depths: " << depths << std::endl;
returntrue;
}
);
ws.trade("BTCUSDT",
[](constchar *fl, int ec, std::string emsg, auto trades) {
if ( ec ) {
std::cerr << "subscribe trades error: fl=" << fl << ", ec=" << ec << ", emsg=" << emsg << std::endl;
returnfalse;
}
std::cout << "trades: " << trades << std::endl;
returntrue;
}
);
ioctx.run();
returnEXIT_SUCCESS;
}

Tools (will write later...)

  • filters
  • report generators

About

Binance API C++ implementation

Topics

Resources

Stars

326 stars

Watchers

17 watching

Forks

Releases

Packages

Contributors

Languages