The official C++ client for communicating with the Kite Connect API.
kitepp is a header only library that wraps around Zerodha's REST API, Websockets saving you the hassle of directly communicating with API and provides an easy to use, modern C++ interface.
Kite Connect is a set of REST-like APIs that expose many capabilities required to build a complete investment and trading platform. Execute orders in real time, manage user portfolio, stream live market data (WebSockets), and more, with the simple HTTP API collection.
kitepp has following dependancies:
- OpenSSL (devel)
- uWebSockets v0.14 (devel) and it's dependancies.
- googletest (devel) and googlemock (devel) are required for running tests.
- Doxygen is required for generating HTML/XML documentation.
- On Fedora 32:
sudo dnf install openssl-devel zlib-devel
+ (uWS v0.14) + (gtest-devel gmock-devel
for running tests) - On Ubuntu:
sudo apt install libssl-dev zlib1g-dev
+ (uWS v0.14) + (googletest & googlemock for running tests)
kitepp saves you the hassle of finding dependencies and provides convenient cmake target to download source packages as tarballs.
- To download dependencies (including uWS v0.14):
cmake .
indeps
directory.
Alternatively and preferably, use package managers provided by your OS. Unless your package manager provides v0.14
of uWS
, you'll have to build and install it manually.
kitepp is a header-only C++ library. Just copy the include
folder to system or project's include path.
Refer to this repository to see a project using kitepp and a boilerplate CMakeLists.txt
to get started.
mkdir build && cd build
cmake ..
make
make && make test ARGS='-V'
make docs
#include <iostream>
#include <kitepp.hpp>
namespace kc = kiteconnect;
int main() {
std::cout << "Running..\n";
try {
kc::kite Kite("---apikey---");
std::cout << "Login URL: " << Kite.loginURL() << "\nLogin with this URL and obtain the request token.\n";
std::string apiSecret;
std::string reqToken;
std::cout << "Enter obtained request token: ";
std::cin >> reqToken;
std::cout << "Enter API secret: ";
std::cin >> apiSecret;
std::string accessToken = Kite.generateSession(reqToken, apiSecret).tokens.accessToken;
std::cout << "access token is " << accessToken << "\n";
Kite.setAccessToken(accessToken);
kc::userProfile profile = Kite.profile();
std::cout << "email is :" << profile.email << "\n";
std::cout << "Order types are: \n";
for (const std::string& type : profile.orderTypes) { std::cout << type << ", "; };
} catch (kc::kiteppException& e) {
std::cerr << e.what() << ", " << e.code() << ", " << e.message() << "\n";
} catch (kc::libException& e) {
std::cerr << e.what() << "\n";
}
catch (std::exception& e) {
std::cerr << e.what() << std::endl;
};
return 0;
};
#include <iostream>
#include "kitepp.hpp"
namespace kc = kiteconnect;
void onConnect(kc::kiteWS* ws) {
std::cout << "connected.. Subscribing now..\n";
ws->setMode("full", { 408065, 2953217 });
};
void onTicks(kc::kiteWS* ws, const std::vector<kc::tick>& ticks) {
for (const auto& i : ticks) {
std::cout << "instrument token: " << i.instrumentToken << " last price: " << i.lastPrice << "\n";
};
};
void onError(kc::kiteWS* ws, int code, const std::string& message) {
std::cout << "Error! Code: " << code << " message: " << message << "\n";
};
void onConnectError(kc::kiteWS* ws) { std::cout << "Couldn't connect..\n"; };
void onClose(kc::kiteWS* ws, int code, const std::string& message) {
std::cout << "Closed the connection.. code: " << code << " message: " << message << "\n";
};
int main(int argc, char const* argv[]) {
kc::kiteWS kWS("---APIKEY---", 5, true, 5);
kWS.setAccessToken("---ACCESSTOKEN---");
kWS.onConnect = onConnect;
kWS.onTicks = onTicks;
kWS.onError = onError;
kWS.onConnectError = onConnectError;
kWS.onClose = onClose;
kWS.connect();
kWS.run();
kWS.stop();
return 0;
};
These and other more extensive examples as well as their cmake
build files for reference can be found in the examples directory.
MIT