Skip to content

ToTheMoon - Cryptocurrency Trading Bot

Notifications You must be signed in to change notification settings

poptomas/ToTheMoon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ToTheMoon (Cryptocurrency Trading Bot)

Table of contents

Introduction

Brief Description

ToTheMoon (TTM) is a console application written in C++ which serves as a simulator for algorithmic trading with cryptocurrencies. Currently supported cryptocurrency exchange is Binance. Within the application there is no real money involved.

TTM supports various commands which are requested from the user via std::cin:

-------------------------------------
Supported commands (case insensitive):
withdraw
current
market
history
help
indicators
add [symbol]
remove [symbol]
deposit [value]
-------------------------------------
  • which is by the way expected output of help command

Motivation

The main motivation behind the simulator creation was to learn more about cryptocurrency in general and whether such a volatile field can be somehow predicted. There are plenty of options which can be considered, for instance, using deep neural networks (RNN - Recurrent Neural Networks or LSTM - Long Short Term Memory) or using time series analysis techniques such as ARIMA. Nevertheless, an option which was chosen for this task was strictly algorithmic trading using technical indicators which are very common in the field of "human cryptocurrency trading" and compared to the first two options are easier to test since most common cryptocurrency exchanges support a variety of technical indicators which can be embedded to a user interface side by side with the current exchange rate.

Technology used

  • CMake

  • C++

    • Modern C++ (C++17/C++20) is required
    • For Windows users: C++20 is required since the program makes use of std::format
      • CMake compiles with /std:c++latest
      • Test run (and the majority of development) was made using Visual Studio 2022 with MSVC 19+
    • For Linux users: at least C++17 is required (std::format is not yet supported by modern g++ nor modern clang)
      • CMake compiles with -std=c++20
      • Test run was made using Ubuntu 20.04 (WSL)
      • Build was made both within Visual Studio 2022 (multiple configurations supported) and solely through the command line using linux.sh script
  • External dependencies

    • vcpkg - multiplatform C++ package manager
    • cpprestsdk - Library which takes care of HTTP Requests and JSON data processing in this library

Setup and launch

  • In the root directory there is an install script according to your operating system (windows.bat, linux.sh) which takes care of vcpkg installation and which is further used to install cpprestsdk
  • For Windows users: it is suggested to use Visual Studio 2019/2022 which has CMake installed (Desktop development with C++ and Linux Development with C++)
  • For Linux users: the script takes care of (Debian based) the installation of build-essential packages necessary for compiling software. Furthermore, it installs g++-11 and clang++-12 to make sure that the library compiles with a compiler which can support C++20.

Hardware requirements

  • Minimal requirements are not set - in the documentation there is the specification of the machine where the project was launched without any observable limitations which could be set as recommmendend hardware requirements

Releases

No releases published

Packages

No packages published