Skip to content

Commit f3106ca

Browse files
committed
update README.md
1 parent c84dfc2 commit f3106ca

1 file changed

Lines changed: 52 additions & 59 deletions

File tree

README.md

Lines changed: 52 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
* Example CMake: example/CMakeLists.txt.
7676
* Require C++17 and OpenSSL.
7777
* Macros in the compiler command line:
78-
* Define service enablement macro such as `CCAPI_ENABLE_SERVICE_MARKET_DATA`, `CCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT`, `CCAPI_ENABLE_SERVICE_FIX`, etc. and exchange enablement macros such as `CCAPI_ENABLE_EXCHANGE_OKX`, etc. These macros can be found at the top of [`include/ccapi_cpp/ccapi_session.h`](include/ccapi_cpp/ccapi_session.h).
78+
* Define service enablement macro such as `CCAPI_ENABLE_SERVICE_MARKET_DATA`, `CCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT`, `CCAPI_ENABLE_SERVICE_FIX`, etc. and exchange enablement macros such as `CCAPI_ENABLE_EXCHANGE_BYBIT`, etc. These macros can be found at the top of [`include/ccapi_cpp/ccapi_session.h`](include/ccapi_cpp/ccapi_session.h).
7979
* Dependencies:
8080
* boost https://archives.boost.io/release/1.87.0/source/boost_1_87_0.tar.gz (notice that its include directory is boost).
8181
* rapidjson https://github.com/Tencent/rapidjson/archive/refs/tags/v1.1.0.tar.gz (notice that its include directory is rapidjson/include).
@@ -240,7 +240,7 @@ int main(int argc, char** argv) {
240240
SessionConfigs sessionConfigs;
241241
MyEventHandler eventHandler;
242242
Session session(sessionOptions, sessionConfigs, &eventHandler);
243-
Request request(Request::Operation::GET_RECENT_TRADES, "okx", "BTC-USDT");
243+
Request request(Request::Operation::GET_RECENT_TRADES, "bybit", "BTCUSDT");
244244
request.appendParam({
245245
{"LIMIT", "1"},
246246
});
@@ -331,7 +331,7 @@ int main(int argc, char** argv) {
331331
SessionConfigs sessionConfigs;
332332
MyEventHandler eventHandler;
333333
Session session(sessionOptions, sessionConfigs, &eventHandler);
334-
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH");
334+
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH");
335335
session.subscribe(subscription);
336336
std::this_thread::sleep_for(std::chrono::seconds(10));
337337
session.stop();
@@ -368,26 +368,26 @@ request.appendParam({
368368

369369
Instantiate `Subscription` with option `MARKET_DEPTH_MAX` set to be the desired market depth (e.g. you want to receive market depth snapshot whenever the top 10 bid's or ask's price or size changes).
370370
```
371-
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH", "MARKET_DEPTH_MAX=10");
371+
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH", "MARKET_DEPTH_MAX=10");
372372
```
373373

374374
#### Specify correlation id
375375

376376
Instantiate `Request` with the desired correlationId. The `correlationId` should be unique.
377377
```
378-
Request request(Request::Operation::GET_RECENT_TRADES, "okx", "BTC-USDT", "cool correlation id");
378+
Request request(Request::Operation::GET_RECENT_TRADES, "bybit", "BTCUSDT", "cool correlation id");
379379
```
380380
Instantiate `Subscription` with the desired correlationId.
381381
```
382-
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH", "", "cool correlation id");
382+
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH", "", "cool correlation id");
383383
```
384384
This is used to match a particular request or subscription with its returned data. Within each `Message` there is a `correlationIdList` to identify the request or subscription that requested the data.
385385

386386
#### Multiple exchanges and/or instruments
387387

388388
Send a `std::vector<Request>`.
389389
```
390-
Request request_1(Request::Operation::GET_RECENT_TRADES, "okx", "BTC-USDT", "cool correlation id for BTC");
390+
Request request_1(Request::Operation::GET_RECENT_TRADES, "bybit", "BTCUSDT", "cool correlation id for BTC");
391391
request_1.appendParam(...);
392392
Request request_2(Request::Operation::GET_RECENT_TRADES, "binance", "ETH-USDT", "cool correlation id for ETH");
393393
request_2.appendParam(...);
@@ -396,8 +396,8 @@ session.sendRequest(requests);
396396
```
397397
Subscribe a `std::vector<Subscription>`.
398398
```
399-
Subscription subscription_1("okx", "BTC-USDT", "MARKET_DEPTH", "", "cool correlation id for okx BTC-USDT");
400-
Subscription subscription_2("binance", "ETH-USDT", "MARKET_DEPTH", "", "cool correlation id for binance ETH-USDT");
399+
Subscription subscription_1("bybit", "BTCUSDT", "MARKET_DEPTH", "", "cool correlation id for bybit BTCUSDT");
400+
Subscription subscription_2("binance", "ETHUSDT", "MARKET_DEPTH", "", "cool correlation id for binance ETHUSDT");
401401
std::vector<ccapi::Subscription> subscriptions = {subscription_1, subscription_2};
402402
session.subscribe(subscriptions);
403403
```
@@ -406,49 +406,49 @@ session.subscribe(subscriptions);
406406

407407
Instantiate `Subscription` with option `CONFLATE_INTERVAL_MILLISECONDS` set to be the desired interval.
408408
```
409-
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH", "CONFLATE_INTERVAL_MILLISECONDS=1000");
409+
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH", "CONFLATE_INTERVAL_MILLISECONDS=1000");
410410
```
411411

412412
#### Receive subscription events at periodic intervals including when the market depth snapshot hasn't changed
413413

414414
Instantiate `Subscription` with option `CONFLATE_INTERVAL_MILLISECONDS` set to be the desired interval and `CONFLATE_GRACE_PERIOD_MILLISECONDS` to be the grace period for late events.
415415
```
416-
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH", "CONFLATE_INTERVAL_MILLISECONDS=1000&CONFLATE_GRACE_PERIOD_MILLISECONDS=0");
416+
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH", "CONFLATE_INTERVAL_MILLISECONDS=1000&CONFLATE_GRACE_PERIOD_MILLISECONDS=0");
417417
```
418418

419419
#### Receive subscription market depth updates
420420

421421
Instantiate `Subscription` with option `MARKET_DEPTH_RETURN_UPDATE` set to 1. This will return the order book updates instead of snapshots.
422422
```
423-
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH", "MARKET_DEPTH_RETURN_UPDATE=1&MARKET_DEPTH_MAX=2");
423+
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH", "MARKET_DEPTH_RETURN_UPDATE=1&MARKET_DEPTH_MAX=2");
424424
```
425425

426426
#### Receive subscription trade events
427427

428428
Instantiate `Subscription` with field `TRADE`.
429429
```
430-
Subscription subscription("okx", "BTC-USDT", "TRADE");
430+
Subscription subscription("bybit", "BTCUSDT", "TRADE");
431431
```
432432

433433
#### Receive subscription calculated-candlestick events at periodic intervals
434434

435435
Instantiate `Subscription` with field `TRADE` and option `CONFLATE_INTERVAL_MILLISECONDS` set to be the desired interval and `CONFLATE_GRACE_PERIOD_MILLISECONDS` to be your network latency.
436436
```
437-
Subscription subscription("okx", "BTC-USDT", "TRADE", "CONFLATE_INTERVAL_MILLISECONDS=5000&CONFLATE_GRACE_PERIOD_MILLISECONDS=0");
437+
Subscription subscription("bybit", "BTCUSDT", "TRADE", "CONFLATE_INTERVAL_MILLISECONDS=5000&CONFLATE_GRACE_PERIOD_MILLISECONDS=0");
438438
```
439439

440440
#### Receive subscription exchange-provided-candlestick events at periodic intervals
441441

442442
Instantiate `Subscription` with field `CANDLESTICK` and option `CANDLESTICK_INTERVAL_SECONDS` set to be the desired interval.
443443
```
444-
Subscription subscription("okx", "BTC-USDT", "CANDLESTICK", "CANDLESTICK_INTERVAL_SECONDS=60");
444+
Subscription subscription("bybit", "BTCUSDT", "CANDLESTICK", "CANDLESTICK_INTERVAL_SECONDS=60");
445445
```
446446

447447
#### Send generic public requests
448448

449449
Instantiate `Request` with operation `GENERIC_PUBLIC_REQUEST`. Provide request parameters `HTTP_METHOD`, `HTTP_PATH`, and optionally `HTTP_QUERY_STRING` (query string parameter values should be url-encoded), `HTTP_BODY`.
450450
```
451-
Request request(Request::Operation::GENERIC_PUBLIC_REQUEST, "okx", "", "Check Server Time");
451+
Request request(Request::Operation::GENERIC_PUBLIC_REQUEST, "bybit", "", "Check Server Time");
452452
request.appendParam({
453453
{"HTTP_METHOD", "GET"},
454454
{"HTTP_PATH", "/api/v5/public/time"},
@@ -459,14 +459,14 @@ request.appendParam({
459459

460460
Instantiate `Subscription` with empty instrument, field `GENERIC_PUBLIC_SUBSCRIPTION` and options set to be the desired websocket payload.
461461
```
462-
Subscription subscription("okx", "", "GENERIC_PUBLIC_SUBSCRIPTION", R"({"type":"subscribe","channels":[{"name":"status"}]})");
462+
Subscription subscription("bybit", "", "GENERIC_PUBLIC_SUBSCRIPTION", R"({"type":"subscribe","channels":[{"name":"status"}]})");
463463
```
464464

465465
#### Send generic private requests
466466

467467
Instantiate `Request` with operation `GENERIC_PRIVATE_REQUEST`. Provide request parameters `HTTP_METHOD`, `HTTP_PATH`, and optionally `HTTP_QUERY_STRING` (query string parameter values should be url-encoded), `HTTP_BODY`.
468468
```
469-
Request request(Request::Operation::GENERIC_PRIVATE_REQUEST, "okx", "", "close all positions");
469+
Request request(Request::Operation::GENERIC_PRIVATE_REQUEST, "bybit", "", "close all positions");
470470
request.appendParam({
471471
{"HTTP_METHOD", "POST"},
472472
{"HTTP_PATH", "/api/v5/trade/close-position"},
@@ -511,24 +511,21 @@ using ::ccapi::toString;
511511
using ::ccapi::UtilSystem;
512512
513513
int main(int argc, char** argv) {
514-
if (UtilSystem::getEnvAsString("OKX_API_KEY").empty()) {
515-
std::cerr << "Please set environment variable OKX_API_KEY" << std::endl;
514+
if (UtilSystem::getEnvAsString("BYBIT_API_KEY").empty()) {
515+
std::cerr << "Please set environment variable BYBIT_API_KEY" << std::endl;
516516
return EXIT_FAILURE;
517517
}
518-
if (UtilSystem::getEnvAsString("OKX_API_SECRET").empty()) {
519-
std::cerr << "Please set environment variable OKX_API_SECRET" << std::endl;
520-
return EXIT_FAILURE;
521-
}
522-
if (UtilSystem::getEnvAsString("OKX_API_PASSPHRASE").empty()) {
523-
std::cerr << "Please set environment variable OKX_API_PASSPHRASE" << std::endl;
518+
if (UtilSystem::getEnvAsString("BYBIT_API_SECRET").empty()) {
519+
std::cerr << "Please set environment variable BYBIT_API_SECRET" << std::endl;
524520
return EXIT_FAILURE;
525521
}
526522
523+
527524
SessionOptions sessionOptions;
528525
SessionConfigs sessionConfigs;
529526
MyEventHandler eventHandler;
530527
Session session(sessionOptions, sessionConfigs, &eventHandler);
531-
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT");
528+
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT");
532529
request.appendParam({
533530
{"SIDE", "BUY"},
534531
{"QUANTITY", "0.0005"},
@@ -599,7 +596,7 @@ class MyEventHandler : public EventHandler {
599596
std::cout << "Received an event of type SUBSCRIPTION_STATUS:\n" + event.toPrettyString(2, 2) << std::endl;
600597
auto message = event.getMessageList().at(0);
601598
if (message.getType() == Message::Type::SUBSCRIPTION_STARTED) {
602-
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT");
599+
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT");
603600
request.appendParam({
604601
{"SIDE", "BUY"},
605602
{"LIMIT_PRICE", "20000"},
@@ -625,23 +622,20 @@ using ::ccapi::Subscription;
625622
using ::ccapi::UtilSystem;
626623
627624
int main(int argc, char** argv) {
628-
if (UtilSystem::getEnvAsString("OKX_API_KEY").empty()) {
629-
std::cerr << "Please set environment variable OKX_API_KEY" << std::endl;
630-
return EXIT_FAILURE;
631-
}
632-
if (UtilSystem::getEnvAsString("OKX_API_SECRET").empty()) {
633-
std::cerr << "Please set environment variable OKX_API_SECRET" << std::endl;
625+
if (UtilSystem::getEnvAsString("BYBIT_API_KEY").empty()) {
626+
std::cerr << "Please set environment variable BYBIT_API_KEY" << std::endl;
634627
return EXIT_FAILURE;
635628
}
636-
if (UtilSystem::getEnvAsString("OKX_API_PASSPHRASE").empty()) {
637-
std::cerr << "Please set environment variable OKX_API_PASSPHRASE" << std::endl;
629+
if (UtilSystem::getEnvAsString("BYBIT_API_SECRET").empty()) {
630+
std::cerr << "Please set environment variable BYBIT_API_SECRET" << std::endl;
638631
return EXIT_FAILURE;
639632
}
633+
640634
SessionOptions sessionOptions;
641635
SessionConfigs sessionConfigs;
642636
MyEventHandler eventHandler;
643637
Session session(sessionOptions, sessionConfigs, &eventHandler);
644-
Subscription subscription("okx", "BTC-USDT", "ORDER_UPDATE");
638+
Subscription subscription("bybit", "BTCUSDT", "ORDER_UPDATE");
645639
session.subscribe(subscription);
646640
std::this_thread::sleep_for(std::chrono::seconds(10));
647641
session.stop();
@@ -705,35 +699,35 @@ Bye
705699

706700
Instantiate `Request` with the desired `correlationId`. The `correlationId` should be unique.
707701
```
708-
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT", "cool correlation id");
702+
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT", "cool correlation id");
709703
```
710704
Instantiate `Subscription` with the desired `correlationId`.
711705
```
712-
Subscription subscription("okx", "BTC-USDT", "ORDER_UPDATE", "", "cool correlation id");
706+
Subscription subscription("bybit", "BTCUSDT", "ORDER_UPDATE", "", "cool correlation id");
713707
```
714708
This is used to match a particular request or subscription with its returned data. Within each `Message` there is a `correlationIdList` to identify the request or subscription that requested the data.
715709

716710
#### Multiple exchanges and/or instruments
717711

718712
Send a `std::vector<Request>`.
719713
```
720-
Request request_1(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT", "cool correlation id for BTC");
714+
Request request_1(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT", "cool correlation id for BTC");
721715
request_1.appendParam(...);
722-
Request request_2(Request::Operation::CREATE_ORDER, "okx", "ETH-USDT", "cool correlation id for ETH");
716+
Request request_2(Request::Operation::CREATE_ORDER, "bybit", "ETH-USDT", "cool correlation id for ETH");
723717
request_2.appendParam(...);
724718
std::vector<ccapi::Request> requests = {request_1, request_2};
725719
session.sendRequest(requests);
726720
```
727721
Subscribe one `Subscription` per exchange with a comma separated string of instruments.
728722
```
729-
Subscription subscription("okx", "BTC-USDT,ETH-USDT", "ORDER_UPDATE");
723+
Subscription subscription("bybit", "BTC-USDT,ETH-USDT", "ORDER_UPDATE");
730724
```
731725

732726
#### Multiple subscription fields
733727

734728
Subscribe one `Subscription` with a comma separated string of fields.
735729
```
736-
Subscription subscription("okx", "BTC-USDT", "ORDER_UPDATE,PRIVATE_TRADE");
730+
Subscription subscription("bybit", "BTCUSDT", "ORDER_UPDATE,PRIVATE_TRADE");
737731
```
738732

739733
#### Make Session::sendRequest blocking
@@ -752,42 +746,41 @@ There are 3 ways to provide API credentials (listed with increasing priority).
752746
* Provide credentials to `SessionConfigs`.
753747
```
754748
sessionConfigs.setCredential({
755-
{"OKX_API_KEY", ...},
756-
{"OKX_API_SECRET", ...}
749+
{"BYBIT_API_KEY", ...},
750+
{"BYBIT_API_SECRET", ...}
757751
});
758752
```
759753
* Provide credentials to `Request` or `Subscription`.
760754
```
761-
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT", "", {
762-
{"OKX_API_KEY", ...},
763-
{"OKX_API_SECRET", ...}
755+
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT", "", {
756+
{"BYBIT_API_KEY", ...},
757+
{"BYBIT_API_SECRET", ...}
764758
});
765759
```
766760
```
767-
Subscription subscription("okx", "BTC-USDT", "ORDER_UPDATE", "", "", {
768-
{"OKX_API_KEY", ...},
769-
{"OKX_API_SECRET", ...}
761+
Subscription subscription("bybit", "BTCUSDT", "ORDER_UPDATE", "", "", {
762+
{"BYBIT_API_KEY", ...},
763+
{"BYBIT_API_SECRET", ...}
770764
});
771765
```
772766

773767
#### Complex request parameters
774-
Please follow the exchange's API documentations: e.g. https://www.okx.com/docs-v5/en/#order-book-trading-trade-post-place-order.
768+
Please follow the exchange's API documentations: e.g. https://bybit-exchange.github.io/docs/v5/order/create-order.
775769
```
776-
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT");
770+
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT");
777771
request.appendParam({
778-
{"tdMode", "cross"},
779-
{"ccy", "USDT"},
772+
{"isLeverage", "1"},
780773
});
781774
```
782775

783776
#### Send request by Websocket API
784777
For okx, cryptocom:
785778
```
786779
std::string websocketOrderEntrySubscriptionCorrelationId("any");
787-
Subscription subscription("okx", "", "ORDER_UPDATE", "", websocketOrderEntrySubscriptionCorrelationId);
780+
Subscription subscription("bybit", "", "ORDER_UPDATE", "", websocketOrderEntrySubscriptionCorrelationId);
788781
session.subscribe(subscription);
789782
...
790-
Request request(Request::Operation::CREATE_ORDER, "okx", "BTC-USDT");
783+
Request request(Request::Operation::CREATE_ORDER, "bybit", "BTCUSDT");
791784
request.appendParam({
792785
{"SIDE", "BUY"},
793786
{"LIMIT_PRICE", "20000"},
@@ -1074,12 +1067,12 @@ session.subscribe(subscription);
10741067
```
10751068

10761069
#### Override exchange urls
1077-
You can override exchange urls at compile time by using macros. See section "exchange REST urls", "exchange WS urls", and "exchange FIX urls" in [`include/ccapi_cpp/ccapi_macro.h`](include/ccapi_cpp/ccapi_macro.h). You can also override exchange urls at runtime. See [this example](example/src/override_exchange_url_at_runtime/main.cpp). These can be useful if you need to connect to test accounts (e.g. https://www.okx.com/docs-v5/en/#overview-demo-trading-services).
1070+
You can override exchange urls at compile time by using macros. See section "exchange REST urls", "exchange WS urls", and "exchange FIX urls" in [`include/ccapi_cpp/ccapi_macro.h`](include/ccapi_cpp/ccapi_macro.h). You can also override exchange urls at runtime. See [this example](example/src/override_exchange_url_at_runtime/main.cpp). These can be useful if you need to connect to test accounts (e.g. https://testnet.bybit.com/).
10781071

10791072
#### Connect to a proxy
10801073
Instantiate `Subscription` with the desired `proxyUrl`.
10811074
```
1082-
Subscription subscription("okx", "BTC-USDT", "MARKET_DEPTH", "", "", {}, "172.30.0.146:9000");
1075+
Subscription subscription("bybit", "BTCUSDT", "MARKET_DEPTH", "", "", {}, "172.30.0.146:9000");
10831076
```
10841077

10851078
#### Reduce build time

0 commit comments

Comments
 (0)