GithubHelp home page GithubHelp logo

sahmad98 / binacpp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from binance-exchange/binacpp

0.0 0.0 0.0 1.84 MB

Binance C++ library

License: MIT License

Shell 0.52% C++ 17.08% C 81.99% CMake 0.42%

binacpp's Introduction

Binance C++ API

Installation

git clone https://github.com/tensaix2j/binacpp    

Dependencies

jsoncpp-1.8.3
libcurl-7.56.0
libwebsockets-2.4.0

Depended shared libraries and their headers are included in the repository's lib directory

use -I to include header paths for compiler to look for headers

and -L and -l for linker to link against shared libraries.

libcurl_dir=../lib/libcurl-7.56.0
libcurl_include=${libcurl_dir}/include
libcurl_lib=${libcurl_dir}/lib

jsoncpp_dir=../lib/jsoncpp-1.8.3
jsoncpp_include=${jsoncpp_dir}/include
jsoncpp_src=${jsoncpp_dir}/src

libwebsockets_dir=../lib/libwebsockets-2.4.0
libwebsockets_include=${libwebsockets_dir}/include
libwebsockets_lib=${libwebsockets_dir}/lib

libbinacpp_dir=../lib/libbinacpp
libbinacpp_include=${libbinacpp_dir}/include
libbinacpp_lib=${libbinacpp_dir}/lib

Build Instructions

To build binacpp shared library

mkdir build
cmake ..
make -j 4
cd src
make install

To build examples

cd build/examples
make -j 4

And export LD_LIBRARY_PATH and run like this:

libcurl_dir=../lib/libcurl-7.56.0
libcurl_lib=${libcurl_dir}/lib

libwebsockets_dir=../lib/libwebsockets-2.4.0
libwebsockets_lib=${libwebsockets_dir}/lib

libbinacpp_dir=../lib/libbinacpp
libbinacpp_lib=${libbinacpp_dir}/lib

export SSL_CERT_FILE=`pwd`/cacert.pem
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$libcurl_lib:$libwebsockets_lib:$libbinacpp_lib

./example 

You can refer to the following Makefile to get a better picture...

https://github.com/tensaix2j/binacpp/blob/master/example/Makefile

To Build Example

cd example
make example

Coding with libBinaCPP

Headers to include

#include "binacpp.h"	
#include "binacpp_websocket.h"
#include <json/json.h>

Init

string api_key 		= API_KEY;
string secret_key = SECRET_KEY;
BinaCPP::init( api_key , secret_key );

Example : Get Server Time.

Json::Value result;
BinaCPP::get_serverTime( result ) ;

Example : Get all Prices

Json::Value result;
BinaCPP::get_allPrices( result );

Example: Get price of single pair. Eg: BNBETH

double bnbeth_price = BinaCPP::get_price( "BNBETH");

Example: Get Account

Json::Value result;
long recvWindow = 10000;	
BinaCPP::get_account( recvWindow , result );

Example : Get all bid/ask prices

Json::Value result;
BinaCPP::get_allBookTickers( result );

Example: Get bid/ask for single pair

Json::Value result;
BinaCPP::get_bookTicker("bnbeth", result );

Example: Get Depth of single pair

Json::Value result;
BinaCPP::get_depth( "ETHBTC", 5, result ) ;

Example: Placing a LIMIT order

long recvWindow = 10000;	
Json::Value result;
BinaCPP::send_order( "BNBETH", "BUY", "LIMIT", "GTC", 20 , 0.00380000, "",0,0, recvWindow, result );

Example: Placing a MARKET order

long recvWindow = 10000;
Json::Value result;
BinaCPP::send_order( "BNBETH", "BUY", "MARKET", "GTC", 20 , 0,   "",0,0, recvWindow, result );

Example: Placing an ICEBERG order

long recvWindow = 10000;
Json::Value result;
BinaCPP::send_order( "BNBETH", "BUY", "MARKET", "GTC", 1 , 0,   "",0,20, recvWindow , result );

Example: Check an order's status

long recvWindow = 10000;
Json::Value result;
BinaCPP::get_order( "BNBETH", 12345678, "", recvWindow, result );

Example: Cancel an order

long recvWindow = 10000;
Json::Value result;
BinaCPP::cancel_order("BNBETH", 12345678, "","", recvWindow, result);

Example: Getting list of open orders for specific pair

long recvWindow = 10000;
Json::Value result;
BinaCPP::get_openOrders( "BNBETH", recvWindow, result ) ;

Example: Get all account orders; active, canceled, or filled.

long recvWindow = 10000;
Json::Value result;
BinaCPP::get_allOrders( "BNBETH", 0,0, recvWindow, result ) 

Example : Get all trades history

long recvWindow = 10000;
Json::Value result;
BinaCPP::get_myTrades( "BNBETH", 0,0, recvWindow , result );

Example: Getting 24hr ticker price change statistics for a symbol

Json::Value result;
BinaCPP::get_24hr( "ETHBTC", result ) ;

Example: Get Kline/candlestick data for a symbol

Json::Value result;
BinaCPP::get_klines( "ETHBTC", "1h", 10 , 0, 0, result );

Websocket Endpoints

Example: Maintain Market Depth Cache Locally via Web Socket

example_depthCache.cpp

Example: KLine/Candlestick Cache and update via Web Socket

example_klines.cpp

Example: Aggregated Trades and update via Web Socket

example_aggTrades.cpp

Example: User stream, Order Execution Status and Balance Update via Web Socket

example_userStream.cpp

Example: To subscribe multiple streams at the same time, do something like this

BinaCPP::start_userDataStream(result );
string ws_path = string("/ws/");
ws_path.append( result["listenKey"].asString() );


BinaCPP_websocket::init();

BinaCPP_websocket::connect_endpoint( ws_aggTrade_OnData ,"/ws/bnbbtc@aggTrade" ); 
BinaCPP_websocket::connect_endpoint( ws_userStream_OnData , ws_path.c_str() ); 
BinaCPP_websocket::connect_endpoint( ws_klines_onData ,"/ws/bnbbtc@kline_1m" ); 
BinaCPP_websocket::connect_endpoint( ws_depth_onData ,"/ws/bnbbtc@depth" ); 
	
BinaCPP_websocket::enter_event_loop(); 

example.cpp

binacpp's People

Contributors

tensaix2j avatar sahmad98 avatar alexanderkoumis avatar lexasub avatar vncoelho avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.