Repository: freqtrade/freqtrade

Issue:
enableRateLimit should be switched to true by default in the config and defaults
In the default config use
```
"ccxt_async_config": {
            "enableRateLimit": true
        },
```
... And probably in the default value.

Reason:
With current config and defaults Bittrex blocks new inexperienced users who just started evaluation of the bot and use default config for that.



Discussion:
I wouldn't enable ratelimit as you specify - it'll be as slow as with syncronous code, as it'll do exactly one call per second (default for `rateLimit` is 1000).

As long as you don't exagerate with the pairs in the pairlist, this should not be a problem, since a lot of calls will come as burst, and you'll then back off for 5m or 15min (depending on your interval).

If you need that many pairs (or if bittrex is enforcing a very strickt limit) the following config should work (play with rateLimit - the one below is working well for binance.

```
        "ccxt_async_config": {
            "enableRateLimit": true,
            "rateLimit": 200
        },
```


You might be right.

I experienced this blocking with default config and default whitelist defined in that...

Anyway, this should not appear for newcomers that use default config, options in it should be consistent. If blocking appears frequently on default exchange bittrex with "default" whitelist specified in it, either whitelist should be reduced a bit or additional option like rateLimit you stated above should be added into default config as well.


Resolving patch:
diff --git a/freqtrade/configuration.py b/freqtrade/configuration.py
--- a/freqtrade/configuration.py
+++ b/freqtrade/configuration.py
@@ -393,11 +393,6 @@ def check_exchange(self, config: Dict[str, Any]) -> bool:
             raise OperationalException(
                 exception_msg
             )
-        # Depreciation warning
-        if 'ccxt_rate_limit' in config.get('exchange', {}):
-            logger.warning("`ccxt_rate_limit` has been deprecated in favor of "
-                           "`ccxt_config` and `ccxt_async_config` and will be removed "
-                           "in a future version.")
 
         logger.debug('Exchange "%s" supported', exchange)
         return True
diff --git a/freqtrade/exchange/exchange.py b/freqtrade/exchange/exchange.py
--- a/freqtrade/exchange/exchange.py
+++ b/freqtrade/exchange/exchange.py
@@ -146,7 +146,6 @@ def _init_ccxt(self, exchange_config: dict, ccxt_module=ccxt,
             'secret': exchange_config.get('secret'),
             'password': exchange_config.get('password'),
             'uid': exchange_config.get('uid', ''),
-            'enableRateLimit': exchange_config.get('ccxt_rate_limit', True)
         }
         if ccxt_kwargs:
             logger.info('Applying additional ccxt config: %s', ccxt_kwargs)
diff --git a/scripts/download_backtest_data.py b/scripts/download_backtest_data.py
--- a/scripts/download_backtest_data.py
+++ b/scripts/download_backtest_data.py
@@ -54,7 +54,8 @@
             'secret': '',
             'pair_whitelist': [],
             'ccxt_async_config': {
-                'enableRateLimit': False
+                'enableRateLimit': True,
+                'rateLimit': 200
             }
         }
     }


Test patch:
diff --git a/freqtrade/tests/test_configuration.py b/freqtrade/tests/test_configuration.py
--- a/freqtrade/tests/test_configuration.py
+++ b/freqtrade/tests/test_configuration.py
@@ -485,15 +485,6 @@ def test_check_exchange(default_conf, caplog) -> None:
     ):
         configuration.check_exchange(default_conf)
 
-    # Test ccxt_rate_limit depreciation
-    default_conf.get('exchange').update({'name': 'binance'})
-    default_conf['exchange']['ccxt_rate_limit'] = True
-    configuration.check_exchange(default_conf)
-    assert log_has("`ccxt_rate_limit` has been deprecated in favor of "
-                   "`ccxt_config` and `ccxt_async_config` and will be removed "
-                   "in a future version.",
-                   caplog.record_tuples)
-
 
 def test_cli_verbose_with_params(default_conf, mocker, caplog) -> None:
     mocker.patch('freqtrade.configuration.open', mocker.mock_open(