From b27d3e6ef06cdcfe7810f66991c3fa3bbfbc9a49 Mon Sep 17 00:00:00 2001 From: Nullart Date: Thu, 21 Jun 2018 19:37:51 +0800 Subject: [PATCH] experimental.sell_fullfilled_at_roi bug fix for 0 duration --- freqtrade/analyze.py | 13 +++++++++---- freqtrade/constants.py | 2 +- freqtrade/freqtradebot.py | 3 +-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/freqtrade/analyze.py b/freqtrade/analyze.py index 3a2392599..cec77f053 100644 --- a/freqtrade/analyze.py +++ b/freqtrade/analyze.py @@ -146,7 +146,6 @@ class Analyze(object): latest = dataframe.iloc[-1] - # Check if dataframe is out of date signal_date = arrow.get(latest['date']) interval_minutes = constants.TICKER_INTERVAL_MINUTES[interval] @@ -253,10 +252,16 @@ class Analyze(object): import math return math.floor(f * 10 ** n) / 10 ** n - def get_roi_rate(self, trade: Trade) -> float: + def get_roi_rate(self, trade: Trade, sell_rate: float) -> float: + """ + Calculates sell rate based on roi + """ current_time = datetime.utcnow() time_diff = (current_time.timestamp() - trade.open_date.timestamp()) / 60 for duration, threshold in self.strategy.minimal_roi.items(): if time_diff > duration: - roi_rate = (trade.open_rate * (1 + threshold)) * (1+(2.1*get_fee(trade.pair))) - return self.trunc_num(roi_rate, 8) \ No newline at end of file + roi_rate = self.trunc_num((trade.open_rate * (1 + threshold)) * (1+(2.1*get_fee(trade.pair))), 8) + logger.info('trying to selling at roi rate %0.8f', roi_rate) + return roi_rate + break + return sell_rate diff --git a/freqtrade/constants.py b/freqtrade/constants.py index e2d8e6a28..e8ecafc2f 100644 --- a/freqtrade/constants.py +++ b/freqtrade/constants.py @@ -93,7 +93,7 @@ CONF_SCHEMA = { 'properties': { 'use_sell_signal': {'type': 'boolean'}, 'sell_profit_only': {'type': 'boolean'}, - 'sell_fullfilled_at_roi' : {'type': 'boolean'} + 'sell_fullfilled_at_roi': {'type': 'boolean'} } }, 'telegram': { diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index c5d4b8c6b..b79c0624f 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -466,8 +466,7 @@ with limit `{buy_limit:.8f} ({stake_amount:.6f} \ is_set_fullfilled_at_roi = self.config.get('experimental', {}).get('sell_fullfilled_at_roi', False) if is_set_fullfilled_at_roi: - sell_rate = self.analyze.get_roi_rate(trade) - logger.info('trying to selling at roi rate %0.8f', sell_rate) + sell_rate = self.analyze.get_roi_rate(trade, sell_rate) if 'ask_strategy' in self.config and self.config['ask_strategy'].get('use_book_order', False): logger.info('Using order book for selling...')