From 0e1eb20781a71e6e9468f44f96f82545c678d907 Mon Sep 17 00:00:00 2001 From: Sebastien Moreau Date: Mon, 23 Oct 2017 16:43:05 -0400 Subject: [PATCH] Adds /count command Adds /count command Adds /count command --- .editorconfig | 18 ++++++++++ bin/run-docker | 74 +++++++++++++++++++++++++++++++++++++++ freqtrade/rpc/telegram.py | 24 +++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 .editorconfig create mode 100755 bin/run-docker diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..326ade84f --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +# http://editorconfig.org +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +max_line_length = 80 +trim_trailing_whitespace = true + +[*.md] +max_line_length = 0 +trim_trailing_whitespace = false + +[COMMIT_EDITMSG] +max_line_length = 0 diff --git a/bin/run-docker b/bin/run-docker new file mode 100755 index 000000000..e0874589b --- /dev/null +++ b/bin/run-docker @@ -0,0 +1,74 @@ +#!/bin/bash + +# Check if docker image exists +CMD_CHECK_IMAGE="docker images -q freqtrade:latest" +REBUILD=false +DRY_RUN=false + +while getopts rdh option +do + case "${option}" + in + r) REBUILD=true + ;; + d) DRY_RUN=true + ;; + h) cat << EOF + +Commands available : + +-r Rebuild the container +-d Dry Run +-h This help message +EOF + exit 0 + ;; + esac +done + +# Ensures files exists +[ -d ~/.freqtrade ] || mkdir ~/.freqtrade +cp config.json ~/.freqtrade/ +touch ~/.freqtrade/tradesv2.sqlite +touch ~/.freqtrade/tradesv2.dry_run.sqlite + + +echo 'Stopping container...' +docker stop freqtrade > /dev/null \ + && docker rm freqtrade > /dev/null \ + && echo 'Container stopped' + + +if [[ -z $($CMD_CHECK_IMAGE) || $REBUILD = true ]]; then + echo "Building container" + docker build -t freqtrade . +fi + + +# Generates Docker commands based on options +DOCKER_CMD="docker run -d \ + --name freqtrade \ + -v ~/.freqtrade/config.json:/freqtrade/config.json" + +if [[ $DRY_RUN = true ]]; then + DOCKER_CMD="$DOCKER_CMD \ + -v ~/.freqtrade/tradesv2.dry_run.sqlite:/freqtrade/tradesv2.dry_run.sqlite" +else + DOCKER_CMD="$DOCKER_CMD \ + -v ~/.freqtrade/tradesv2.sqlite:/freqtrade/tradesv2.sqlite" +fi + +DOCKER_CMD="$DOCKER_CMD freqtrade" + +echo 'Starting container' +eval $DOCKER_CMD \ > /dev/null \ + && echo 'Container ready' \ + || echo 'Problem starting container' + +exit 0 + +docker run -d \ + --name freqtrade \ + -v ~/.freqtrade/config.json:/freqtrade/config.json \ + -v ~/.freqtrade/tradesv2.dry_run.sqlite:/freqtrade/tradesv2.dry_run.sqlite \ + freqtrade diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 84c86f816..ecac558c9 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -45,6 +45,7 @@ def init(config: dict) -> None: CommandHandler('stop', _stop), CommandHandler('forcesell', _forcesell), CommandHandler('performance', _performance), + CommandHandler('count', _count), CommandHandler('help', _help), ] for handle in handles: @@ -310,6 +311,29 @@ def _performance(bot: Bot, update: Update) -> None: send_msg(message, parse_mode=ParseMode.HTML) +@authorized_only +def _count(bot: Bot, update: Update) -> None: + """ + Handler for /count. + Returns the number of trades running + :param bot: telegram bot + :param update: message update + :return: None + """ + if get_state() != State.RUNNING: + send_msg('`trader is not running`', bot=bot) + return + + trades = Trade.query.filter(Trade.is_open.is_(True)).all() + + current_trades_count = len(trades) + max_trades_count = _CONF['max_open_trades'] + + message = 'Count:\ncurrent/max\n{}/{}\n'.format(current_trades_count, max_trades_count) + logger.debug(message) + send_msg(message, parse_mode=ParseMode.HTML) + + @authorized_only def _help(bot: Bot, update: Update) -> None: """