Extract ExchangePayload updating

This commit is contained in:
Matthias
2023-06-03 06:57:25 +02:00
parent 48328fb29d
commit d9d1735333
2 changed files with 22 additions and 11 deletions

View File

@@ -8,8 +8,8 @@ from freqtrade.constants import Config
from freqtrade.enums import CandleType
from freqtrade.exceptions import OperationalException
from freqtrade.rpc.api_server.api_schemas import (BackgroundTaskStatus, BgJobStarted,
PairListsPayload, PairListsResponse,
WhitelistEvaluateResponse)
ExchangeModePayloadMixin, PairListsPayload,
PairListsResponse, WhitelistEvaluateResponse)
from freqtrade.rpc.api_server.deps import get_config, get_exchange
from freqtrade.rpc.api_server.webserver_bgwork import ApiBG
@@ -85,12 +85,7 @@ def pairlists_evaluate(payload: PairListsPayload, background_tasks: BackgroundTa
config_loc = deepcopy(config)
config_loc['stake_currency'] = payload.stake_currency
config_loc['pairlists'] = payload.pairlists
if payload.exchange:
config_loc['exchange']['name'] = payload.exchange
if payload.trading_mode:
config_loc['trading_mode'] = payload.trading_mode
config_loc['candle_type_def'] = CandleType.get_default(
config_loc.get('trading_mode', 'spot') or 'spot')
handleExchangePayload(payload, config_loc)
# TODO: overwrite blacklist? make it optional and fall back to the one in config?
# Outcome depends on the UI approach.
config_loc['exchange']['pair_blacklist'] = payload.blacklist
@@ -114,6 +109,19 @@ def pairlists_evaluate(payload: PairListsPayload, background_tasks: BackgroundTa
}
def handleExchangePayload(payload: ExchangeModePayloadMixin, config_loc: Config):
"""
Handle exchange and trading mode payload.
Updates the configuration with the payload values.
"""
if payload.exchange:
config_loc['exchange']['name'] = payload.exchange
if payload.trading_mode:
config_loc['trading_mode'] = payload.trading_mode
config_loc['candle_type_def'] = CandleType.get_default(
config_loc.get('trading_mode', 'spot') or 'spot')
@router.get('/pairlists/evaluate/{jobid}', response_model=WhitelistEvaluateResponse,
tags=['pairlists'])
def pairlists_evaluate_get(jobid: str):

View File

@@ -7,6 +7,11 @@ from freqtrade.constants import DATETIME_PRINT_FORMAT, IntOrInf
from freqtrade.enums import OrderTypeValues, SignalDirection, TradingMode
class ExchangeModePayloadMixin(BaseModel):
trading_mode: Optional[TradingMode]
exchange: Optional[str]
class Ping(BaseModel):
status: str
@@ -428,12 +433,10 @@ class PairListsResponse(BaseModel):
pairlists: List[PairListResponse]
class PairListsPayload(BaseModel):
class PairListsPayload(ExchangeModePayloadMixin, BaseModel):
pairlists: List[Dict[str, Any]]
blacklist: List[str]
stake_currency: str
trading_mode: Optional[TradingMode]
exchange: Optional[str]
class FreqAIModelListResponse(BaseModel):