Source code for tradeexecutor.cli.slippage

"""Slippage tolerance configuration for strategies."""

import logging

from eth_defi.confirmation import logger
from tradeexecutor.strategy.strategy_module import StrategyModuleInformation


logger = logging.getLogger(__name__)

[docs]def configure_max_slippage_tolerance( max_slippage: float, mod: StrategyModuleInformation, default_max_slippage=0.0050, ): """Figure out what slippage tolerance we should use for the execution. - Command line value - Strategy module `Parameters` class :param max_slippage: From command line :param mod: From strategy module """ if not max_slippage: # Read max slippage from the strategy parameters if available parameters = mod.parameters if parameters: # Legacy Parameters lack slippage tolerance slippage_tolerance = parameters.get("slippage_tolerance") if slippage_tolerance: assert type(slippage_tolerance) == float assert 0.0005 <= slippage_tolerance < 0.08, f"Slippage tolerance is {slippage_tolerance * 100} % - check if the value is sane" max_slippage = slippage_tolerance else: logger.warning("Parameters.slippage_tolerance missing - needed for live trading. Please add.") if not max_slippage: logger.info("Slippage tolerance not configured, using default %f", default_max_slippage) max_slippage = default_max_slippage logger.info("Using slippage tolerance %f %%", max_slippage * 100) return max_slippage