merged order book

This commit is contained in:
Gert Wohlgemuth
2018-06-12 09:46:23 -07:00
65 changed files with 1366 additions and 961 deletions

View File

@@ -2,13 +2,14 @@
This module contains class to define a RPC communications
"""
import logging
from datetime import datetime, timedelta
from datetime import datetime, timedelta, date
from decimal import Decimal
from typing import Tuple, Any
from typing import Dict, Tuple, Any
import arrow
import sqlalchemy as sql
from pandas import DataFrame
from numpy import mean, nan_to_num
from freqtrade import exchange
from freqtrade.misc import shorten_date
@@ -117,7 +118,7 @@ class RPC(object):
self, timescale: int,
stake_currency: str, fiat_display_currency: str) -> Tuple[bool, Any]:
today = datetime.utcnow().date()
profit_days = {}
profit_days: Dict[date, Dict] = {}
if not (isinstance(timescale, int) and timescale > 0):
return True, '*Daily [n]:* `must be an integer greater than 0`'
@@ -175,7 +176,7 @@ class RPC(object):
durations = []
for trade in trades:
current_rate = None
current_rate: float = 0.0
if not trade.open_rate:
continue
@@ -212,14 +213,14 @@ class RPC(object):
fiat = self.freqtrade.fiat_converter
# Prepare data to display
profit_closed_coin = round(sum(profit_closed_coin), 8)
profit_closed_percent = round(sum(profit_closed_percent) * 100, 2)
profit_closed_percent = round(nan_to_num(mean(profit_closed_percent)) * 100, 2)
profit_closed_fiat = fiat.convert_amount(
profit_closed_coin,
stake_currency,
fiat_display_currency
)
profit_all_coin = round(sum(profit_all_coin), 8)
profit_all_percent = round(sum(profit_all_percent) * 100, 2)
profit_all_percent = round(nan_to_num(mean(profit_all_percent)) * 100, 2)
profit_all_fiat = fiat.convert_amount(
profit_all_coin,
stake_currency,
@@ -281,7 +282,7 @@ class RPC(object):
value = fiat.convert_amount(total, 'BTC', symbol)
return False, (output, total, symbol, value)
def rpc_start(self) -> (bool, str):
def rpc_start(self) -> Tuple[bool, str]:
"""
Handler for start.
"""
@@ -291,7 +292,7 @@ class RPC(object):
self.freqtrade.state = State.RUNNING
return False, '`Starting trader ...`'
def rpc_stop(self) -> (bool, str):
def rpc_stop(self) -> Tuple[bool, str]:
"""
Handler for stop.
"""
@@ -356,6 +357,7 @@ class RPC(object):
return True, 'Invalid argument.'
_exec_forcesell(trade)
Trade.session.flush()
return False, ''
def rpc_performance(self) -> Tuple[bool, Any]:

View File

@@ -1,6 +1,7 @@
"""
This module contains class to manage RPC communications (Telegram, Slack, ...)
"""
from typing import Any, List
import logging
from freqtrade.rpc.telegram import Telegram
@@ -21,8 +22,8 @@ class RPCManager(object):
"""
self.freqtrade = freqtrade
self.registered_modules = []
self.telegram = None
self.registered_modules: List[str] = []
self.telegram: Any = None
self._init()
def _init(self) -> None:

View File

@@ -18,7 +18,7 @@ from freqtrade.rpc.rpc import RPC
logger = logging.getLogger(__name__)
def authorized_only(command_handler: Callable[[Bot, Update], None]) -> Callable[..., Any]:
def authorized_only(command_handler: Callable[[Any, Bot, Update], None]) -> Callable[..., Any]:
"""
Decorator to check if the message comes from the correct chat_id
:param command_handler: Telegram CommandHandler
@@ -65,7 +65,7 @@ class Telegram(RPC):
"""
super().__init__(freqtrade)
self._updater = None
self._updater: Updater = None
self._config = freqtrade.config
self._init()