Add trend MACD spot strategy

This commit is contained in:
Codex
2026-06-21 09:15:38 +03:00
parent f19856ca6e
commit 8a211acf98
18 changed files with 593 additions and 81 deletions
+13 -15
View File
@@ -176,8 +176,11 @@ def _safe_config(settings: Settings) -> dict[str, Any]:
"auto_select_symbols": settings.auto_select_symbols,
"top_symbols_count": settings.top_symbols_count,
"symbols": settings.symbols,
"strategy_mode": settings.strategy_mode,
"base_interval": settings.base_interval,
"kline_limit": settings.kline_limit,
"trend_interval": settings.trend_interval,
"trend_kline_limit": settings.trend_kline_limit,
"loop_interval_seconds": settings.loop_interval_seconds,
"fast_trading_enabled": settings.fast_trading_enabled,
"fast_loop_interval_seconds": settings.fast_loop_interval_seconds,
@@ -213,6 +216,10 @@ def _safe_config(settings: Settings) -> dict[str, Any]:
"kelly_sizing_enabled": settings.kelly_sizing_enabled,
"kelly_fraction": settings.kelly_fraction,
"kelly_max_fraction": settings.kelly_max_fraction,
"risk_per_trade_percent": settings.risk_per_trade_percent,
"atr_trailing_multiplier": settings.atr_trailing_multiplier,
"trend_rsi_min": settings.trend_rsi_min,
"trend_rsi_max": settings.trend_rsi_max,
"time_series_forecast_enabled": settings.time_series_forecast_enabled,
"time_series_min_candles": settings.time_series_min_candles,
"time_series_forecast_horizon": settings.time_series_forecast_horizon,
@@ -909,6 +916,7 @@ HTML = r"""
function renderConfig(config) {
const keys = [
['Режим', modeName(config.trading_mode)],
['Стратегия', config.strategy_mode || '-'],
['Стартовый баланс', money(config.starting_balance_usdt)],
['Мин. уверенность', config.min_signal_confidence],
['Быстрая торговля', yesNo(config.fast_trading_enabled)],
@@ -923,25 +931,15 @@ HTML = r"""
['Мин. оборот 24ч', money(config.min_24h_turnover_usdt)],
['Размер позиции', `${money(config.min_position_usdt)} - ${money(config.max_position_usdt)}`],
['Лимит на пару', money(config.max_symbol_exposure_usdt)],
['Grid-режим', yesNo(config.grid_trading_enabled)],
['Grid порог / зона', `${num(config.grid_entry_confidence, 2)} / ${num((config.grid_buy_zone || 0) * 100, 0)}%`],
['Grid макс. размер', money(config.grid_max_position_usdt)],
['Rebound-режим', yesNo(config.rebound_trading_enabled)],
['Rebound порог / вероятность', `${num(config.rebound_entry_confidence, 2)} / ${num(config.rebound_min_probability, 2)}`],
['Rebound макс. размер', money(config.rebound_max_position_usdt)],
['Kelly размер', `${yesNo(config.kelly_sizing_enabled)} · ${num(config.kelly_fraction, 2)}x · max ${num((config.kelly_max_fraction || 0) * 100, 1)}%`],
['Прогноз временных рядов', yesNo(config.time_series_forecast_enabled)],
['Модельный горизонт', `${config.time_series_forecast_horizon} свечи`],
['Мин. edge прогноза', `${num(config.time_series_min_edge_percent, 3)}%`],
['Нейропрогноз', modelArtifactSummary(config)],
['Файл модели', config.time_series_lstm_model_path || '-'],
['Риск на сделку', `${num((config.risk_per_trade_percent || 0) * 100, 2)}% equity`],
['RSI входа', `${num(config.trend_rsi_min, 1)} - ${num(config.trend_rsi_max, 1)}`],
['Лимит в позициях', money(config.max_total_exposure_usdt)],
['Лимит позиций', `${config.max_open_positions} всего / ${config.max_positions_per_symbol} на пару`],
['Стоп / цель', `${num(config.stop_loss_percent * 100, 2)}% / ${num(config.take_profit_percent * 100, 2)}%`],
['Трейлинг-стоп', `${num(config.trailing_stop_percent * 100, 2)}%`],
['Стоп', `${num(config.stop_loss_percent * 100, 2)}%`],
['ATR trailing', `${num(config.atr_trailing_multiplier, 2)} ATR`],
['Удержание / пауза', `${config.min_hold_seconds}с / ${config.entry_cooldown_seconds}с`],
['Комиссия / проскальзывание', `${num(config.taker_fee_rate * 100, 3)}% / ${num(config.slippage_rate * 100, 3)}%`],
['Таймфрейм', `${config.base_interval}м`],
['Таймфрейм', `${config.base_interval} / тренд ${config.trend_interval}`],
['Поток данных', yesNo(config.websocket_enabled)]
];
document.getElementById('configGrid').innerHTML = keys.map(([k, v]) => `