Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 52 additions & 59 deletions README.md

Large diffs are not rendered by default.

40 changes: 20 additions & 20 deletions example/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,23 +68,23 @@ if(WIN32)
endif()
link_libraries(OpenSSL::Crypto OpenSSL::SSL ${ADDITIONAL_LINK_LIBRARIES})
add_compile_options(-Wno-deprecated -Wno-nonnull -Wno-deprecated-declarations)
add_subdirectory(src/market_data_simple_request)
add_subdirectory(src/market_data_simple_subscription)
add_subdirectory(src/market_data_advanced_request)
add_subdirectory(src/market_data_advanced_subscription)
add_subdirectory(src/generic_public_request)
add_subdirectory(src/generic_private_request)
add_subdirectory(src/execution_management_simple_request)
add_subdirectory(src/execution_management_simple_subscription)
add_subdirectory(src/execution_management_advanced_request)
add_subdirectory(src/execution_management_advanced_subscription)
add_subdirectory(src/fix_simple)
add_subdirectory(src/fix_advanced)
add_subdirectory(src/enable_library_logging)
add_subdirectory(src/set_timer)
add_subdirectory(src/heartbeat)
add_subdirectory(src/override_exchange_url_at_runtime)
add_subdirectory(src/test_order_latency)
add_subdirectory(src/test_cpu_usage)
add_subdirectory(src/use_multiple_sessions)
add_subdirectory(src/reduce_build_time)
add_subdirectory(market_data_simple_request)
add_subdirectory(market_data_simple_subscription)
add_subdirectory(market_data_advanced_request)
add_subdirectory(market_data_advanced_subscription)
add_subdirectory(generic_public_request)
add_subdirectory(generic_private_request)
add_subdirectory(execution_management_simple_request)
add_subdirectory(execution_management_simple_subscription)
add_subdirectory(execution_management_advanced_request)
add_subdirectory(execution_management_advanced_subscription)
add_subdirectory(fix_simple)
add_subdirectory(fix_advanced)
add_subdirectory(enable_library_logging)
add_subdirectory(set_timer)
add_subdirectory(heartbeat)
add_subdirectory(override_exchange_url_at_runtime)
add_subdirectory(test_order_latency)
add_subdirectory(test_cpu_usage)
add_subdirectory(use_multiple_sessions)
add_subdirectory(reduce_build_time)
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ set(NAME enable_library_logging)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_LOG_TRACE)
add_compile_definitions(CCAPI_ENABLE_SERVICE_MARKET_DATA)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ using ::ccapi::Subscription;

int main(int argc, char** argv) {
Session session;
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH");
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH");
session.subscribe(subscription);
std::this_thread::sleep_for(std::chrono::seconds(10));
session.stop();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME execution_management_advanced_request)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,20 @@ using ::ccapi::SessionOptions;
using ::ccapi::UtilSystem;

int main(int argc, char** argv) {
if (UtilSystem::getEnvAsString("OKX_API_KEY").empty()) {
std::cerr << "Please set environment variable OKX_API_KEY" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_KEY").empty()) {
std::cerr << "Please set environment variable BYBIT_API_KEY" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_SECRET").empty()) {
std::cerr << "Please set environment variable OKX_API_SECRET" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_PASSPHRASE").empty()) {
std::cerr << "Please set environment variable OKX_API_PASSPHRASE" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_SECRET").empty()) {
std::cerr << "Please set environment variable BYBIT_API_SECRET" << std::endl;
return EXIT_FAILURE;
}

SessionOptions sessionOptions;
SessionConfigs sessionConfigs;
MyEventHandler eventHandler;
Session session(sessionOptions, sessionConfigs, &eventHandler);
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT");
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT");
request.appendParam({
{"tdMode", "cross"},
{"ccy", "USDT"},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME execution_management_advanced_subscription)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class MyEventHandler : public EventHandler {
std::cout << "Received an event:\n" + event.toPrettyString(2, 2) << std::endl;
if (!willSendRequest) {
sessionPtr->setTimer("id", 1000, nullptr, [this, sessionPtr]() {
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT");
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT");
request.appendParam({
{"SIDE", "BUY"},
{"LIMIT_PRICE", "20000"},
Expand Down Expand Up @@ -43,25 +43,24 @@ using ::ccapi::Subscription;
using ::ccapi::UtilSystem;

int main(int argc, char** argv) {
if (UtilSystem::getEnvAsString("OKX_API_KEY").empty()) {
std::cerr << "Please set environment variable OKX_API_KEY" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_KEY").empty()) {
std::cerr << "Please set environment variable BYBIT_API_KEY" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_SECRET").empty()) {
std::cerr << "Please set environment variable OKX_API_SECRET" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_PASSPHRASE").empty()) {
std::cerr << "Please set environment variable OKX_API_PASSPHRASE" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_SECRET").empty()) {
std::cerr << "Please set environment variable BYBIT_API_SECRET" << std::endl;
return EXIT_FAILURE;
}

SessionOptions sessionOptions;
SessionConfigs sessionConfigs;
std::string websocketOrderEntrySubscriptionCorrelationId("any");
MyEventHandler eventHandler(websocketOrderEntrySubscriptionCorrelationId);
Session session(sessionOptions, sessionConfigs, &eventHandler);
Subscription subscription("okx", "", "ORDER_UPDATE", "", websocketOrderEntrySubscriptionCorrelationId);
session.subscribe(subscription);
Subscription subscription_1("bybit", "", "ORDER_UPDATE");
Subscription subscription_2("bybit", "", "WEBSOCKET_ORDER_ENTRY", "", websocketOrderEntrySubscriptionCorrelationId);
std::vector<ccapi::Subscription> subscriptions = {subscription_1, subscription_2};
session.subscribe(subscriptions);
std::this_thread::sleep_for(std::chrono::seconds(10));
session.stop();
std::cout << "Bye" << std::endl;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME execution_management_simple_request)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,15 @@ using ::ccapi::toString;
using ::ccapi::UtilSystem;

int main(int argc, char** argv) {
if (UtilSystem::getEnvAsString("OKX_API_KEY").empty()) {
std::cerr << "Please set environment variable OKX_API_KEY" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_KEY").empty()) {
std::cerr << "Please set environment variable BYBIT_API_KEY" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_SECRET").empty()) {
std::cerr << "Please set environment variable OKX_API_SECRET" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_PASSPHRASE").empty()) {
std::cerr << "Please set environment variable OKX_API_PASSPHRASE" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_SECRET").empty()) {
std::cerr << "Please set environment variable BYBIT_API_SECRET" << std::endl;
return EXIT_FAILURE;
}

std::vector<std::string> modeList = {
"create_order", "cancel_order", "get_order", "get_open_orders", "cancel_open_orders", "get_account_balances",
};
Expand All @@ -52,7 +49,7 @@ int main(int argc, char** argv) {
session.stop();
return EXIT_FAILURE;
}
Request request(Request::Operation::CREATE_ORDER, "okx", argv[2]);
Request request(Request::Operation::CREATE_ORDER, "bybit", argv[2]);
request.appendParam({
{"SIDE", strcmp(argv[3], "buy") == 0 ? "BUY" : "SELL"},
{"QUANTITY", argv[4]},
Expand All @@ -67,7 +64,7 @@ int main(int argc, char** argv) {
session.stop();
return EXIT_FAILURE;
}
Request request(Request::Operation::CANCEL_ORDER, "okx", argv[2]);
Request request(Request::Operation::CANCEL_ORDER, "bybit", argv[2]);
request.appendParam({
{"ORDER_ID", argv[3]},
});
Expand All @@ -80,7 +77,7 @@ int main(int argc, char** argv) {
session.stop();
return EXIT_FAILURE;
}
Request request(Request::Operation::GET_ORDER, "okx", argv[2]);
Request request(Request::Operation::GET_ORDER, "bybit", argv[2]);
request.appendParam({
{"ORDER_ID", argv[3]},
});
Expand All @@ -93,7 +90,7 @@ int main(int argc, char** argv) {
session.stop();
return EXIT_FAILURE;
}
Request request(Request::Operation::GET_OPEN_ORDERS, "okx", argv[2]);
Request request(Request::Operation::GET_OPEN_ORDERS, "bybit", argv[2]);
session.sendRequest(request);
} else if (mode == "cancel_open_orders") {
if (argc != 3) {
Expand All @@ -103,10 +100,10 @@ int main(int argc, char** argv) {
session.stop();
return EXIT_FAILURE;
}
Request request(Request::Operation::CANCEL_OPEN_ORDERS, "okx", argv[2]);
Request request(Request::Operation::CANCEL_OPEN_ORDERS, "bybit", argv[2]);
session.sendRequest(request);
} else if (mode == "get_account_balances") {
Request request(Request::Operation::GET_ACCOUNT_BALANCES, "okx");
Request request(Request::Operation::GET_ACCOUNT_BALANCES, "bybit");
session.sendRequest(request);
}
std::this_thread::sleep_for(std::chrono::seconds(10));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME execution_management_simple_subscription)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class MyEventHandler : public EventHandler {
std::cout << "Received an event:\n" + event.toPrettyString(2, 2) << std::endl;
if (!willSendRequest) {
sessionPtr->setTimer("id", 1000, nullptr, [this, sessionPtr]() {
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT");
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT");
request.appendParam({
{"SIDE", "BUY"},
{"LIMIT_PRICE", "20000"},
Expand Down Expand Up @@ -39,23 +39,20 @@ using ::ccapi::Subscription;
using ::ccapi::UtilSystem;

int main(int argc, char** argv) {
if (UtilSystem::getEnvAsString("OKX_API_KEY").empty()) {
std::cerr << "Please set environment variable OKX_API_KEY" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_KEY").empty()) {
std::cerr << "Please set environment variable BYBIT_API_KEY" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_SECRET").empty()) {
std::cerr << "Please set environment variable OKX_API_SECRET" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_PASSPHRASE").empty()) {
std::cerr << "Please set environment variable OKX_API_PASSPHRASE" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_SECRET").empty()) {
std::cerr << "Please set environment variable BYBIT_API_SECRET" << std::endl;
return EXIT_FAILURE;
}

SessionOptions sessionOptions;
SessionConfigs sessionConfigs;
MyEventHandler eventHandler;
Session session(sessionOptions, sessionConfigs, &eventHandler);
Subscription subscription("okx", "BTC-USDT", "ORDER_UPDATE");
Subscription subscription("bybit", "BTCUSDT", "ORDER_UPDATE");
session.subscribe(subscription);
std::this_thread::sleep_for(std::chrono::seconds(10));
session.stop();
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME generic_private_request)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,20 @@ using ::ccapi::UtilSystem;
using ::ccapi::UtilTime;

int main(int argc, char** argv) {
if (UtilSystem::getEnvAsString("OKX_API_KEY").empty()) {
std::cerr << "Please set environment variable OKX_API_KEY" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_KEY").empty()) {
std::cerr << "Please set environment variable BYBIT_API_KEY" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_SECRET").empty()) {
std::cerr << "Please set environment variable OKX_API_SECRET" << std::endl;
return EXIT_FAILURE;
}
if (UtilSystem::getEnvAsString("OKX_API_PASSPHRASE").empty()) {
std::cerr << "Please set environment variable OKX_API_PASSPHRASE" << std::endl;
if (UtilSystem::getEnvAsString("BYBIT_API_SECRET").empty()) {
std::cerr << "Please set environment variable BYBIT_API_SECRET" << std::endl;
return EXIT_FAILURE;
}

SessionOptions sessionOptions;
SessionConfigs sessionConfigs;
MyEventHandler eventHandler;
Session session(sessionOptions, sessionConfigs, &eventHandler);
Request request(Request::Operation::GENERIC_PRIVATE_REQUEST, "okx", "", "close all positions");
Request request(Request::Operation::GENERIC_PRIVATE_REQUEST, "bybit", "", "close all positions");
request.appendParam({
{"HTTP_METHOD", "POST"},
{"HTTP_PATH", "/api/v5/trade/close-position"},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME generic_public_request)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_MARKET_DATA)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ int main(int argc, char** argv) {
SessionConfigs sessionConfigs;
MyEventHandler eventHandler;
Session session(sessionOptions, sessionConfigs, &eventHandler);
Request request(Request::Operation::GENERIC_PUBLIC_REQUEST, "okx", "", "Check Server Time");
Request request(Request::Operation::GENERIC_PUBLIC_REQUEST, "bybit", "", "Check Server Time");
request.appendParam({
{"HTTP_METHOD", "GET"},
{"HTTP_PATH", "/api/v5/public/time"},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME heartbeat)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_MARKET_DATA)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME market_data_advanced_request)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_MARKET_DATA)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ int main(int argc, char** argv) {
SessionConfigs sessionConfigs;
MyEventHandler eventHandler;
Session session(sessionOptions, sessionConfigs, &eventHandler);
Request request(Request::Operation::GET_HISTORICAL_TRADES, "okx", "BTC-USDT");
Request request(Request::Operation::GET_HISTORICAL_TRADES, "bybit", "BTCUSDT");
request.appendParam({
{"before", "1"},
{"after", "3"},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME market_data_advanced_subscription)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_MARKET_DATA)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ int main(int argc, char** argv) {
MyEventHandler eventHandler;
EventDispatcher eventDispatcher(2);
Session session(sessionOptions, sessionConfigs, &eventHandler, &eventDispatcher);
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH");
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH");
session.subscribe(subscription);
std::this_thread::sleep_for(std::chrono::seconds(10));
session.stop();
Expand All @@ -45,7 +45,7 @@ int main(int argc, char** argv) {
SessionOptions sessionOptions;
SessionConfigs sessionConfigs;
Session session(sessionOptions, sessionConfigs);
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH");
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH");
session.subscribe(subscription);
std::this_thread::sleep_for(std::chrono::seconds(10));
std::vector<Event> eventList = session.getEventQueue().purge();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
set(NAME market_data_simple_request)
project(${NAME})
add_compile_definitions(CCAPI_ENABLE_SERVICE_MARKET_DATA)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BYBIT)
add_executable(${NAME} main.cpp)
add_dependencies(${NAME} boost rapidjson)
Loading
Loading