We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Hyperopt confusing warning message
## Step 1: Describe your environment

  * Operating system: Windows 10
  * Python Version: 3.7.5 (`python -V`)
  * Branch: freqtrade develop-1aa1fada
  
## Step 2: Describe the problem:

When hyperopting with the following command: `freqtrade hyperopt -c test_config.json --hyperopt strategy_hyperopt -e 750--spaces buy sell stoploss trailing -–min-trades=20 –-timerange=20200111-20200510 –j 2 --no-color` 

I get the following warning messages:
![image](https://user-images.githubusercontent.com/24569139/82764678-db0dc700-9e10-11ea-9679-a9efc64f6207.png)

I didn't include the 'normal' buy/sell trends in the hyperopt file, but since I am using the buy/sell trends generated by the hyperopt file, these messages can be confusing. It's taking the 'normal' buy/sell trends from the original strategy file, but it doesn't use it anyway.


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `freqtrade/resolvers/hyperopt_resolver.py`
Content:
```
1 # pragma pylint: disable=attribute-defined-outside-init
2 
3 """
4 This module load custom hyperopt
5 """
6 import logging
7 from pathlib import Path
8 from typing import Dict
9 
10 from freqtrade.constants import DEFAULT_HYPEROPT_LOSS, USERPATH_HYPEROPTS
11 from freqtrade.exceptions import OperationalException
12 from freqtrade.optimize.hyperopt_interface import IHyperOpt
13 from freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss
14 from freqtrade.resolvers import IResolver
15 
16 logger = logging.getLogger(__name__)
17 
18 
19 class HyperOptResolver(IResolver):
20     """
21     This class contains all the logic to load custom hyperopt class
22     """
23     object_type = IHyperOpt
24     object_type_str = "Hyperopt"
25     user_subdir = USERPATH_HYPEROPTS
26     initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve()
27 
28     @staticmethod
29     def load_hyperopt(config: Dict) -> IHyperOpt:
30         """
31         Load the custom hyperopt class from config parameter
32         :param config: configuration dictionary
33         """
34         if not config.get('hyperopt'):
35             raise OperationalException("No Hyperopt set. Please use `--hyperopt` to specify "
36                                        "the Hyperopt class to use.")
37 
38         hyperopt_name = config['hyperopt']
39 
40         hyperopt = HyperOptResolver.load_object(hyperopt_name, config,
41                                                 kwargs={'config': config},
42                                                 extra_dir=config.get('hyperopt_path'))
43 
44         if not hasattr(hyperopt, 'populate_indicators'):
45             logger.warning("Hyperopt class does not provide populate_indicators() method. "
46                            "Using populate_indicators from the strategy.")
47         if not hasattr(hyperopt, 'populate_buy_trend'):
48             logger.warning("Hyperopt class does not provide populate_buy_trend() method. "
49                            "Using populate_buy_trend from the strategy.")
50         if not hasattr(hyperopt, 'populate_sell_trend'):
51             logger.warning("Hyperopt class does not provide populate_sell_trend() method. "
52                            "Using populate_sell_trend from the strategy.")
53         return hyperopt
54 
55 
56 class HyperOptLossResolver(IResolver):
57     """
58     This class contains all the logic to load custom hyperopt loss class
59     """
60     object_type = IHyperOptLoss
61     object_type_str = "HyperoptLoss"
62     user_subdir = USERPATH_HYPEROPTS
63     initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve()
64 
65     @staticmethod
66     def load_hyperoptloss(config: Dict) -> IHyperOptLoss:
67         """
68         Load the custom class from config parameter
69         :param config: configuration dictionary
70         """
71 
72         # Verify the hyperopt_loss is in the configuration, otherwise fallback to the
73         # default hyperopt loss
74         hyperoptloss_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS
75 
76         hyperoptloss = HyperOptLossResolver.load_object(hyperoptloss_name,
77                                                         config, kwargs={},
78                                                         extra_dir=config.get('hyperopt_path'))
79 
80         # Assign timeframe to be used in hyperopt
81         hyperoptloss.__class__.ticker_interval = str(config['timeframe'])
82         hyperoptloss.__class__.timeframe = str(config['timeframe'])
83 
84         if not hasattr(hyperoptloss, 'hyperopt_loss_function'):
85             raise OperationalException(
86                 f"Found HyperoptLoss class {hyperoptloss_name} does not "
87                 "implement `hyperopt_loss_function`.")
88         return hyperoptloss
89
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py
--- a/freqtrade/resolvers/hyperopt_resolver.py
+++ b/freqtrade/resolvers/hyperopt_resolver.py
@@ -42,14 +42,14 @@
                                                 extra_dir=config.get('hyperopt_path'))
 
         if not hasattr(hyperopt, 'populate_indicators'):
-            logger.warning("Hyperopt class does not provide populate_indicators() method. "
-                           "Using populate_indicators from the strategy.")
+            logger.info("Hyperopt class does not provide populate_indicators() method. "
+                        "Using populate_indicators from the strategy.")
         if not hasattr(hyperopt, 'populate_buy_trend'):
-            logger.warning("Hyperopt class does not provide populate_buy_trend() method. "
-                           "Using populate_buy_trend from the strategy.")
+            logger.info("Hyperopt class does not provide populate_buy_trend() method. "
+                        "Using populate_buy_trend from the strategy.")
         if not hasattr(hyperopt, 'populate_sell_trend'):
-            logger.warning("Hyperopt class does not provide populate_sell_trend() method. "
-                           "Using populate_sell_trend from the strategy.")
+            logger.info("Hyperopt class does not provide populate_sell_trend() method. "
+                        "Using populate_sell_trend from the strategy.")
         return hyperopt

{"golden_diff": "diff --git a/freqtrade/resolvers/hyperopt_resolver.py b/freqtrade/resolvers/hyperopt_resolver.py\n--- a/freqtrade/resolvers/hyperopt_resolver.py\n+++ b/freqtrade/resolvers/hyperopt_resolver.py\n@@ -42,14 +42,14 @@\n                                                 extra_dir=config.get('hyperopt_path'))\n \n         if not hasattr(hyperopt, 'populate_indicators'):\n-            logger.warning(\"Hyperopt class does not provide populate_indicators() method. \"\n-                           \"Using populate_indicators from the strategy.\")\n+            logger.info(\"Hyperopt class does not provide populate_indicators() method. \"\n+                        \"Using populate_indicators from the strategy.\")\n         if not hasattr(hyperopt, 'populate_buy_trend'):\n-            logger.warning(\"Hyperopt class does not provide populate_buy_trend() method. \"\n-                           \"Using populate_buy_trend from the strategy.\")\n+            logger.info(\"Hyperopt class does not provide populate_buy_trend() method. \"\n+                        \"Using populate_buy_trend from the strategy.\")\n         if not hasattr(hyperopt, 'populate_sell_trend'):\n-            logger.warning(\"Hyperopt class does not provide populate_sell_trend() method. \"\n-                           \"Using populate_sell_trend from the strategy.\")\n+            logger.info(\"Hyperopt class does not provide populate_sell_trend() method. \"\n+                        \"Using populate_sell_trend from the strategy.\")\n         return hyperopt\n", "issue": "Hyperopt confusing warning message\n## Step 1: Describe your environment\r\n\r\n  * Operating system: Windows 10\r\n  * Python Version: 3.7.5 (`python -V`)\r\n  * Branch: freqtrade develop-1aa1fada\r\n  \r\n## Step 2: Describe the problem:\r\n\r\nWhen hyperopting with the following command: `freqtrade hyperopt -c test_config.json --hyperopt strategy_hyperopt -e 750--spaces buy sell stoploss trailing -\u2013min-trades=20 \u2013-timerange=20200111-20200510 \u2013j 2 --no-color` \r\n\r\nI get the following warning messages:\r\n![image](https://user-images.githubusercontent.com/24569139/82764678-db0dc700-9e10-11ea-9679-a9efc64f6207.png)\r\n\r\nI didn't include the 'normal' buy/sell trends in the hyperopt file, but since I am using the buy/sell trends generated by the hyperopt file, these messages can be confusing. It's taking the 'normal' buy/sell trends from the original strategy file, but it doesn't use it anyway.\r\n\n", "before_files": [{"content": "# pragma pylint: disable=attribute-defined-outside-init\n\n\"\"\"\nThis module load custom hyperopt\n\"\"\"\nimport logging\nfrom pathlib import Path\nfrom typing import Dict\n\nfrom freqtrade.constants import DEFAULT_HYPEROPT_LOSS, USERPATH_HYPEROPTS\nfrom freqtrade.exceptions import OperationalException\nfrom freqtrade.optimize.hyperopt_interface import IHyperOpt\nfrom freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss\nfrom freqtrade.resolvers import IResolver\n\nlogger = logging.getLogger(__name__)\n\n\nclass HyperOptResolver(IResolver):\n    \"\"\"\n    This class contains all the logic to load custom hyperopt class\n    \"\"\"\n    object_type = IHyperOpt\n    object_type_str = \"Hyperopt\"\n    user_subdir = USERPATH_HYPEROPTS\n    initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve()\n\n    @staticmethod\n    def load_hyperopt(config: Dict) -> IHyperOpt:\n        \"\"\"\n        Load the custom hyperopt class from config parameter\n        :param config: configuration dictionary\n        \"\"\"\n        if not config.get('hyperopt'):\n            raise OperationalException(\"No Hyperopt set. Please use `--hyperopt` to specify \"\n                                       \"the Hyperopt class to use.\")\n\n        hyperopt_name = config['hyperopt']\n\n        hyperopt = HyperOptResolver.load_object(hyperopt_name, config,\n                                                kwargs={'config': config},\n                                                extra_dir=config.get('hyperopt_path'))\n\n        if not hasattr(hyperopt, 'populate_indicators'):\n            logger.warning(\"Hyperopt class does not provide populate_indicators() method. \"\n                           \"Using populate_indicators from the strategy.\")\n        if not hasattr(hyperopt, 'populate_buy_trend'):\n            logger.warning(\"Hyperopt class does not provide populate_buy_trend() method. \"\n                           \"Using populate_buy_trend from the strategy.\")\n        if not hasattr(hyperopt, 'populate_sell_trend'):\n            logger.warning(\"Hyperopt class does not provide populate_sell_trend() method. \"\n                           \"Using populate_sell_trend from the strategy.\")\n        return hyperopt\n\n\nclass HyperOptLossResolver(IResolver):\n    \"\"\"\n    This class contains all the logic to load custom hyperopt loss class\n    \"\"\"\n    object_type = IHyperOptLoss\n    object_type_str = \"HyperoptLoss\"\n    user_subdir = USERPATH_HYPEROPTS\n    initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve()\n\n    @staticmethod\n    def load_hyperoptloss(config: Dict) -> IHyperOptLoss:\n        \"\"\"\n        Load the custom class from config parameter\n        :param config: configuration dictionary\n        \"\"\"\n\n        # Verify the hyperopt_loss is in the configuration, otherwise fallback to the\n        # default hyperopt loss\n        hyperoptloss_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS\n\n        hyperoptloss = HyperOptLossResolver.load_object(hyperoptloss_name,\n                                                        config, kwargs={},\n                                                        extra_dir=config.get('hyperopt_path'))\n\n        # Assign timeframe to be used in hyperopt\n        hyperoptloss.__class__.ticker_interval = str(config['timeframe'])\n        hyperoptloss.__class__.timeframe = str(config['timeframe'])\n\n        if not hasattr(hyperoptloss, 'hyperopt_loss_function'):\n            raise OperationalException(\n                f\"Found HyperoptLoss class {hyperoptloss_name} does not \"\n                \"implement `hyperopt_loss_function`.\")\n        return hyperoptloss\n", "path": "freqtrade/resolvers/hyperopt_resolver.py"}], "after_files": [{"content": "# pragma pylint: disable=attribute-defined-outside-init\n\n\"\"\"\nThis module load custom hyperopt\n\"\"\"\nimport logging\nfrom pathlib import Path\nfrom typing import Dict\n\nfrom freqtrade.constants import DEFAULT_HYPEROPT_LOSS, USERPATH_HYPEROPTS\nfrom freqtrade.exceptions import OperationalException\nfrom freqtrade.optimize.hyperopt_interface import IHyperOpt\nfrom freqtrade.optimize.hyperopt_loss_interface import IHyperOptLoss\nfrom freqtrade.resolvers import IResolver\n\nlogger = logging.getLogger(__name__)\n\n\nclass HyperOptResolver(IResolver):\n    \"\"\"\n    This class contains all the logic to load custom hyperopt class\n    \"\"\"\n    object_type = IHyperOpt\n    object_type_str = \"Hyperopt\"\n    user_subdir = USERPATH_HYPEROPTS\n    initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve()\n\n    @staticmethod\n    def load_hyperopt(config: Dict) -> IHyperOpt:\n        \"\"\"\n        Load the custom hyperopt class from config parameter\n        :param config: configuration dictionary\n        \"\"\"\n        if not config.get('hyperopt'):\n            raise OperationalException(\"No Hyperopt set. Please use `--hyperopt` to specify \"\n                                       \"the Hyperopt class to use.\")\n\n        hyperopt_name = config['hyperopt']\n\n        hyperopt = HyperOptResolver.load_object(hyperopt_name, config,\n                                                kwargs={'config': config},\n                                                extra_dir=config.get('hyperopt_path'))\n\n        if not hasattr(hyperopt, 'populate_indicators'):\n            logger.info(\"Hyperopt class does not provide populate_indicators() method. \"\n                        \"Using populate_indicators from the strategy.\")\n        if not hasattr(hyperopt, 'populate_buy_trend'):\n            logger.info(\"Hyperopt class does not provide populate_buy_trend() method. \"\n                        \"Using populate_buy_trend from the strategy.\")\n        if not hasattr(hyperopt, 'populate_sell_trend'):\n            logger.info(\"Hyperopt class does not provide populate_sell_trend() method. \"\n                        \"Using populate_sell_trend from the strategy.\")\n        return hyperopt\n\n\nclass HyperOptLossResolver(IResolver):\n    \"\"\"\n    This class contains all the logic to load custom hyperopt loss class\n    \"\"\"\n    object_type = IHyperOptLoss\n    object_type_str = \"HyperoptLoss\"\n    user_subdir = USERPATH_HYPEROPTS\n    initial_search_path = Path(__file__).parent.parent.joinpath('optimize').resolve()\n\n    @staticmethod\n    def load_hyperoptloss(config: Dict) -> IHyperOptLoss:\n        \"\"\"\n        Load the custom class from config parameter\n        :param config: configuration dictionary\n        \"\"\"\n\n        # Verify the hyperopt_loss is in the configuration, otherwise fallback to the\n        # default hyperopt loss\n        hyperoptloss_name = config.get('hyperopt_loss') or DEFAULT_HYPEROPT_LOSS\n\n        hyperoptloss = HyperOptLossResolver.load_object(hyperoptloss_name,\n                                                        config, kwargs={},\n                                                        extra_dir=config.get('hyperopt_path'))\n\n        # Assign timeframe to be used in hyperopt\n        hyperoptloss.__class__.ticker_interval = str(config['timeframe'])\n        hyperoptloss.__class__.timeframe = str(config['timeframe'])\n\n        if not hasattr(hyperoptloss, 'hyperopt_loss_function'):\n            raise OperationalException(\n                f\"Found HyperoptLoss class {hyperoptloss_name} does not \"\n                \"implement `hyperopt_loss_function`.\")\n        return hyperoptloss\n", "path": "freqtrade/resolvers/hyperopt_resolver.py"}]}