We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Strategy list is space separated
`--strategy-list Strat1,Strat2` produces an error while `--strategy-list Strat1 Strat2` works

It became a space separated list somehow while its description states it's a comma-separated list:
```
  --strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
                        Provide **a comma-separated list** of strategies to
                        backtest. Please note that ticker-interval needs to be
                        set either in config or via command line. When using
                        this together with `--export trades`, the strategy-
                        name is injected into the filename (so `backtest-
                        data.json` becomes `backtest-data-
                        DefaultStrategy.json`
```

Which direction this should be fixed to?


--- 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/configuration/cli_options.py`
Content:
```
1 """
2 Definition of cli arguments used in arguments.py
3 """
4 import argparse
5 import os
6 
7 from freqtrade import __version__, constants
8 
9 
10 def check_int_positive(value: str) -> int:
11     try:
12         uint = int(value)
13         if uint <= 0:
14             raise ValueError
15     except ValueError:
16         raise argparse.ArgumentTypeError(
17             f"{value} is invalid for this parameter, should be a positive integer value"
18         )
19     return uint
20 
21 
22 class Arg:
23     # Optional CLI arguments
24     def __init__(self, *args, **kwargs):
25         self.cli = args
26         self.kwargs = kwargs
27 
28 
29 # List of available command line options
30 AVAILABLE_CLI_OPTIONS = {
31     # Common options
32     "verbosity": Arg(
33         '-v', '--verbose',
34         help='Verbose mode (-vv for more, -vvv to get all messages).',
35         action='count',
36         default=0,
37     ),
38     "logfile": Arg(
39         '--logfile',
40         help='Log to the file specified.',
41         metavar='FILE',
42     ),
43     "version": Arg(
44         '-V', '--version',
45         action='version',
46         version=f'%(prog)s {__version__}',
47     ),
48     "config": Arg(
49         '-c', '--config',
50         help=f'Specify configuration file (default: `{constants.DEFAULT_CONFIG}`). '
51         f'Multiple --config options may be used. '
52         f'Can be set to `-` to read config from stdin.',
53         action='append',
54         metavar='PATH',
55     ),
56     "datadir": Arg(
57         '-d', '--datadir',
58         help='Path to backtest data.',
59         metavar='PATH',
60     ),
61     # Main options
62     "strategy": Arg(
63         '-s', '--strategy',
64         help='Specify strategy class name (default: `%(default)s`).',
65         metavar='NAME',
66         default='DefaultStrategy',
67     ),
68     "strategy_path": Arg(
69         '--strategy-path',
70         help='Specify additional strategy lookup path.',
71         metavar='PATH',
72     ),
73     "db_url": Arg(
74         '--db-url',
75         help=f'Override trades database URL, this is useful in custom deployments '
76         f'(default: `{constants.DEFAULT_DB_PROD_URL}` for Live Run mode, '
77         f'`{constants.DEFAULT_DB_DRYRUN_URL}` for Dry Run).',
78         metavar='PATH',
79     ),
80     "sd_notify": Arg(
81         '--sd-notify',
82         help='Notify systemd service manager.',
83         action='store_true',
84     ),
85     # Optimize common
86     "ticker_interval": Arg(
87         '-i', '--ticker-interval',
88         help='Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`).',
89     ),
90     "timerange": Arg(
91         '--timerange',
92         help='Specify what timerange of data to use.',
93     ),
94     "max_open_trades": Arg(
95         '--max_open_trades',
96         help='Specify max_open_trades to use.',
97         type=int,
98         metavar='INT',
99     ),
100     "stake_amount": Arg(
101         '--stake_amount',
102         help='Specify stake_amount.',
103         type=float,
104     ),
105     "refresh_pairs": Arg(
106         '-r', '--refresh-pairs-cached',
107         help='Refresh the pairs files in tests/testdata with the latest data from the '
108         'exchange. Use it if you want to run your optimization commands with '
109         'up-to-date data.',
110         action='store_true',
111     ),
112     # Backtesting
113     "position_stacking": Arg(
114         '--eps', '--enable-position-stacking',
115         help='Allow buying the same pair multiple times (position stacking).',
116         action='store_true',
117         default=False,
118     ),
119     "use_max_market_positions": Arg(
120         '--dmmp', '--disable-max-market-positions',
121         help='Disable applying `max_open_trades` during backtest '
122         '(same as setting `max_open_trades` to a very high number).',
123         action='store_false',
124         default=True,
125     ),
126     "live": Arg(
127         '-l', '--live',
128         help='Use live data.',
129         action='store_true',
130     ),
131     "strategy_list": Arg(
132         '--strategy-list',
133         help='Provide a comma-separated list of strategies to backtest. '
134         'Please note that ticker-interval needs to be set either in config '
135         'or via command line. When using this together with `--export trades`, '
136         'the strategy-name is injected into the filename '
137         '(so `backtest-data.json` becomes `backtest-data-DefaultStrategy.json`',
138         nargs='+',
139     ),
140     "export": Arg(
141         '--export',
142         help='Export backtest results, argument are: trades. '
143         'Example: `--export=trades`',
144     ),
145     "exportfilename": Arg(
146         '--export-filename',
147         help='Save backtest results to the file with this filename (default: `%(default)s`). '
148         'Requires `--export` to be set as well. '
149         'Example: `--export-filename=user_data/backtest_data/backtest_today.json`',
150         metavar='PATH',
151         default=os.path.join('user_data', 'backtest_data',
152                              'backtest-result.json'),
153     ),
154     # Edge
155     "stoploss_range": Arg(
156         '--stoplosses',
157         help='Defines a range of stoploss values against which edge will assess the strategy. '
158         'The format is "min,max,step" (without any space). '
159         'Example: `--stoplosses=-0.01,-0.1,-0.001`',
160     ),
161     # Hyperopt
162     "hyperopt": Arg(
163         '--customhyperopt',
164         help='Specify hyperopt class name (default: `%(default)s`).',
165         metavar='NAME',
166         default=constants.DEFAULT_HYPEROPT,
167     ),
168     "hyperopt_path": Arg(
169         '--hyperopt-path',
170         help='Specify additional lookup path for Hyperopts and Hyperopt Loss functions.',
171         metavar='PATH',
172     ),
173     "epochs": Arg(
174         '-e', '--epochs',
175         help='Specify number of epochs (default: %(default)d).',
176         type=check_int_positive,
177         metavar='INT',
178         default=constants.HYPEROPT_EPOCH,
179     ),
180     "spaces": Arg(
181         '-s', '--spaces',
182         help='Specify which parameters to hyperopt. Space-separated list. '
183         'Default: `%(default)s`.',
184         choices=['all', 'buy', 'sell', 'roi', 'stoploss'],
185         nargs='+',
186         default='all',
187     ),
188     "print_all": Arg(
189         '--print-all',
190         help='Print all results, not only the best ones.',
191         action='store_true',
192         default=False,
193     ),
194     "hyperopt_jobs": Arg(
195         '-j', '--job-workers',
196         help='The number of concurrently running jobs for hyperoptimization '
197         '(hyperopt worker processes). '
198         'If -1 (default), all CPUs are used, for -2, all CPUs but one are used, etc. '
199         'If 1 is given, no parallel computing code is used at all.',
200         type=int,
201         metavar='JOBS',
202         default=-1,
203     ),
204     "hyperopt_random_state": Arg(
205         '--random-state',
206         help='Set random state to some positive integer for reproducible hyperopt results.',
207         type=check_int_positive,
208         metavar='INT',
209     ),
210     "hyperopt_min_trades": Arg(
211         '--min-trades',
212         help="Set minimal desired number of trades for evaluations in the hyperopt "
213         "optimization path (default: 1).",
214         type=check_int_positive,
215         metavar='INT',
216         default=1,
217     ),
218     "hyperopt_continue": Arg(
219         "--continue",
220         help="Continue hyperopt from previous runs. "
221         "By default, temporary files will be removed and hyperopt will start from scratch.",
222         default=False,
223         action='store_true',
224     ),
225     "hyperopt_loss": Arg(
226         '--hyperopt-loss',
227         help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). '
228         'Different functions can generate completely different results, '
229         'since the target for optimization is different. (default: `%(default)s`).',
230         metavar='NAME',
231         default=constants.DEFAULT_HYPEROPT_LOSS,
232     ),
233     # List exchanges
234     "print_one_column": Arg(
235         '-1', '--one-column',
236         help='Print exchanges in one column.',
237         action='store_true',
238     ),
239     # Script options
240     "pairs": Arg(
241         '-p', '--pairs',
242         help='Show profits for only these pairs. Pairs are comma-separated.',
243     ),
244     # Download data
245     "pairs_file": Arg(
246         '--pairs-file',
247         help='File containing a list of pairs to download.',
248         metavar='FILE',
249     ),
250     "days": Arg(
251         '--days',
252         help='Download data for given number of days.',
253         type=check_int_positive,
254         metavar='INT',
255     ),
256     "exchange": Arg(
257         '--exchange',
258         help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). '
259         f'Only valid if no config is provided.',
260     ),
261     "timeframes": Arg(
262         '-t', '--timeframes',
263         help=f'Specify which tickers to download. Space-separated list. '
264         f'Default: `{constants.DEFAULT_DOWNLOAD_TICKER_INTERVALS}`.',
265         choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h',
266                  '6h', '8h', '12h', '1d', '3d', '1w'],
267         nargs='+',
268     ),
269     "erase": Arg(
270         '--erase',
271         help='Clean all existing data for the selected exchange/pairs/timeframes.',
272         action='store_true',
273     ),
274     # Plot dataframe
275     "indicators1": Arg(
276         '--indicators1',
277         help='Set indicators from your strategy you want in the first row of the graph. '
278         'Comma-separated list. Example: `ema3,ema5`. Default: `%(default)s`.',
279         default='sma,ema3,ema5',
280     ),
281     "indicators2": Arg(
282         '--indicators2',
283         help='Set indicators from your strategy you want in the third row of the graph. '
284         'Comma-separated list. Example: `fastd,fastk`. Default: `%(default)s`.',
285         default='macd,macdsignal',
286     ),
287     "plot_limit": Arg(
288         '--plot-limit',
289         help='Specify tick limit for plotting. Notice: too high values cause huge files. '
290         'Default: %(default)s.',
291         type=check_int_positive,
292         metavar='INT',
293         default=750,
294     ),
295     "trade_source": Arg(
296         '--trade-source',
297         help='Specify the source for trades (Can be DB or file (backtest file)) '
298         'Default: %(default)s',
299         choices=["DB", "file"],
300         default="file",
301     ),
302 }
303
```
--- 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/configuration/cli_options.py b/freqtrade/configuration/cli_options.py
--- a/freqtrade/configuration/cli_options.py
+++ b/freqtrade/configuration/cli_options.py
@@ -130,7 +130,7 @@
     ),
     "strategy_list": Arg(
         '--strategy-list',
-        help='Provide a comma-separated list of strategies to backtest. '
+        help='Provide a space-separated list of strategies to backtest. '
         'Please note that ticker-interval needs to be set either in config '
         'or via command line. When using this together with `--export trades`, '
         'the strategy-name is injected into the filename '

{"golden_diff": "diff --git a/freqtrade/configuration/cli_options.py b/freqtrade/configuration/cli_options.py\n--- a/freqtrade/configuration/cli_options.py\n+++ b/freqtrade/configuration/cli_options.py\n@@ -130,7 +130,7 @@\n     ),\n     \"strategy_list\": Arg(\n         '--strategy-list',\n-        help='Provide a comma-separated list of strategies to backtest. '\n+        help='Provide a space-separated list of strategies to backtest. '\n         'Please note that ticker-interval needs to be set either in config '\n         'or via command line. When using this together with `--export trades`, '\n         'the strategy-name is injected into the filename '\n", "issue": "Strategy list is space separated\n`--strategy-list Strat1,Strat2` produces an error while `--strategy-list Strat1 Strat2` works\r\n\r\nIt became a space separated list somehow while its description states it's a comma-separated list:\r\n```\r\n  --strategy-list STRATEGY_LIST [STRATEGY_LIST ...]\r\n                        Provide **a comma-separated list** of strategies to\r\n                        backtest. Please note that ticker-interval needs to be\r\n                        set either in config or via command line. When using\r\n                        this together with `--export trades`, the strategy-\r\n                        name is injected into the filename (so `backtest-\r\n                        data.json` becomes `backtest-data-\r\n                        DefaultStrategy.json`\r\n```\r\n\r\nWhich direction this should be fixed to?\r\n\n", "before_files": [{"content": "\"\"\"\nDefinition of cli arguments used in arguments.py\n\"\"\"\nimport argparse\nimport os\n\nfrom freqtrade import __version__, constants\n\n\ndef check_int_positive(value: str) -> int:\n    try:\n        uint = int(value)\n        if uint <= 0:\n            raise ValueError\n    except ValueError:\n        raise argparse.ArgumentTypeError(\n            f\"{value} is invalid for this parameter, should be a positive integer value\"\n        )\n    return uint\n\n\nclass Arg:\n    # Optional CLI arguments\n    def __init__(self, *args, **kwargs):\n        self.cli = args\n        self.kwargs = kwargs\n\n\n# List of available command line options\nAVAILABLE_CLI_OPTIONS = {\n    # Common options\n    \"verbosity\": Arg(\n        '-v', '--verbose',\n        help='Verbose mode (-vv for more, -vvv to get all messages).',\n        action='count',\n        default=0,\n    ),\n    \"logfile\": Arg(\n        '--logfile',\n        help='Log to the file specified.',\n        metavar='FILE',\n    ),\n    \"version\": Arg(\n        '-V', '--version',\n        action='version',\n        version=f'%(prog)s {__version__}',\n    ),\n    \"config\": Arg(\n        '-c', '--config',\n        help=f'Specify configuration file (default: `{constants.DEFAULT_CONFIG}`). '\n        f'Multiple --config options may be used. '\n        f'Can be set to `-` to read config from stdin.',\n        action='append',\n        metavar='PATH',\n    ),\n    \"datadir\": Arg(\n        '-d', '--datadir',\n        help='Path to backtest data.',\n        metavar='PATH',\n    ),\n    # Main options\n    \"strategy\": Arg(\n        '-s', '--strategy',\n        help='Specify strategy class name (default: `%(default)s`).',\n        metavar='NAME',\n        default='DefaultStrategy',\n    ),\n    \"strategy_path\": Arg(\n        '--strategy-path',\n        help='Specify additional strategy lookup path.',\n        metavar='PATH',\n    ),\n    \"db_url\": Arg(\n        '--db-url',\n        help=f'Override trades database URL, this is useful in custom deployments '\n        f'(default: `{constants.DEFAULT_DB_PROD_URL}` for Live Run mode, '\n        f'`{constants.DEFAULT_DB_DRYRUN_URL}` for Dry Run).',\n        metavar='PATH',\n    ),\n    \"sd_notify\": Arg(\n        '--sd-notify',\n        help='Notify systemd service manager.',\n        action='store_true',\n    ),\n    # Optimize common\n    \"ticker_interval\": Arg(\n        '-i', '--ticker-interval',\n        help='Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`).',\n    ),\n    \"timerange\": Arg(\n        '--timerange',\n        help='Specify what timerange of data to use.',\n    ),\n    \"max_open_trades\": Arg(\n        '--max_open_trades',\n        help='Specify max_open_trades to use.',\n        type=int,\n        metavar='INT',\n    ),\n    \"stake_amount\": Arg(\n        '--stake_amount',\n        help='Specify stake_amount.',\n        type=float,\n    ),\n    \"refresh_pairs\": Arg(\n        '-r', '--refresh-pairs-cached',\n        help='Refresh the pairs files in tests/testdata with the latest data from the '\n        'exchange. Use it if you want to run your optimization commands with '\n        'up-to-date data.',\n        action='store_true',\n    ),\n    # Backtesting\n    \"position_stacking\": Arg(\n        '--eps', '--enable-position-stacking',\n        help='Allow buying the same pair multiple times (position stacking).',\n        action='store_true',\n        default=False,\n    ),\n    \"use_max_market_positions\": Arg(\n        '--dmmp', '--disable-max-market-positions',\n        help='Disable applying `max_open_trades` during backtest '\n        '(same as setting `max_open_trades` to a very high number).',\n        action='store_false',\n        default=True,\n    ),\n    \"live\": Arg(\n        '-l', '--live',\n        help='Use live data.',\n        action='store_true',\n    ),\n    \"strategy_list\": Arg(\n        '--strategy-list',\n        help='Provide a comma-separated list of strategies to backtest. '\n        'Please note that ticker-interval needs to be set either in config '\n        'or via command line. When using this together with `--export trades`, '\n        'the strategy-name is injected into the filename '\n        '(so `backtest-data.json` becomes `backtest-data-DefaultStrategy.json`',\n        nargs='+',\n    ),\n    \"export\": Arg(\n        '--export',\n        help='Export backtest results, argument are: trades. '\n        'Example: `--export=trades`',\n    ),\n    \"exportfilename\": Arg(\n        '--export-filename',\n        help='Save backtest results to the file with this filename (default: `%(default)s`). '\n        'Requires `--export` to be set as well. '\n        'Example: `--export-filename=user_data/backtest_data/backtest_today.json`',\n        metavar='PATH',\n        default=os.path.join('user_data', 'backtest_data',\n                             'backtest-result.json'),\n    ),\n    # Edge\n    \"stoploss_range\": Arg(\n        '--stoplosses',\n        help='Defines a range of stoploss values against which edge will assess the strategy. '\n        'The format is \"min,max,step\" (without any space). '\n        'Example: `--stoplosses=-0.01,-0.1,-0.001`',\n    ),\n    # Hyperopt\n    \"hyperopt\": Arg(\n        '--customhyperopt',\n        help='Specify hyperopt class name (default: `%(default)s`).',\n        metavar='NAME',\n        default=constants.DEFAULT_HYPEROPT,\n    ),\n    \"hyperopt_path\": Arg(\n        '--hyperopt-path',\n        help='Specify additional lookup path for Hyperopts and Hyperopt Loss functions.',\n        metavar='PATH',\n    ),\n    \"epochs\": Arg(\n        '-e', '--epochs',\n        help='Specify number of epochs (default: %(default)d).',\n        type=check_int_positive,\n        metavar='INT',\n        default=constants.HYPEROPT_EPOCH,\n    ),\n    \"spaces\": Arg(\n        '-s', '--spaces',\n        help='Specify which parameters to hyperopt. Space-separated list. '\n        'Default: `%(default)s`.',\n        choices=['all', 'buy', 'sell', 'roi', 'stoploss'],\n        nargs='+',\n        default='all',\n    ),\n    \"print_all\": Arg(\n        '--print-all',\n        help='Print all results, not only the best ones.',\n        action='store_true',\n        default=False,\n    ),\n    \"hyperopt_jobs\": Arg(\n        '-j', '--job-workers',\n        help='The number of concurrently running jobs for hyperoptimization '\n        '(hyperopt worker processes). '\n        'If -1 (default), all CPUs are used, for -2, all CPUs but one are used, etc. '\n        'If 1 is given, no parallel computing code is used at all.',\n        type=int,\n        metavar='JOBS',\n        default=-1,\n    ),\n    \"hyperopt_random_state\": Arg(\n        '--random-state',\n        help='Set random state to some positive integer for reproducible hyperopt results.',\n        type=check_int_positive,\n        metavar='INT',\n    ),\n    \"hyperopt_min_trades\": Arg(\n        '--min-trades',\n        help=\"Set minimal desired number of trades for evaluations in the hyperopt \"\n        \"optimization path (default: 1).\",\n        type=check_int_positive,\n        metavar='INT',\n        default=1,\n    ),\n    \"hyperopt_continue\": Arg(\n        \"--continue\",\n        help=\"Continue hyperopt from previous runs. \"\n        \"By default, temporary files will be removed and hyperopt will start from scratch.\",\n        default=False,\n        action='store_true',\n    ),\n    \"hyperopt_loss\": Arg(\n        '--hyperopt-loss',\n        help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). '\n        'Different functions can generate completely different results, '\n        'since the target for optimization is different. (default: `%(default)s`).',\n        metavar='NAME',\n        default=constants.DEFAULT_HYPEROPT_LOSS,\n    ),\n    # List exchanges\n    \"print_one_column\": Arg(\n        '-1', '--one-column',\n        help='Print exchanges in one column.',\n        action='store_true',\n    ),\n    # Script options\n    \"pairs\": Arg(\n        '-p', '--pairs',\n        help='Show profits for only these pairs. Pairs are comma-separated.',\n    ),\n    # Download data\n    \"pairs_file\": Arg(\n        '--pairs-file',\n        help='File containing a list of pairs to download.',\n        metavar='FILE',\n    ),\n    \"days\": Arg(\n        '--days',\n        help='Download data for given number of days.',\n        type=check_int_positive,\n        metavar='INT',\n    ),\n    \"exchange\": Arg(\n        '--exchange',\n        help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). '\n        f'Only valid if no config is provided.',\n    ),\n    \"timeframes\": Arg(\n        '-t', '--timeframes',\n        help=f'Specify which tickers to download. Space-separated list. '\n        f'Default: `{constants.DEFAULT_DOWNLOAD_TICKER_INTERVALS}`.',\n        choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h',\n                 '6h', '8h', '12h', '1d', '3d', '1w'],\n        nargs='+',\n    ),\n    \"erase\": Arg(\n        '--erase',\n        help='Clean all existing data for the selected exchange/pairs/timeframes.',\n        action='store_true',\n    ),\n    # Plot dataframe\n    \"indicators1\": Arg(\n        '--indicators1',\n        help='Set indicators from your strategy you want in the first row of the graph. '\n        'Comma-separated list. Example: `ema3,ema5`. Default: `%(default)s`.',\n        default='sma,ema3,ema5',\n    ),\n    \"indicators2\": Arg(\n        '--indicators2',\n        help='Set indicators from your strategy you want in the third row of the graph. '\n        'Comma-separated list. Example: `fastd,fastk`. Default: `%(default)s`.',\n        default='macd,macdsignal',\n    ),\n    \"plot_limit\": Arg(\n        '--plot-limit',\n        help='Specify tick limit for plotting. Notice: too high values cause huge files. '\n        'Default: %(default)s.',\n        type=check_int_positive,\n        metavar='INT',\n        default=750,\n    ),\n    \"trade_source\": Arg(\n        '--trade-source',\n        help='Specify the source for trades (Can be DB or file (backtest file)) '\n        'Default: %(default)s',\n        choices=[\"DB\", \"file\"],\n        default=\"file\",\n    ),\n}\n", "path": "freqtrade/configuration/cli_options.py"}], "after_files": [{"content": "\"\"\"\nDefinition of cli arguments used in arguments.py\n\"\"\"\nimport argparse\nimport os\n\nfrom freqtrade import __version__, constants\n\n\ndef check_int_positive(value: str) -> int:\n    try:\n        uint = int(value)\n        if uint <= 0:\n            raise ValueError\n    except ValueError:\n        raise argparse.ArgumentTypeError(\n            f\"{value} is invalid for this parameter, should be a positive integer value\"\n        )\n    return uint\n\n\nclass Arg:\n    # Optional CLI arguments\n    def __init__(self, *args, **kwargs):\n        self.cli = args\n        self.kwargs = kwargs\n\n\n# List of available command line options\nAVAILABLE_CLI_OPTIONS = {\n    # Common options\n    \"verbosity\": Arg(\n        '-v', '--verbose',\n        help='Verbose mode (-vv for more, -vvv to get all messages).',\n        action='count',\n        default=0,\n    ),\n    \"logfile\": Arg(\n        '--logfile',\n        help='Log to the file specified.',\n        metavar='FILE',\n    ),\n    \"version\": Arg(\n        '-V', '--version',\n        action='version',\n        version=f'%(prog)s {__version__}',\n    ),\n    \"config\": Arg(\n        '-c', '--config',\n        help=f'Specify configuration file (default: `{constants.DEFAULT_CONFIG}`). '\n        f'Multiple --config options may be used. '\n        f'Can be set to `-` to read config from stdin.',\n        action='append',\n        metavar='PATH',\n    ),\n    \"datadir\": Arg(\n        '-d', '--datadir',\n        help='Path to backtest data.',\n        metavar='PATH',\n    ),\n    # Main options\n    \"strategy\": Arg(\n        '-s', '--strategy',\n        help='Specify strategy class name (default: `%(default)s`).',\n        metavar='NAME',\n        default='DefaultStrategy',\n    ),\n    \"strategy_path\": Arg(\n        '--strategy-path',\n        help='Specify additional strategy lookup path.',\n        metavar='PATH',\n    ),\n    \"db_url\": Arg(\n        '--db-url',\n        help=f'Override trades database URL, this is useful in custom deployments '\n        f'(default: `{constants.DEFAULT_DB_PROD_URL}` for Live Run mode, '\n        f'`{constants.DEFAULT_DB_DRYRUN_URL}` for Dry Run).',\n        metavar='PATH',\n    ),\n    \"sd_notify\": Arg(\n        '--sd-notify',\n        help='Notify systemd service manager.',\n        action='store_true',\n    ),\n    # Optimize common\n    \"ticker_interval\": Arg(\n        '-i', '--ticker-interval',\n        help='Specify ticker interval (`1m`, `5m`, `30m`, `1h`, `1d`).',\n    ),\n    \"timerange\": Arg(\n        '--timerange',\n        help='Specify what timerange of data to use.',\n    ),\n    \"max_open_trades\": Arg(\n        '--max_open_trades',\n        help='Specify max_open_trades to use.',\n        type=int,\n        metavar='INT',\n    ),\n    \"stake_amount\": Arg(\n        '--stake_amount',\n        help='Specify stake_amount.',\n        type=float,\n    ),\n    \"refresh_pairs\": Arg(\n        '-r', '--refresh-pairs-cached',\n        help='Refresh the pairs files in tests/testdata with the latest data from the '\n        'exchange. Use it if you want to run your optimization commands with '\n        'up-to-date data.',\n        action='store_true',\n    ),\n    # Backtesting\n    \"position_stacking\": Arg(\n        '--eps', '--enable-position-stacking',\n        help='Allow buying the same pair multiple times (position stacking).',\n        action='store_true',\n        default=False,\n    ),\n    \"use_max_market_positions\": Arg(\n        '--dmmp', '--disable-max-market-positions',\n        help='Disable applying `max_open_trades` during backtest '\n        '(same as setting `max_open_trades` to a very high number).',\n        action='store_false',\n        default=True,\n    ),\n    \"live\": Arg(\n        '-l', '--live',\n        help='Use live data.',\n        action='store_true',\n    ),\n    \"strategy_list\": Arg(\n        '--strategy-list',\n        help='Provide a space-separated list of strategies to backtest. '\n        'Please note that ticker-interval needs to be set either in config '\n        'or via command line. When using this together with `--export trades`, '\n        'the strategy-name is injected into the filename '\n        '(so `backtest-data.json` becomes `backtest-data-DefaultStrategy.json`',\n        nargs='+',\n    ),\n    \"export\": Arg(\n        '--export',\n        help='Export backtest results, argument are: trades. '\n        'Example: `--export=trades`',\n    ),\n    \"exportfilename\": Arg(\n        '--export-filename',\n        help='Save backtest results to the file with this filename (default: `%(default)s`). '\n        'Requires `--export` to be set as well. '\n        'Example: `--export-filename=user_data/backtest_data/backtest_today.json`',\n        metavar='PATH',\n        default=os.path.join('user_data', 'backtest_data',\n                             'backtest-result.json'),\n    ),\n    # Edge\n    \"stoploss_range\": Arg(\n        '--stoplosses',\n        help='Defines a range of stoploss values against which edge will assess the strategy. '\n        'The format is \"min,max,step\" (without any space). '\n        'Example: `--stoplosses=-0.01,-0.1,-0.001`',\n    ),\n    # Hyperopt\n    \"hyperopt\": Arg(\n        '--customhyperopt',\n        help='Specify hyperopt class name (default: `%(default)s`).',\n        metavar='NAME',\n        default=constants.DEFAULT_HYPEROPT,\n    ),\n    \"hyperopt_path\": Arg(\n        '--hyperopt-path',\n        help='Specify additional lookup path for Hyperopts and Hyperopt Loss functions.',\n        metavar='PATH',\n    ),\n    \"epochs\": Arg(\n        '-e', '--epochs',\n        help='Specify number of epochs (default: %(default)d).',\n        type=check_int_positive,\n        metavar='INT',\n        default=constants.HYPEROPT_EPOCH,\n    ),\n    \"spaces\": Arg(\n        '-s', '--spaces',\n        help='Specify which parameters to hyperopt. Space-separated list. '\n        'Default: `%(default)s`.',\n        choices=['all', 'buy', 'sell', 'roi', 'stoploss'],\n        nargs='+',\n        default='all',\n    ),\n    \"print_all\": Arg(\n        '--print-all',\n        help='Print all results, not only the best ones.',\n        action='store_true',\n        default=False,\n    ),\n    \"hyperopt_jobs\": Arg(\n        '-j', '--job-workers',\n        help='The number of concurrently running jobs for hyperoptimization '\n        '(hyperopt worker processes). '\n        'If -1 (default), all CPUs are used, for -2, all CPUs but one are used, etc. '\n        'If 1 is given, no parallel computing code is used at all.',\n        type=int,\n        metavar='JOBS',\n        default=-1,\n    ),\n    \"hyperopt_random_state\": Arg(\n        '--random-state',\n        help='Set random state to some positive integer for reproducible hyperopt results.',\n        type=check_int_positive,\n        metavar='INT',\n    ),\n    \"hyperopt_min_trades\": Arg(\n        '--min-trades',\n        help=\"Set minimal desired number of trades for evaluations in the hyperopt \"\n        \"optimization path (default: 1).\",\n        type=check_int_positive,\n        metavar='INT',\n        default=1,\n    ),\n    \"hyperopt_continue\": Arg(\n        \"--continue\",\n        help=\"Continue hyperopt from previous runs. \"\n        \"By default, temporary files will be removed and hyperopt will start from scratch.\",\n        default=False,\n        action='store_true',\n    ),\n    \"hyperopt_loss\": Arg(\n        '--hyperopt-loss',\n        help='Specify the class name of the hyperopt loss function class (IHyperOptLoss). '\n        'Different functions can generate completely different results, '\n        'since the target for optimization is different. (default: `%(default)s`).',\n        metavar='NAME',\n        default=constants.DEFAULT_HYPEROPT_LOSS,\n    ),\n    # List exchanges\n    \"print_one_column\": Arg(\n        '-1', '--one-column',\n        help='Print exchanges in one column.',\n        action='store_true',\n    ),\n    # Script options\n    \"pairs\": Arg(\n        '-p', '--pairs',\n        help='Show profits for only these pairs. Pairs are comma-separated.',\n    ),\n    # Download data\n    \"pairs_file\": Arg(\n        '--pairs-file',\n        help='File containing a list of pairs to download.',\n        metavar='FILE',\n    ),\n    \"days\": Arg(\n        '--days',\n        help='Download data for given number of days.',\n        type=check_int_positive,\n        metavar='INT',\n    ),\n    \"exchange\": Arg(\n        '--exchange',\n        help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). '\n        f'Only valid if no config is provided.',\n    ),\n    \"timeframes\": Arg(\n        '-t', '--timeframes',\n        help=f'Specify which tickers to download. Space-separated list. '\n        f'Default: `{constants.DEFAULT_DOWNLOAD_TICKER_INTERVALS}`.',\n        choices=['1m', '3m', '5m', '15m', '30m', '1h', '2h', '4h',\n                 '6h', '8h', '12h', '1d', '3d', '1w'],\n        nargs='+',\n    ),\n    \"erase\": Arg(\n        '--erase',\n        help='Clean all existing data for the selected exchange/pairs/timeframes.',\n        action='store_true',\n    ),\n    # Plot dataframe\n    \"indicators1\": Arg(\n        '--indicators1',\n        help='Set indicators from your strategy you want in the first row of the graph. '\n        'Comma-separated list. Example: `ema3,ema5`. Default: `%(default)s`.',\n        default='sma,ema3,ema5',\n    ),\n    \"indicators2\": Arg(\n        '--indicators2',\n        help='Set indicators from your strategy you want in the third row of the graph. '\n        'Comma-separated list. Example: `fastd,fastk`. Default: `%(default)s`.',\n        default='macd,macdsignal',\n    ),\n    \"plot_limit\": Arg(\n        '--plot-limit',\n        help='Specify tick limit for plotting. Notice: too high values cause huge files. '\n        'Default: %(default)s.',\n        type=check_int_positive,\n        metavar='INT',\n        default=750,\n    ),\n    \"trade_source\": Arg(\n        '--trade-source',\n        help='Specify the source for trades (Can be DB or file (backtest file)) '\n        'Default: %(default)s',\n        choices=[\"DB\", \"file\"],\n        default=\"file\",\n    ),\n}\n", "path": "freqtrade/configuration/cli_options.py"}]}