From 6eb70cf75b285fc4917c89f7c96394e00f347048 Mon Sep 17 00:00:00 2001 From: Matthias Date: Tue, 14 Aug 2018 14:30:14 +0200 Subject: [PATCH] set output depending on backtest/backslap type --- freqtrade/optimize/backslapping.py | 3 ++- freqtrade/optimize/backtesting.py | 3 ++- freqtrade/optimize/hyperopt.py | 2 ++ freqtrade/optimize/optimize.py | 9 ++++++++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/freqtrade/optimize/backslapping.py b/freqtrade/optimize/backslapping.py index 6c8e1ae86..ef7596407 100644 --- a/freqtrade/optimize/backslapping.py +++ b/freqtrade/optimize/backslapping.py @@ -6,7 +6,7 @@ from typing import Dict, Any from pandas import DataFrame from freqtrade.exchange import Exchange -from freqtrade.optimize.optimize import IOptimize, BacktestResult, setup_configuration +from freqtrade.optimize.optimize import IOptimize, BacktestResult, OptimizeType, setup_configuration from freqtrade.strategy import IStrategy from freqtrade.strategy.interface import SellType from freqtrade.strategy.resolver import StrategyResolver @@ -24,6 +24,7 @@ class Backslapping(IOptimize): constructor """ super().__init__(config) + self._optimizetype = OptimizeType.BACKTEST self.fee = self.exchange.get_fee() diff --git a/freqtrade/optimize/backtesting.py b/freqtrade/optimize/backtesting.py index e4ed896be..12be5bad1 100644 --- a/freqtrade/optimize/backtesting.py +++ b/freqtrade/optimize/backtesting.py @@ -9,7 +9,7 @@ from typing import Any, Dict, List, Optional from pandas import DataFrame -from freqtrade.optimize.optimize import IOptimize, BacktestResult, setup_configuration +from freqtrade.optimize.optimize import IOptimize, BacktestResult, OptimizeType, setup_configuration from freqtrade.persistence import Trade from freqtrade.strategy.interface import SellType @@ -27,6 +27,7 @@ class Backtesting(IOptimize): def __init__(self, config: Dict[str, Any]) -> None: super().__init__(config) + self._optimizetype = OptimizeType.BACKTEST def _get_sell_trade_entry( self, pair: str, buy_row: DataFrame, diff --git a/freqtrade/optimize/hyperopt.py b/freqtrade/optimize/hyperopt.py index 508dc6bc8..11edf41fb 100644 --- a/freqtrade/optimize/hyperopt.py +++ b/freqtrade/optimize/hyperopt.py @@ -24,6 +24,7 @@ import freqtrade.vendor.qtpylib.indicators as qtpylib from freqtrade.arguments import Arguments from freqtrade.configuration import Configuration from freqtrade.optimize import load_data +from freqtrade.optimize.optimize import OptimizeType from freqtrade.optimize.backtesting import Backtesting logger = logging.getLogger(__name__) @@ -42,6 +43,7 @@ class Hyperopt(Backtesting): """ def __init__(self, config: Dict[str, Any]) -> None: super().__init__(config) + self._optimizetype = OptimizeType.HYPEROPT # set TARGET_TRADES to suit your number concurrent trades so its realistic # to the number of days self.target_trades = 600 diff --git a/freqtrade/optimize/optimize.py b/freqtrade/optimize/optimize.py index 4e3d0ce6b..18190478a 100644 --- a/freqtrade/optimize/optimize.py +++ b/freqtrade/optimize/optimize.py @@ -11,6 +11,7 @@ from copy import deepcopy from datetime import datetime, timedelta from pathlib import Path from typing import Any, Dict, List, NamedTuple, Optional, Tuple +from enum import Enum import arrow from pandas import DataFrame @@ -46,6 +47,12 @@ class BacktestResult(NamedTuple): sell_reason: SellType +class OptimizeType(Enum): + BACKTEST = "backtest" + BACKSLAP = "backslap" + HYPEROPT = "hyperopt" + + class IOptimize(ABC): """ Backtesting Abstract class, this class contains all the logic to run a backtest @@ -269,7 +276,7 @@ class IOptimize(ABC): strategy if len(self.strategylist) > 1 else None) print(f"Result for strategy {strategy}") - print(' BACKTESTING REPORT '.center(119, '=')) + print(f' {self._optimizetype.value.upper()} REPORT '.center(119, '=')) print(self._generate_text_table(data, results)) print(' SELL REASON STATS '.center(119, '='))