Skip to content

Haaziq386/Deribit_OEMS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Order Execution and Management System for Deribit


Objective

Create a high-performance order execution and management system to trade on Deribit Test ( https://test.deribit.com/ ) using C++.


Screenshots

OEMS Websocket CLient Websocket Server


Video Demo

https://drive.google.com/file/d/1VEZIMYgDX3RalEK3iySwAn7Rg99RjZQU/view?usp=sharing


Features

  • Place, modify, and cancel orders seamlessly.
  • Retrieve real-time order book and positions.
  • View open orders and trade history.
  • Authenticate and connect to Deribit’s WebSocket server.
  • Monitor CPU and memory usage.

Tech Stack

  • Programming Language: C++
  • Build System: CMake

Libraries Used

Core Libraries

  • simdjson: For efficient JSON parsing.
  • libcurl: For REST API interactions.

Additional Libraries

  • C++ Standard Libraries: Used for threading, file I/O, and data structures.

Usage

  1. Clone this repository:

    git clone <repository-url>
    cd <repository-directory>
  2. Build the application:

    mkdir build
    cd build/
    cmake ..
    make
  3. Run the application:

    ./deribit_order_management
  4. For the server:

    cd server/
    g++ websocket_server.cpp utils.cpp threadpool.cpp -lcurl
    ./a.out

Code Structure

The app follows a modular code structure for maintainability and scalability:

Directory Structure

.
├── include/           # Header files
├── src/               # Source files
├── server/            # WebSocket server code
├── build/             # Build directory
├── CMakeLists.txt     # Build configuration
└── README.md          # Documentation

Design Choices

  • Modular Components: Separate files for order management, WebSocket client, and utility functions.
  • Real-time Data: Simple and responsive UI.
  • Error Handling: Robust exception handling for JSON parsing and network communication.

Challenges and Solutions

Few Bugs Fixed

  • JSON Parsing Errors: Resolved issues with handling malformed responses using simdjson.
  • WebSocket Threading: Addressed threading conflicts during real-time data updates.

Other Limitations

  • Limited testing on non-Linux platforms.
  • Requires manual server setup for WebSocket functionality.
  • Requires good internet speed

Made with ❤️ for intern assignmnet of GoQuant

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published