New config (#6333)
* updated new-config to add trading_mode and margin_mode * added trading_mode and margin_mode to config examples * added okex config example * new file: config_examples/config_binance_futures.example.json * removed trading_mode and margin_mode from base_config and binance and okex example * deleted okex and futures config files * updated full config file * updated new-config command to add trading_mode and margin_mode to config * new file: config_examples/config_okex_futures.example.json * removed config_okex_futures.example.json * added trading_mode to test_start_new_config * new-config asks exchange before asking futures * Simplify trading_mode selection * margin_mode is empty string for spot new configs * build_config_commands sorted exchanges * isort Co-authored-by: Matthias <xmatthias@outlook.com>
This commit is contained in:
parent
c3684e8a1a
commit
179947fa72
@ -19,6 +19,8 @@
|
|||||||
"sell_profit_offset": 0.0,
|
"sell_profit_offset": 0.0,
|
||||||
"ignore_roi_if_buy_signal": false,
|
"ignore_roi_if_buy_signal": false,
|
||||||
"ignore_buying_expired_candle_after": 300,
|
"ignore_buying_expired_candle_after": 300,
|
||||||
|
"trading_mode": "futures",
|
||||||
|
"margin_mode": "isolated",
|
||||||
"minimal_roi": {
|
"minimal_roi": {
|
||||||
"40": 0.0,
|
"40": 0.0,
|
||||||
"30": 0.01,
|
"30": 0.01,
|
||||||
|
@ -107,19 +107,27 @@ def ask_user_config() -> Dict[str, Any]:
|
|||||||
"type": "select",
|
"type": "select",
|
||||||
"name": "exchange_name",
|
"name": "exchange_name",
|
||||||
"message": "Select exchange",
|
"message": "Select exchange",
|
||||||
"choices": [
|
"choices": lambda x: [
|
||||||
"binance",
|
"binance",
|
||||||
"binanceus",
|
"binanceus",
|
||||||
"bittrex",
|
"bittrex",
|
||||||
"kraken",
|
|
||||||
"ftx",
|
"ftx",
|
||||||
"kucoin",
|
|
||||||
"gateio",
|
"gateio",
|
||||||
|
"kraken",
|
||||||
|
"kucoin",
|
||||||
"okex",
|
"okex",
|
||||||
Separator(),
|
Separator("-----------------------------------------------"),
|
||||||
"other",
|
"other",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "confirm",
|
||||||
|
"name": "trading_mode",
|
||||||
|
"message": "Do you want to trade Perpetual Swaps (perpetual futures)?",
|
||||||
|
"default": False,
|
||||||
|
"filter": lambda val: 'futures' if val else 'spot',
|
||||||
|
"when": lambda x: x["exchange_name"] in ['binance', 'gateio'],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "autocomplete",
|
"type": "autocomplete",
|
||||||
"name": "exchange_name",
|
"name": "exchange_name",
|
||||||
@ -196,7 +204,11 @@ def ask_user_config() -> Dict[str, Any]:
|
|||||||
if not answers:
|
if not answers:
|
||||||
# Interrupted questionary sessions return an empty dict.
|
# Interrupted questionary sessions return an empty dict.
|
||||||
raise OperationalException("User interrupted interactive questions.")
|
raise OperationalException("User interrupted interactive questions.")
|
||||||
|
answers['margin_mode'] = (
|
||||||
|
'isolated'
|
||||||
|
if answers.get('trading_mode') == 'futures'
|
||||||
|
else ''
|
||||||
|
)
|
||||||
# Force JWT token to be a random string
|
# Force JWT token to be a random string
|
||||||
answers['api_server_jwt_key'] = secrets.token_hex()
|
answers['api_server_jwt_key'] = secrets.token_hex()
|
||||||
|
|
||||||
|
@ -2,8 +2,9 @@ import logging
|
|||||||
from typing import Dict, List, Tuple
|
from typing import Dict, List, Tuple
|
||||||
|
|
||||||
from freqtrade.enums import MarginMode, TradingMode
|
from freqtrade.enums import MarginMode, TradingMode
|
||||||
from freqtrade.exchange import Exchange
|
|
||||||
from freqtrade.exceptions import OperationalException
|
from freqtrade.exceptions import OperationalException
|
||||||
|
from freqtrade.exchange import Exchange
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
"fiat_display_currency": "{{ fiat_display_currency }}",{{ ('\n "timeframe": "' + timeframe + '",') if timeframe else '' }}
|
"fiat_display_currency": "{{ fiat_display_currency }}",{{ ('\n "timeframe": "' + timeframe + '",') if timeframe else '' }}
|
||||||
"dry_run": {{ dry_run | lower }},
|
"dry_run": {{ dry_run | lower }},
|
||||||
"cancel_open_orders_on_exit": false,
|
"cancel_open_orders_on_exit": false,
|
||||||
|
"trading_mode": "{{ trading_mode }}",
|
||||||
|
"margin_mode": "{{ margin_mode }}",
|
||||||
"unfilledtimeout": {
|
"unfilledtimeout": {
|
||||||
"buy": 10,
|
"buy": 10,
|
||||||
"sell": 10,
|
"sell": 10,
|
||||||
|
@ -44,6 +44,8 @@ def test_start_new_config(mocker, caplog, exchange):
|
|||||||
'fiat_display_currency': 'EUR',
|
'fiat_display_currency': 'EUR',
|
||||||
'timeframe': '15m',
|
'timeframe': '15m',
|
||||||
'dry_run': True,
|
'dry_run': True,
|
||||||
|
'trading_mode': 'spot',
|
||||||
|
'margin_mode': '',
|
||||||
'exchange_name': exchange,
|
'exchange_name': exchange,
|
||||||
'exchange_key': 'sampleKey',
|
'exchange_key': 'sampleKey',
|
||||||
'exchange_secret': 'Samplesecret',
|
'exchange_secret': 'Samplesecret',
|
||||||
|
Loading…
Reference in New Issue
Block a user