From 133ba5d6a1856d2bfdc1623c63f8b3ab4972cf1f Mon Sep 17 00:00:00 2001 From: misagh Date: Tue, 6 Nov 2018 19:16:20 +0100 Subject: [PATCH] =?UTF-8?q?moving=20stop=20loss=20range=20to=20init=20as?= =?UTF-8?q?=20it=20doesn=E2=80=99t=20need=20to=20be=20called=20on=20each?= =?UTF-8?q?=20iteration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- freqtrade/edge/__init__.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/freqtrade/edge/__init__.py b/freqtrade/edge/__init__.py index 81d3d7c99..748f95a6e 100644 --- a/freqtrade/edge/__init__.py +++ b/freqtrade/edge/__init__.py @@ -20,6 +20,13 @@ logger = logging.getLogger(__name__) class Edge(): + """ + Calculates Win Rate, Risk Reward Ratio, Expectancy + against historical data for a give set of markets and a strategy + it then adjusts stoploss and position size accordingly + and force it into the strategy + Author: https://github.com/mishaker + """ config: Dict = {} _cached_pairs: Dict[str, Any] = {} # Keeps a list of pairs @@ -49,6 +56,17 @@ class Edge(): self._since_number_of_days: int = self.edge_config.get('calculate_since_number_of_days', 14) self._last_updated: int = 0 # Timestamp of pairs last updated time + self._stoploss_range_min = float(self.edge_config.get('stoploss_range_min', -0.01)) + self._stoploss_range_max = float(self.edge_config.get('stoploss_range_max', -0.05)) + self._stoploss_range_step = float(self.edge_config.get('stoploss_range_step', -0.001)) + + # calculating stoploss range + self._stoploss_range = np.arange( + self._stoploss_range_min, + self._stoploss_range_max, + self._stoploss_range_step + ) + self._timerange: TimeRange = Arguments.parse_timerange("%s-" % arrow.now().shift( days=-1 * self._since_number_of_days).format('YYYYMMDD')) @@ -91,11 +109,6 @@ class Edge(): ) headers = ['date', 'buy', 'open', 'close', 'sell', 'high', 'low'] - stoploss_range_min = float(self.edge_config.get('stoploss_range_min', -0.01)) - stoploss_range_max = float(self.edge_config.get('stoploss_range_max', -0.05)) - stoploss_range_step = float(self.edge_config.get('stoploss_range_step', -0.001)) - stoploss_range = np.arange(stoploss_range_min, stoploss_range_max, stoploss_range_step) - trades: list = [] for pair, pair_data in preprocessed.items(): # Sorting dataframe by date and reset index @@ -105,7 +118,7 @@ class Edge(): ticker_data = self.advise_sell( self.advise_buy(pair_data, {'pair': pair}), {'pair': pair})[headers].copy() - trades += self._find_trades_for_stoploss_range(ticker_data, pair, stoploss_range) + trades += self._find_trades_for_stoploss_range(ticker_data, pair, self._stoploss_range) # If no trade found then exit if len(trades) == 0: