diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index 52b1d6aca..f907a53b2 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -48,8 +48,8 @@ def generate_text_table( tabular_data.append([ pair, len(result.index), - '{:.2f}%'.format(result.profit.mean() * 100.0), - '{:.08f} {}'.format(result.profit.sum(), stake_currency), + '{:.2f}%'.format(result.profit_percent.mean() * 100.0), + '{:.08f} {}'.format(result.profit_BTC.sum(), stake_currency), '{:.2f}'.format(result.duration.mean() * ticker_interval), ]) @@ -57,8 +57,8 @@ def generate_text_table( tabular_data.append([ 'TOTAL', len(results.index), - '{:.2f}%'.format(results.profit.mean() * 100.0), - '{:.08f} {}'.format(results.profit.sum(), stake_currency), + '{:.2f}%'.format(results.profit_percent.mean() * 100.0), + '{:.08f} {}'.format(results.profit_BTC.sum(), stake_currency), '{:.2f}'.format(results.duration.mean() * ticker_interval), ]) return tabulate(tabular_data, headers=headers) @@ -98,8 +98,9 @@ def backtest(config: Dict, processed: Dict[str, DataFrame], trade = Trade( open_rate=row.close, open_date=row.date, - amount=config['stake_amount'], - fee=exchange.get_fee() * 2 + stake_amount=config['stake_amount'], + amount= config['stake_amount'] / row.open, + fee=exchange.get_fee() ) # calculate win/lose forwards from buy point @@ -109,12 +110,13 @@ def backtest(config: Dict, processed: Dict[str, DataFrame], trade_count_lock[row2.date] = trade_count_lock.get(row2.date, 0) + 1 if min_roi_reached(trade, row2.close, row2.date) or row2.sell == 1: - current_profit = trade.calc_profit_percent(row2.close) + current_profit_percent = trade.calc_profit_percent(rate=row2.close) + current_profit_BTC = trade.calc_profit(rate=row2.close) lock_pair_until = row2.Index - trades.append((pair, current_profit, row2.Index - row.Index)) + trades.append((pair, current_profit_percent, current_profit_BTC, row2.Index - row.Index)) break - labels = ['currency', 'profit', 'duration'] + labels = ['currency', 'profit_percent', 'profit_BTC', 'duration'] return DataFrame.from_records(trades, columns=labels) diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 8603f7d8c..191ef0f57 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -131,7 +131,7 @@ def optimizer(params): result = format_results(results) - total_profit = results.profit.sum() * 1000 + total_profit = results.profit_percent.sum() * 1000 trade_count = len(results.index) trade_loss = 1 - 0.35 * exp(-(trade_count - TARGET_TRADES) ** 2 / 10 ** 5.2) @@ -144,7 +144,7 @@ def optimizer(params): 'total_profit': total_profit, 'trade_loss': trade_loss, 'profit_loss': profit_loss, - 'avg_profit': results.profit.mean() * 100.0, + 'avg_profit': results.profit_percent.mean() * 100.0, 'avg_duration': results.duration.mean() * 5, 'current_tries': _CURRENT_TRIES, 'total_tries': TOTAL_TRIES, @@ -166,8 +166,8 @@ def format_results(results: DataFrame): return ('Made {:6d} buys. Average profit {: 5.2f}%. ' 'Total profit was {: 7.3f}. Average duration {:5.1f} mins.').format( len(results.index), - results.profit.mean() * 100.0, - results.profit.sum(), + results.profit_percent.mean() * 100.0, + results.profit_BTC.sum(), results.duration.mean() * 5, )