Skip to content

Haaziq386/Deribit_OEMS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Order Execution and Management System for Deribit


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