Skip to content

A C++ library that provides a simple API for interacting with the xStation5 trading platform.

License

Notifications You must be signed in to change notification settings

MPogotsky/xapi-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xStation5 API C++ Library

Test xapi-cpp license

This library provides C++ interface to work with XTB xStation5 accounts. It can be used to connect to xStation5 platform, retrieve market data and execute trades.

API documentation: http://developers.xstore.pro/documentation

Disclaimer

This xStation5 API C++ library is not affiliated with, endorsed by, or in any way officially connected to the xStation5 trading platform or its parent company.

Please refer to the license file (MIT License) for terms and conditions governing the use of this library, including disclaimers of warranties and liabilities.

Requirements

Make sure to list all necessary dependencies and tools required to build and install the library.

  • C++ Compiler: Any C++20-compliant compiler (e.g., GCC, Clang)
  • CMake: Version 3.22 or higher
  • Boost: Version 1.83.0 or higher
  • OpenSSL: Version 3.0.2 or higher

Build & Install

Step-by-step guide to build the project using CMake.

  1. Clone the repository and navigate to the xapi-cpp directory:

    git clone https://github.com/MPogotsky/xapi-cpp.git
    cd xapi-cpp
  2. Create a build directory and navigate into it:

    mkdir build
    cd build
  3. Run CMake to configure and build Release version of the library:

    cmake ..
    cmake --build . 
  4. Run CMake command to install library:

    cmake --install . 

Usage

To use xAPI, an active account on the xStation5 trading platform is required. It could be a real account, or demo account. To create one, you can visit xtb.com

Once your account is set up, you can leverage the Xapi library to connect to the platform and start trading.

Cmake configuration

Xapi supports find_package, simplifying the process of linking the library to your project. A typical CMakeLists.txt for your project might look like this:

    cmake_minimum_required(VERSION 3.10)
    project(ExampleApp)

    set(CMAKE_CXX_STANDARD 20)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)

    find_package(Xapi REQUIRED)

    add_executable(ExampleApp main.cpp)

    target_link_libraries(ExampleApp
        PRIVATE
        Boost::system
        Boost::json
        Boost::url
        Xapi::Xapi
    )

Example getAllSymbols

Here’s a simple example of how to use the library in your main.cpp:

#include <iostream>
#include <string>
#include <boost/asio.hpp>
#include <boost/json.hpp>
#include <xapi/Xapi.hpp>


boost::asio::awaitable<void> run(boost::asio::io_context &context)
{
    const boost::json::object accountCredentials = {
        {"accountId", "accountId"}, // Replace value with your account ID
        {"password", "password"}, // Replace valuer with your password
        {"accountType", "demo"} // Account type, "demo" or "real"
    };

    xapi::XStationClient user(context, accountCredentials);

    try
    {
        co_await user.login();

        auto result = co_await user.getAllSymbols();
        std::cout << boost::json::serialize(result) << std::endl;

        co_await user.logout();
    }
    catch (xapi::exception::ConnectionClosed &e)
    {
        std::cout << "Connection failed: " << e.what() << std::endl;
    }
    catch (xapi::exception::LoginFailed &e)
    {
        std::cout << "Logging failed: " << e.what() << std::endl;
    }
    catch (std::exception &e)
    {
        std::cout << e.what() << std::endl;
    }
}

int main(int argc, char const *argv[])
{
    boost::asio::io_context context;

    boost::asio::co_spawn(context, run(context), boost::asio::detached);

    context.run();
    return 0;
}

More examples can be found in examples folder.

Runing Tests

To build the tests, follow these steps:

  1. Navigate to the build directory.

  2. Run the following commands to configure debug mode and build the tests using CMake:

    cmake -DCMAKE_BUILD_TYPE=Debug ..
    cmake --build .

    Once the build process is complete, you will have the tests ready to run.

    Use command below to run unit tests:

    test/tests

Getting Help

If you have questions, issues, or need assistance with this project, you can visit the GitHub Issues page to report problems or check for known issues.

Feel free to reach out via email at [email protected] if you need direct assistance.

Contributing

To contribute, please fork the repository, make your changes, and submit a pull request. All contributions will be reviewed, and any useful additions are welcome. Any review or improvement suggestions you may have are greatly appreciated