diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 04c2a7819..f4bae0061 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,7 +21,7 @@ repos: # stages: [push] - repo: https://github.com/pre-commit/mirrors-mypy - rev: "v1.15.0" + rev: "v1.16.0" hooks: - id: mypy exclude: build_helpers diff --git a/freqtrade/data/entryexitanalysis.py b/freqtrade/data/entryexitanalysis.py index 2bea8a5db..0a9d5bc44 100644 --- a/freqtrade/data/entryexitanalysis.py +++ b/freqtrade/data/entryexitanalysis.py @@ -331,7 +331,9 @@ def process_entry_exit_reasons(config: Config): exit_only = config.get("exit_only", False) do_rejected = config.get("analysis_rejected", False) to_csv = config.get("analysis_to_csv", False) - csv_path = Path(config.get("analysis_csv_path", config["exportfilename"])) + csv_path = Path( + config.get("analysis_csv_path", config["exportfilename"]), # type: ignore[arg-type] + ) if entry_only is True and exit_only is True: raise OperationalException( diff --git a/freqtrade/exchange/binance.py b/freqtrade/exchange/binance.py index a9693adbf..82844cde9 100644 --- a/freqtrade/exchange/binance.py +++ b/freqtrade/exchange/binance.py @@ -76,7 +76,10 @@ class Binance(Exchange): :return: Proxy coin or stake currency """ if self.margin_mode == MarginMode.CROSS: - return self._config.get("proxy_coin", self._config["stake_currency"]) + return self._config.get( + "proxy_coin", + self._config["stake_currency"], + ) # type: ignore[return-value] return self._config["stake_currency"] def get_tickers( diff --git a/freqtrade/freqai/prediction_models/ReinforcementLearner.py b/freqtrade/freqai/prediction_models/ReinforcementLearner.py index 87c3450dc..ff6b2d029 100644 --- a/freqtrade/freqai/prediction_models/ReinforcementLearner.py +++ b/freqtrade/freqai/prediction_models/ReinforcementLearner.py @@ -101,7 +101,7 @@ class ReinforcementLearner(BaseReinforcementLearningModel): return model - MyRLEnv: type[BaseEnvironment] + MyRLEnv: type[BaseEnvironment] # type: ignore[assignment, unused-ignore] class MyRLEnv(Base5ActionRLEnv): # type: ignore[no-redef] """ diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 5f3101b0d..e572530a0 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -1646,120 +1646,80 @@ class Trade(ModelBase, LocalTrade): use_db: bool = True - id: Mapped[int] = mapped_column(Integer, primary_key=True) # type: ignore + id: Mapped[int] = mapped_column(Integer, primary_key=True) orders: Mapped[list[Order]] = relationship( "Order", order_by="Order.id", cascade="all, delete-orphan", lazy="selectin", innerjoin=True - ) # type: ignore + ) custom_data: Mapped[list[_CustomData]] = relationship( "_CustomData", cascade="all, delete-orphan", lazy="raise" ) - exchange: Mapped[str] = mapped_column(String(25), nullable=False) # type: ignore - pair: Mapped[str] = mapped_column(String(25), nullable=False, index=True) # type: ignore - base_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) # type: ignore - stake_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) # type: ignore - is_open: Mapped[bool] = mapped_column(nullable=False, default=True, index=True) # type: ignore - fee_open: Mapped[float] = mapped_column(Float(), nullable=False, default=0.0) # type: ignore - fee_open_cost: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore - fee_open_currency: Mapped[str | None] = mapped_column( # type: ignore - String(25), nullable=True - ) - fee_close: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=False, default=0.0 - ) - fee_close_cost: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore - fee_close_currency: Mapped[str | None] = mapped_column( # type: ignore - String(25), nullable=True - ) - open_rate: Mapped[float] = mapped_column(Float()) # type: ignore - open_rate_requested: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True - ) + exchange: Mapped[str] = mapped_column(String(25), nullable=False) + pair: Mapped[str] = mapped_column(String(25), nullable=False, index=True) + base_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) + stake_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) + is_open: Mapped[bool] = mapped_column(nullable=False, default=True, index=True) + fee_open: Mapped[float] = mapped_column(Float(), nullable=False, default=0.0) + fee_open_cost: Mapped[float | None] = mapped_column(Float(), nullable=True) + fee_open_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) + fee_close: Mapped[float | None] = mapped_column(Float(), nullable=False, default=0.0) + fee_close_cost: Mapped[float | None] = mapped_column(Float(), nullable=True) + fee_close_currency: Mapped[str | None] = mapped_column(String(25), nullable=True) + open_rate: Mapped[float] = mapped_column(Float()) + open_rate_requested: Mapped[float | None] = mapped_column(Float(), nullable=True) # open_trade_value - calculated via _calc_open_trade_value - open_trade_value: Mapped[float] = mapped_column(Float(), nullable=True) # type: ignore - close_rate: Mapped[float | None] = mapped_column(Float()) # type: ignore - close_rate_requested: Mapped[float | None] = mapped_column(Float()) # type: ignore - realized_profit: Mapped[float] = mapped_column( # type: ignore - Float(), default=0.0, nullable=True - ) - close_profit: Mapped[float | None] = mapped_column(Float()) # type: ignore - close_profit_abs: Mapped[float | None] = mapped_column(Float()) # type: ignore - stake_amount: Mapped[float] = mapped_column(Float(), nullable=False) # type: ignore - max_stake_amount: Mapped[float | None] = mapped_column(Float()) # type: ignore - amount: Mapped[float] = mapped_column(Float()) # type: ignore - amount_requested: Mapped[float | None] = mapped_column(Float()) # type: ignore - open_date: Mapped[datetime] = mapped_column( # type: ignore - nullable=False, default=datetime.now - ) - close_date: Mapped[datetime | None] = mapped_column() # type: ignore + open_trade_value: Mapped[float] = mapped_column(Float(), nullable=True) + close_rate: Mapped[float | None] = mapped_column(Float()) + close_rate_requested: Mapped[float | None] = mapped_column(Float()) + realized_profit: Mapped[float] = mapped_column(Float(), default=0.0, nullable=True) + close_profit: Mapped[float | None] = mapped_column(Float()) + close_profit_abs: Mapped[float | None] = mapped_column(Float()) + stake_amount: Mapped[float] = mapped_column(Float(), nullable=False) + max_stake_amount: Mapped[float | None] = mapped_column(Float()) + amount: Mapped[float] = mapped_column(Float()) + amount_requested: Mapped[float | None] = mapped_column(Float()) + open_date: Mapped[datetime] = mapped_column(nullable=False, default=datetime.now) + close_date: Mapped[datetime | None] = mapped_column() # absolute value of the stop loss - stop_loss: Mapped[float] = mapped_column(Float(), nullable=True, default=0.0) # type: ignore + stop_loss: Mapped[float] = mapped_column(Float(), nullable=True, default=0.0) # percentage value of the stop loss - stop_loss_pct: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore + stop_loss_pct: Mapped[float | None] = mapped_column(Float(), nullable=True) # absolute value of the initial stop loss - initial_stop_loss: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True, default=0.0 - ) + initial_stop_loss: Mapped[float | None] = mapped_column(Float(), nullable=True, default=0.0) # percentage value of the initial stop loss - initial_stop_loss_pct: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True - ) - is_stop_loss_trailing: Mapped[bool] = mapped_column( # type: ignore - nullable=False, default=False - ) + initial_stop_loss_pct: Mapped[float | None] = mapped_column(Float(), nullable=True) + is_stop_loss_trailing: Mapped[bool] = mapped_column(nullable=False, default=False) # absolute value of the highest reached price - max_rate: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True, default=0.0 - ) + max_rate: Mapped[float | None] = mapped_column(Float(), nullable=True, default=0.0) # Lowest price reached - min_rate: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore - exit_reason: Mapped[str | None] = mapped_column( # type: ignore - String(CUSTOM_TAG_MAX_LENGTH), nullable=True - ) - exit_order_status: Mapped[str | None] = mapped_column( # type: ignore - String(100), nullable=True - ) - strategy: Mapped[str | None] = mapped_column(String(100), nullable=True) # type: ignore - enter_tag: Mapped[str | None] = mapped_column( # type: ignore - String(CUSTOM_TAG_MAX_LENGTH), nullable=True - ) - timeframe: Mapped[int | None] = mapped_column(Integer, nullable=True) # type: ignore + min_rate: Mapped[float | None] = mapped_column(Float(), nullable=True) + exit_reason: Mapped[str | None] = mapped_column(String(CUSTOM_TAG_MAX_LENGTH), nullable=True) + exit_order_status: Mapped[str | None] = mapped_column(String(100), nullable=True) + strategy: Mapped[str | None] = mapped_column(String(100), nullable=True) + enter_tag: Mapped[str | None] = mapped_column(String(CUSTOM_TAG_MAX_LENGTH), nullable=True) + timeframe: Mapped[int | None] = mapped_column(Integer, nullable=True) - trading_mode: Mapped[TradingMode] = mapped_column( # type: ignore - Enum(TradingMode), nullable=True - ) - amount_precision: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True - ) - price_precision: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore - precision_mode: Mapped[int | None] = mapped_column(Integer, nullable=True) # type: ignore - precision_mode_price: Mapped[int | None] = mapped_column( # type: ignore - Integer, nullable=True - ) - contract_size: Mapped[float | None] = mapped_column(Float(), nullable=True) # type: ignore + trading_mode: Mapped[TradingMode] = mapped_column(Enum(TradingMode), nullable=True) + amount_precision: Mapped[float | None] = mapped_column(Float(), nullable=True) + price_precision: Mapped[float | None] = mapped_column(Float(), nullable=True) + precision_mode: Mapped[int | None] = mapped_column(Integer, nullable=True) + precision_mode_price: Mapped[int | None] = mapped_column(Integer, nullable=True) + contract_size: Mapped[float | None] = mapped_column(Float(), nullable=True) # Leverage trading properties - leverage: Mapped[float] = mapped_column(Float(), nullable=True, default=1.0) # type: ignore - is_short: Mapped[bool] = mapped_column(nullable=False, default=False) # type: ignore - liquidation_price: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True - ) + leverage: Mapped[float] = mapped_column(Float(), nullable=True, default=1.0) + is_short: Mapped[bool] = mapped_column(nullable=False, default=False) + liquidation_price: Mapped[float | None] = mapped_column(Float(), nullable=True) # Margin Trading Properties - interest_rate: Mapped[float] = mapped_column( # type: ignore - Float(), nullable=False, default=0.0 - ) + interest_rate: Mapped[float] = mapped_column(Float(), nullable=False, default=0.0) # Futures properties - funding_fees: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True, default=None - ) - funding_fee_running: Mapped[float | None] = mapped_column( # type: ignore - Float(), nullable=True, default=None - ) + funding_fees: Mapped[float | None] = mapped_column(Float(), nullable=True, default=None) + funding_fee_running: Mapped[float | None] = mapped_column(Float(), nullable=True, default=None) - record_version: Mapped[int] = mapped_column(Integer, nullable=False, default=2) # type: ignore + record_version: Mapped[int] = mapped_column(Integer, nullable=False, default=2) def __init__(self, **kwargs): from_json = kwargs.pop("__FROM_JSON", None) diff --git a/requirements-dev.txt b/requirements-dev.txt index 902af8cc1..fee06e217 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -8,7 +8,7 @@ coveralls==4.0.1 ruff==0.11.12 -mypy==1.15.0 +mypy==1.16.0 pre-commit==4.2.0 pytest==8.3.5 pytest-asyncio==0.26.0