Commit Graph

15032 Commits

Author SHA1 Message Date
Matthias 3a76235c48 fix: improved check for emc due to type 2026-04-04 09:09:16 +02:00
Matthias 4ddb7fd43f chore: clarify delist-filter exception 2026-04-04 09:02:52 +02:00
Matthias e3c316f311 fix: Graceful shutdown in case of failed initialization 2026-04-04 08:51:04 +02:00
Matthias 1ebd75b32a fix: improve freqtradebot cleanup resilience 2026-04-04 08:47:50 +02:00
Matthias 65f494be26 fix: don't raise freqAI in pre-mature shutdown scenarios 2026-04-04 08:41:13 +02:00
Matthias 8a98b6172c refactor: use fstrings for regular log output 2026-04-04 08:40:54 +02:00
Matthias f96f9b7601 chore: move futures only flags to ft_has_futures 2026-04-02 07:26:07 +02:00
Freqtrade Bot 57b42b8cf0 chore: update binance leverage tiers 2026-04-02 04:15:15 +00:00
Matthias c21b8587a6 fix: incorrect balance estimation while entry order is not filled
closes #12993
2026-03-31 06:52:52 +02:00
Matthias 230281f8f2 chore: bump develop version to 2026.4-dev 2026-03-30 07:02:22 +02:00
Matthias 0ed613a574 fix: further improvements to exit codes 2026-03-29 13:52:51 +02:00
Matthias 697814ed6a fix: improved sysexit handling
closes #12988
2026-03-29 13:30:26 +02:00
Matthias 3c43e3dae3 feat: improve stop price type not supported message 2026-03-26 07:08:40 +01:00
Matthias 1c98c2feeb feat(bitget): add stoploss price type support
closes #12981
2026-03-26 07:08:40 +01:00
Freqtrade Bot 48905e55e5 chore: update pre-commit hooks 2026-03-26 04:18:28 +00:00
Briarion 3bde73740c feat: add early stopping support to PyTorchModelTrainer
Add optional early stopping to prevent overfitting in PyTorch-based
FreqAI models. When `early_stopping_patience` is set in
model_training_parameters, training will stop if validation loss
does not improve for the specified number of epochs.

Changes:
- Add `early_stopping_patience` parameter (default 0 = disabled)
- `estimate_loss()` now returns average loss (float | None) instead
  of None, enabling downstream use for schedulers and early stopping
- Track best validation loss and patience counter across epochs

Usage in config:
```json
{
  "model_training_parameters": {
    "n_epochs": 100,
    "early_stopping_patience": 10
  }
}
```

The change is fully backward compatible - early stopping is disabled
by default, and the return value of estimate_loss() can be safely
ignored by existing subclasses.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:24:58 +03:00
Matthias e98959f3f0 fix: set weights_only=False when loading from pytorch
closes #12964
2026-03-24 20:31:35 +01:00
Matthias b8f5df7cf6 chore: remove unnecessary child method
(it does the same thing than the parent).
2026-03-24 20:15:09 +01:00
Matthias 143d9a90c6 chore: import sorting 2026-03-24 06:33:57 +01:00
Matthias bb2f4ac37e fix: migrate from add_event_handler to lifespan
add_event_handler was removed in starlette 1.0.0
2026-03-23 07:19:53 +01:00
Matthias 37dbaae8aa feat(krakenfutures): exchange_override fetchOrders to false
to force fallback to individual orders
2026-03-22 19:07:19 +01:00
Matthias 1bd0404503 fix: workaround for missing "filled" parsing 2026-03-22 19:07:19 +01:00
matstedt eba9c24510 refactor(krakenfutures): drop resolved trigger price workaround 2026-03-22 19:07:19 +01:00
Matthias 0fda77a39c chore: filter open orders by pair 2026-03-22 19:07:19 +01:00
matstedt 7f9b1a9f90 krakenfutures: correct ccxt issue link to 27996 2026-03-22 19:07:19 +01:00
matstedt 5096ec8a50 krakenfutures: defer order-level fee aggregation 2026-03-22 19:07:19 +01:00
matstedt 35d812a271 krakenfutures: run order adjustments via _order_contracts_to_amount 2026-03-22 19:07:19 +01:00
matstedt 1e79c1961b krakenfutures: aggregate order fees in _adjust_krakenfutures_order 2026-03-22 19:07:19 +01:00
matstedt bfd758d353 krakenfutures: recompute average and cost from fills for terminal orders 2026-03-22 19:07:19 +01:00
matstedt b1ef0bf58d krakenfutures: use safe_value_nested for trigger price extraction 2026-03-22 19:07:19 +01:00
Matthias d25b2ea10a fix: crash on comparison of filled=None 2026-03-22 19:07:19 +01:00
matstedt c533e48310 refactor: remove funding_fee_candle_limit override
Kraken Futures now provides 1 year of hourly funding rate history.
The previous limit of 700 candles (29 days) was a workaround for
limited API retention. Freqtrade paginates funding rate fetches
automatically, so the CCXT default (2000) works correctly.
2026-03-22 19:07:19 +01:00
matstedt a1e9b6bea8 fix: compute average price from trades and enrich fees for Kraken Futures
Kraken Futures' /orders/status returns limitPrice (not fill price) and
/fills omits fee amounts (only fillType). This adds:

- _adjust_krakenfutures_order: fetches trades for closed/filled orders
  with average=None and computes VWAP average price.
- get_trades_for_order override: enriches trades with calculated fees
  from the market's maker/taker fee schedule.

Tests: 7 new tests covering VWAP computation, fee enrichment with
maker/taker rates, and preservation of existing values.
2026-03-22 19:07:19 +01:00
matstedt 0dfd7324bd fix: extract triggerPrice from priceTriggerOptions for stoploss orders
CCXT's krakenfutures parse_order misses triggerPrice when the
/orders/status endpoint nests it inside priceTriggerOptions.
Override _order_contracts_to_amount to populate triggerPrice and
stopPrice from info.order.priceTriggerOptions.triggerPrice.
2026-03-22 19:07:19 +01:00
Matthias d6e6c9d038 chore: log fetch_order responses for better tracability 2026-03-22 19:07:19 +01:00
matstedt 0dc26584cc krakenfutures: add funding_fee_candle_limit for limited history
Kraken Futures retains only ~29 days of hourly funding rate history.
Set funding_fee_candle_limit to 700 so ohlcv_candle_limit returns the
correct cap for CandleType.FUNDING_RATE instead of the general OHLCV
limit.
2026-03-22 19:07:19 +01:00
matstedt 086e1d8bad refactor(krakenfutures): simplify stoploss handling after ccxt fix
- Add stoploss_query_requires_stop_flag to _ft_has so the base class
  handles fetch_stoploss_order and cancel_stoploss_order (adds stop=True
  which CCXT maps to trigger history endpoints).
- Remove _fix_trigger_order_id — ccxt 4.5.38 now parses order IDs
  correctly in all response formats.
- Remove cancel_stoploss_order override — base class handles it.
- Remove fetch_stoploss_order override — base class handles it.
- Simplify _fetch_order_fallback — stop=True flows from base class,
  no need to auto-retry with trigger=True.

Addresses review comments from freqtrade/freqtrade#12706.
2026-03-22 19:07:19 +01:00
Matthias 68c8dd4e18 chore: krakenfutures tickers don't have volume 2026-03-22 19:07:19 +01:00
Matthias b25defb8b9 refactor: invert balance logic to simplify function 2026-03-22 19:07:19 +01:00
matstedt bfbae5d040 fix(krakenfutures): re-introduce improved stoploss lookup for trigger orders 2026-03-22 19:07:19 +01:00
matstedt bb2f19deaa krakenfutures: replace assert with typed None-guard for ruff S101 2026-03-22 19:07:19 +01:00
matstedt cfa4924b8e krakenfutures: satisfy mypy narrowing in flex USD used calculation 2026-03-22 19:07:19 +01:00
matstedt f81e335b27 krakenfutures: simplify order/balance handling and harden error mapping 2026-03-22 19:07:05 +01:00
matstedt 756f178ec3 exchange_utils: use ccxt exchange.has directly in capability checks 2026-03-22 19:07:05 +01:00
Matthias c68c6896d7 chore: revert odd, unnecessary modifications 2026-03-22 19:07:05 +01:00
Matthias cb6a1267b6 chore: remove pointless comments 2026-03-22 19:07:05 +01:00
matstedt 1c77bd6f5d krakenfutures: improve fetch_order fallback 2026-03-22 19:07:05 +01:00
Matthias 445a22222a chore: remove leverage tier fixing code 2026-03-22 19:07:04 +01:00
matstedt ba80329eda krakenfutures: guard maxNotional for non‑contract tiers 2026-03-22 19:07:04 +01:00
matstedt 6ed470884b krakenfutures: backfill leverage tier notionals 2026-03-22 19:07:04 +01:00