Одно небольшое тестовое задание.
- Установите все необходимые завимости:
sudo apt-get install libssl-dev zlib1g-dev cmake build-essentials git -y
- Склонируйте репозиторий, инициализируйте и склонируйте сабмодули
git clone https://github.com/FlameFlameFlame/BuySellRepeat.git
cd BuySellRepeat
git submodule init
git submodule update
- Создайте папку, в которой будет производиться сборка
mkdir build && cd build
- Сконфигурируйте Cmake проект и соберите исходники
cmake ..
cmake --build .
- Проект готов к запуску:
cd src
./fintech-test --api_key %APIKEY% --secret_key %SECRETKEY% --trading_currency ETH --my_currency BUSD --trading_qty 0.1 --loss_to_sell 0.05 --profit_to_sell 0.025 -I 180
Программа размещает заказ на покупку указанного количества криптовалюты на тестовом сервере Binance. После выполнения заказа программа начинает следить за изменением цены. После этого программа начинает следить за ценой. Она разместит заказ на продажу, если выполнится одно из следующих условий:
- цена упадёт ниже указанного процента
- цена поднимется выше другого указанного процента
- пройдёт больше времени, чем указано в параметрах запуска программы
Параметры:
--api_key
строка Api Key пользователя
--secret_key
строка с Secret Key пользователя
--trading_currency
-T
символ криптовалюты, которую программа будет покупать или продавать
--my_currency
-M
символ криптовалюты, которой будет оплачиваться покупка и в которую будет выводиться продажа
--trading_qty
-Q
количество торгуемой криптовалюты. Дробное число с разделителем точка: 0.1
--loss_to_sell
-L
нижняя граница потери цены после покупки, при пересечении которой криптовалюта будет продана с убытком. Проценты, дробное число с разделителем точка: 0.1
--profit_to_sell
-P
верхняя граница роста цены после покупки, при пересечении которой криптовалюта будет продана с прибылью. Проценты, положительное дробное число с разделителем точка: 0.1
--idle_time_seconds
-I
интервал в секундах. Если по истечении этого интервала цена не изменилась значительно, криптовалюта будет продана. Целое число, 180
Для остановки работы программы надо нажать Ctrl+C
, держа фокус в окне терминала, из которого была запущенна программа
- При долгом выполнении заказов может казаться, что программа зависла. Я не успел добавить индикацию процесса выполнения заказа.
- Формат вывода даты и времени не очень удобный
- Некоторые ошибки работы с сервером не обрабатываются. В любом случае, при получении от сервера любого другого ответа на запрос, кроме
200
, программа упадёт с ошибкой. - Запуск программы занимает 2-3 секунды, это время необходимо для корректной инициализации сетевых интерфейсов.
- При сборке выпадают несколько warning. Это сторонние библиотеки.