From 8ae6d4e3a5df17dd6c4c4d91843b5973cf92e365 Mon Sep 17 00:00:00 2001 From: Codex Date: Mon, 22 Jun 2026 18:59:13 +0300 Subject: [PATCH] Add LTC to fixed Torch trading pairs --- .env.example | 6 +++--- README.md | 10 +++++----- crypto_spot_bot/config.py | 2 +- crypto_spot_bot/market_data.py | 2 +- tests/test_config.py | 6 +++--- tools/install_windows_torch_retrainer.ps1 | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.env.example b/.env.example index 6645674..5064ef9 100644 --- a/.env.example +++ b/.env.example @@ -8,8 +8,8 @@ BYBIT_API_SECRET= STARTING_BALANCE_USDT=100 AUTO_SELECT_SYMBOLS=false -TOP_SYMBOLS_COUNT=3 -SYMBOLS=BTCUSDT,ETHUSDT,SOLUSDT +TOP_SYMBOLS_COUNT=4 +SYMBOLS=BTCUSDT,ETHUSDT,SOLUSDT,LTCUSDT STRATEGY_MODE=torch_forecast BASE_INTERVAL=60 @@ -36,7 +36,7 @@ MIN_POSITION_USDT=1 MAX_POSITION_USDT=25 MAX_SYMBOL_EXPOSURE_USDT=25 MAX_TOTAL_EXPOSURE_USDT=75 -MAX_OPEN_POSITIONS=3 +MAX_OPEN_POSITIONS=4 MAX_POSITIONS_PER_SYMBOL=1 GRID_TRADING_ENABLED=false GRID_ENTRY_CONFIDENCE=0.58 diff --git a/README.md b/README.md index e4f6084..66ddc50 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Spot-бот для демо-торговли криптовалютой на р ## Что реализовано - Реальные market data Bybit Spot: REST bootstrap и WebSocket-обновления. -- Фиксированный набор USDT spot-пар для основной стратегии: `BTCUSDT`, `ETHUSDT`, `SOLUSDT`. +- Фиксированный набор USDT spot-пар для основной стратегии: `BTCUSDT`, `ETHUSDT`, `SOLUSDT`, `LTCUSDT`. - Paper trading с учетом cash, комиссий, проскальзывания, stop-loss, take-profit и trailing stop. - Spot-only логика: покупка базовой монеты за USDT и продажа обратно, без short и без плеча. - Live spot-ордеры явно отправляются без плеча: `category=spot`, `isLeverage=0`. @@ -86,7 +86,7 @@ powershell -ExecutionPolicy Bypass -File tools\run_torch_retrain.ps1 powershell -ExecutionPolicy Bypass -File tools\install_windows_torch_retrainer.ps1 ``` -По умолчанию Windows-расписание переобучает PyTorch `LSTM/GRU` каждые 6 часов с `--limit 1000` на парах `BTCUSDT,ETHUSDT,SOLUSDT`. Параметры можно переопределить через env: `TORCH_RETRAIN_SYMBOLS`, `TORCH_RETRAIN_LIMIT`, `TORCH_RETRAIN_LOOKBACKS`, `TORCH_RETRAIN_ARCHITECTURES`, `TORCH_RETRAIN_HIDDEN_SIZES`, `TORCH_RETRAIN_LAYERS`, `TORCH_RETRAIN_DROPOUTS`, `TORCH_RETRAIN_EPOCHS`, `TORCH_RETRAIN_PATIENCE`, `TORCH_RETRAIN_INTERVAL`, `TORCH_RETRAIN_ENV`. +По умолчанию Windows-расписание переобучает PyTorch `LSTM/GRU` каждые 6 часов с `--limit 1000` на парах `BTCUSDT,ETHUSDT,SOLUSDT,LTCUSDT`. Параметры можно переопределить через env: `TORCH_RETRAIN_SYMBOLS`, `TORCH_RETRAIN_LIMIT`, `TORCH_RETRAIN_LOOKBACKS`, `TORCH_RETRAIN_ARCHITECTURES`, `TORCH_RETRAIN_HIDDEN_SIZES`, `TORCH_RETRAIN_LAYERS`, `TORCH_RETRAIN_DROPOUTS`, `TORCH_RETRAIN_EPOCHS`, `TORCH_RETRAIN_PATIENCE`, `TORCH_RETRAIN_INTERVAL`, `TORCH_RETRAIN_ENV`. Дополнительно для нового multifeature trainer доступны env-переменные `TORCH_RETRAIN_HORIZON` и `TORCH_RETRAIN_FEATURES`. @@ -108,8 +108,8 @@ Dashboard: `http://:8787/` TRADING_MODE=paper STARTING_BALANCE_USDT=100 AUTO_SELECT_SYMBOLS=false -TOP_SYMBOLS_COUNT=3 -SYMBOLS=BTCUSDT,ETHUSDT,SOLUSDT +TOP_SYMBOLS_COUNT=4 +SYMBOLS=BTCUSDT,ETHUSDT,SOLUSDT,LTCUSDT STRATEGY_MODE=torch_forecast BASE_INTERVAL=60 TREND_INTERVAL=D @@ -132,7 +132,7 @@ MIN_POSITION_USDT=1 MAX_POSITION_USDT=25 MAX_SYMBOL_EXPOSURE_USDT=25 MAX_TOTAL_EXPOSURE_USDT=75 -MAX_OPEN_POSITIONS=3 +MAX_OPEN_POSITIONS=4 MAX_POSITIONS_PER_SYMBOL=1 GRID_TRADING_ENABLED=false GRID_ENTRY_CONFIDENCE=0.58 diff --git a/crypto_spot_bot/config.py b/crypto_spot_bot/config.py index 1f17027..642d8db 100644 --- a/crypto_spot_bot/config.py +++ b/crypto_spot_bot/config.py @@ -5,7 +5,7 @@ from dataclasses import dataclass from pathlib import Path -FIXED_SPOT_SYMBOLS = ("BTCUSDT", "ETHUSDT", "SOLUSDT") +FIXED_SPOT_SYMBOLS = ("BTCUSDT", "ETHUSDT", "SOLUSDT", "LTCUSDT") STRATEGY_MODES = {"legacy", "trend_macd", "torch_forecast"} diff --git a/crypto_spot_bot/market_data.py b/crypto_spot_bot/market_data.py index 1b41189..2de1e26 100644 --- a/crypto_spot_bot/market_data.py +++ b/crypto_spot_bot/market_data.py @@ -15,7 +15,7 @@ from crypto_spot_bot.models import Candle, Ticker, utc_now from crypto_spot_bot.storage import Storage -POPULAR_FALLBACK = ["BTCUSDT", "ETHUSDT", "SOLUSDT"] +POPULAR_FALLBACK = ["BTCUSDT", "ETHUSDT", "SOLUSDT", "LTCUSDT"] def _float(value: Any, default: float = 0.0) -> float: diff --git a/tests/test_config.py b/tests/test_config.py index 74fba83..8566dba 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -75,7 +75,7 @@ def test_default_symbols_are_fixed_trend_pairs(tmp_path, monkeypatch) -> None: settings = load_settings(env_file) assert settings.auto_select_symbols is False - assert settings.top_symbols_count == 3 + assert settings.top_symbols_count == len(FIXED_SPOT_SYMBOLS) assert settings.symbols == FIXED_SPOT_SYMBOLS assert settings.strategy_mode == "torch_forecast" assert settings.base_interval == "60" @@ -84,7 +84,7 @@ def test_default_symbols_are_fixed_trend_pairs(tmp_path, monkeypatch) -> None: assert settings.time_series_forecast_enabled is True -def test_torch_forecast_forces_fixed_three_symbols(tmp_path, monkeypatch) -> None: +def test_torch_forecast_forces_fixed_symbols(tmp_path, monkeypatch) -> None: for key in ( "AUTO_SELECT_SYMBOLS", "TOP_SYMBOLS_COUNT", @@ -111,6 +111,6 @@ def test_torch_forecast_forces_fixed_three_symbols(tmp_path, monkeypatch) -> Non settings = load_settings(env_file) assert settings.auto_select_symbols is False - assert settings.top_symbols_count == 3 + assert settings.top_symbols_count == len(FIXED_SPOT_SYMBOLS) assert settings.symbols == FIXED_SPOT_SYMBOLS assert settings.time_series_forecast_enabled is True diff --git a/tools/install_windows_torch_retrainer.ps1 b/tools/install_windows_torch_retrainer.ps1 index 4a9e2a7..fa59dae 100644 --- a/tools/install_windows_torch_retrainer.ps1 +++ b/tools/install_windows_torch_retrainer.ps1 @@ -2,7 +2,7 @@ param( [string]$TaskName = "TradeBot PyTorch Forecaster Retrainer", [int]$EveryHours = 6, - [string]$Symbols = "BTCUSDT,ETHUSDT,SOLUSDT", + [string]$Symbols = "BTCUSDT,ETHUSDT,SOLUSDT,LTCUSDT", [int]$Limit = 1000, [int]$Horizon = 0, [string]$Features = "",