Add LTC to fixed Torch trading pairs
This commit is contained in:
+3
-3
@@ -8,8 +8,8 @@ BYBIT_API_SECRET=
|
|||||||
|
|
||||||
STARTING_BALANCE_USDT=100
|
STARTING_BALANCE_USDT=100
|
||||||
AUTO_SELECT_SYMBOLS=false
|
AUTO_SELECT_SYMBOLS=false
|
||||||
TOP_SYMBOLS_COUNT=3
|
TOP_SYMBOLS_COUNT=4
|
||||||
SYMBOLS=BTCUSDT,ETHUSDT,SOLUSDT
|
SYMBOLS=BTCUSDT,ETHUSDT,SOLUSDT,LTCUSDT
|
||||||
|
|
||||||
STRATEGY_MODE=torch_forecast
|
STRATEGY_MODE=torch_forecast
|
||||||
BASE_INTERVAL=60
|
BASE_INTERVAL=60
|
||||||
@@ -36,7 +36,7 @@ MIN_POSITION_USDT=1
|
|||||||
MAX_POSITION_USDT=25
|
MAX_POSITION_USDT=25
|
||||||
MAX_SYMBOL_EXPOSURE_USDT=25
|
MAX_SYMBOL_EXPOSURE_USDT=25
|
||||||
MAX_TOTAL_EXPOSURE_USDT=75
|
MAX_TOTAL_EXPOSURE_USDT=75
|
||||||
MAX_OPEN_POSITIONS=3
|
MAX_OPEN_POSITIONS=4
|
||||||
MAX_POSITIONS_PER_SYMBOL=1
|
MAX_POSITIONS_PER_SYMBOL=1
|
||||||
GRID_TRADING_ENABLED=false
|
GRID_TRADING_ENABLED=false
|
||||||
GRID_ENTRY_CONFIDENCE=0.58
|
GRID_ENTRY_CONFIDENCE=0.58
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Spot-бот для демо-торговли криптовалютой на р
|
|||||||
## Что реализовано
|
## Что реализовано
|
||||||
|
|
||||||
- Реальные market data Bybit Spot: REST bootstrap и WebSocket-обновления.
|
- Реальные 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.
|
- Paper trading с учетом cash, комиссий, проскальзывания, stop-loss, take-profit и trailing stop.
|
||||||
- Spot-only логика: покупка базовой монеты за USDT и продажа обратно, без short и без плеча.
|
- Spot-only логика: покупка базовой монеты за USDT и продажа обратно, без short и без плеча.
|
||||||
- Live spot-ордеры явно отправляются без плеча: `category=spot`, `isLeverage=0`.
|
- 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
|
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`.
|
Дополнительно для нового multifeature trainer доступны env-переменные `TORCH_RETRAIN_HORIZON` и `TORCH_RETRAIN_FEATURES`.
|
||||||
|
|
||||||
@@ -108,8 +108,8 @@ Dashboard: `http://<host>:8787/`
|
|||||||
TRADING_MODE=paper
|
TRADING_MODE=paper
|
||||||
STARTING_BALANCE_USDT=100
|
STARTING_BALANCE_USDT=100
|
||||||
AUTO_SELECT_SYMBOLS=false
|
AUTO_SELECT_SYMBOLS=false
|
||||||
TOP_SYMBOLS_COUNT=3
|
TOP_SYMBOLS_COUNT=4
|
||||||
SYMBOLS=BTCUSDT,ETHUSDT,SOLUSDT
|
SYMBOLS=BTCUSDT,ETHUSDT,SOLUSDT,LTCUSDT
|
||||||
STRATEGY_MODE=torch_forecast
|
STRATEGY_MODE=torch_forecast
|
||||||
BASE_INTERVAL=60
|
BASE_INTERVAL=60
|
||||||
TREND_INTERVAL=D
|
TREND_INTERVAL=D
|
||||||
@@ -132,7 +132,7 @@ MIN_POSITION_USDT=1
|
|||||||
MAX_POSITION_USDT=25
|
MAX_POSITION_USDT=25
|
||||||
MAX_SYMBOL_EXPOSURE_USDT=25
|
MAX_SYMBOL_EXPOSURE_USDT=25
|
||||||
MAX_TOTAL_EXPOSURE_USDT=75
|
MAX_TOTAL_EXPOSURE_USDT=75
|
||||||
MAX_OPEN_POSITIONS=3
|
MAX_OPEN_POSITIONS=4
|
||||||
MAX_POSITIONS_PER_SYMBOL=1
|
MAX_POSITIONS_PER_SYMBOL=1
|
||||||
GRID_TRADING_ENABLED=false
|
GRID_TRADING_ENABLED=false
|
||||||
GRID_ENTRY_CONFIDENCE=0.58
|
GRID_ENTRY_CONFIDENCE=0.58
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from dataclasses import dataclass
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
FIXED_SPOT_SYMBOLS = ("BTCUSDT", "ETHUSDT", "SOLUSDT")
|
FIXED_SPOT_SYMBOLS = ("BTCUSDT", "ETHUSDT", "SOLUSDT", "LTCUSDT")
|
||||||
STRATEGY_MODES = {"legacy", "trend_macd", "torch_forecast"}
|
STRATEGY_MODES = {"legacy", "trend_macd", "torch_forecast"}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ from crypto_spot_bot.models import Candle, Ticker, utc_now
|
|||||||
from crypto_spot_bot.storage import Storage
|
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:
|
def _float(value: Any, default: float = 0.0) -> float:
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ def test_default_symbols_are_fixed_trend_pairs(tmp_path, monkeypatch) -> None:
|
|||||||
settings = load_settings(env_file)
|
settings = load_settings(env_file)
|
||||||
|
|
||||||
assert settings.auto_select_symbols is False
|
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.symbols == FIXED_SPOT_SYMBOLS
|
||||||
assert settings.strategy_mode == "torch_forecast"
|
assert settings.strategy_mode == "torch_forecast"
|
||||||
assert settings.base_interval == "60"
|
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
|
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 (
|
for key in (
|
||||||
"AUTO_SELECT_SYMBOLS",
|
"AUTO_SELECT_SYMBOLS",
|
||||||
"TOP_SYMBOLS_COUNT",
|
"TOP_SYMBOLS_COUNT",
|
||||||
@@ -111,6 +111,6 @@ def test_torch_forecast_forces_fixed_three_symbols(tmp_path, monkeypatch) -> Non
|
|||||||
settings = load_settings(env_file)
|
settings = load_settings(env_file)
|
||||||
|
|
||||||
assert settings.auto_select_symbols is False
|
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.symbols == FIXED_SPOT_SYMBOLS
|
||||||
assert settings.time_series_forecast_enabled is True
|
assert settings.time_series_forecast_enabled is True
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
param(
|
param(
|
||||||
[string]$TaskName = "TradeBot PyTorch Forecaster Retrainer",
|
[string]$TaskName = "TradeBot PyTorch Forecaster Retrainer",
|
||||||
[int]$EveryHours = 6,
|
[int]$EveryHours = 6,
|
||||||
[string]$Symbols = "BTCUSDT,ETHUSDT,SOLUSDT",
|
[string]$Symbols = "BTCUSDT,ETHUSDT,SOLUSDT,LTCUSDT",
|
||||||
[int]$Limit = 1000,
|
[int]$Limit = 1000,
|
||||||
[int]$Horizon = 0,
|
[int]$Horizon = 0,
|
||||||
[string]$Features = "",
|
[string]$Features = "",
|
||||||
|
|||||||
Reference in New Issue
Block a user