fix: LLM analysis + new run button + settings page support

- Fixed LLM failing silently (401 auth error on every iteration)
- Reset provider to Ollama (working) from broken OpenRouter config
- Added /api/clear endpoint + 'New Run' button to reset history
- LLM failures now logged visibly with error details
- LLM suggestions persisted to iteration data (survive restarts)
- Settings page support via llm_settings.json (multi-provider)
This commit is contained in:
BizzleBot
2026-03-20 21:51:05 +00:00
parent c17b3b5167
commit aba30f7718
8 changed files with 911 additions and 117 deletions
+68
View File
@@ -0,0 +1,68 @@
{
"model_type": "xgboost",
"features": {
"use_price_position": true,
"use_momentum": true,
"use_volatility": true,
"use_volume": true,
"use_cycle": true,
"use_pca": false,
"pca_variance": 0.95,
"use_scaler": true
},
"target": {
"type": "regression",
"forward_periods_1h": [
168,
720,
2160
],
"forward_periods_4h": [
42,
180,
540
],
"weights": [
0.2,
0.3,
0.5
],
"score_range": [
0,
100
]
},
"hyperparameters": {
"learning_rate": 0.01,
"max_depth": 4,
"n_estimators": 300,
"subsample": 0.8,
"colsample_bytree": 0.8,
"min_child_weight": 20,
"gamma": 0.3,
"reg_alpha": 0.5,
"reg_lambda": 3.0,
"lstm_hidden_size": 128,
"lstm_num_layers": 2,
"lstm_dropout": 0.3,
"lstm_epochs": 100,
"lstm_batch_size": 64,
"lstm_sequence_length": 30,
"lstm_patience": 10
},
"strategy": {
"strong_buy_threshold": 65,
"good_buy_threshold": 55,
"poor_threshold": 35
},
"training": {
"rolling_window": true,
"rolling_train_size": 2500,
"rolling_test_size": 300,
"walk_forward_windows": 5,
"train_pct": 0.7,
"validation_pct": 0.15,
"test_pct": 0.15
},
"timeframe": "4h"
}
+40 -64
View File
@@ -1,92 +1,68 @@
{
"model_type": "hybrid",
"model_type": "xgboost",
"features": {
"technical_indicators": [
"RSI_14",
"RSI_7",
"MACD_line",
"MACD_signal",
"MACD_hist",
"BB_upper",
"BB_lower",
"BB_width",
"ATR_14",
"SMA_20",
"SMA_50",
"EMA_10",
"EMA_20",
"OBV",
"stoch_k",
"stoch_d",
"williams_r",
"CCI_20",
"ROC_10"
],
"lookback_periods": [
3,
5,
10,
20
],
"use_volume_features": true,
"use_volatility_features": true,
"use_candle_patterns": false,
"use_lag_features": true,
"lag_periods": [
1,
2,
3,
5
],
"use_pca": true,
"use_price_position": true,
"use_momentum": true,
"use_volatility": true,
"use_volume": true,
"use_cycle": true,
"use_pca": false,
"pca_variance": 0.95,
"use_scaler": true
},
"target": {
"type": "classification",
"direction": "both",
"horizon_candles": 4,
"threshold_pct": 1.0
"type": "regression",
"forward_periods_1h": [
168,
720,
2160
],
"forward_periods_4h": [
42,
180,
540
],
"weights": [
0.2,
0.3,
0.5
],
"score_range": [
0,
100
]
},
"hyperparameters": {
"learning_rate": 0.001,
"max_depth": 5,
"learning_rate": 0.01,
"max_depth": 4,
"n_estimators": 300,
"subsample": 0.8,
"colsample_bytree": 0.8,
"min_child_weight": 5,
"min_child_weight": 20,
"gamma": 0.3,
"reg_alpha": 0.1,
"reg_lambda": 5.0,
"reg_alpha": 0.5,
"reg_lambda": 3.0,
"lstm_hidden_size": 128,
"lstm_num_layers": 2,
"lstm_dropout": 0.3,
"lstm_epochs": 100,
"lstm_batch_size": 64,
"lstm_sequence_length": 20,
"lstm_sequence_length": 30,
"lstm_patience": 10
},
"strategy": {
"entry_threshold": 0.65,
"exit_type": "trailing_stop",
"stop_loss_pct": 2.0,
"take_profit_pct": 4.0,
"trailing_stop_pct": 1.5,
"position_sizing": "confidence_scaled",
"max_position_pct": 100,
"min_confidence_to_trade": 0.5,
"dynamic_sl_tp": true,
"atr_sl_multiplier": 1.2,
"atr_tp_multiplier": 3.0
"strong_buy_threshold": 65,
"good_buy_threshold": 55,
"poor_threshold": 35
},
"training": {
"rolling_window": true,
"rolling_train_size": 2500,
"rolling_test_size": 300,
"walk_forward_windows": 5,
"train_pct": 0.7,
"validation_pct": 0.15,
"test_pct": 0.15,
"rolling_window": true,
"rolling_train_size": 3000,
"rolling_test_size": 200
"test_pct": 0.15
},
"timeframe": "4h"
}
+21
View File
@@ -0,0 +1,21 @@
{
"provider": "ollama",
"model": "qwen3.5:27b",
"providers": {
"ollama": {
"base_url": "http://100.100.242.21:11434"
},
"lmstudio": {
"base_url": "http://100.100.242.21:1234"
},
"openai": {
"api_key": ""
},
"anthropic": {
"api_key": ""
},
"openrouter": {
"api_key": ""
}
}
}