messy work. backtests / mock-data

This commit is contained in:
Boki 2025-07-03 08:37:23 -04:00
parent 4e4a048988
commit fa70ada2bb
51 changed files with 2576 additions and 887 deletions

View file

@ -222,6 +222,21 @@
"origins": ["http://localhost:3000", "http://localhost:4200"],
"credentials": true
}
},
"orchestrator": {
"port": 2004,
"defaultMode": "paper",
"paperTradingCapital": 100000,
"enableWebSocket": true,
"backtesting": {
"maxConcurrent": 5,
"defaultSpeed": "max",
"dataResolutions": ["1m", "5m", "15m", "1h", "1d"]
},
"strategies": {
"maxActive": 10,
"watchdogInterval": 5000
}
}
}
}

View file

@ -1,16 +1,21 @@
import * as path from 'path';
import { fileURLToPath } from 'url';
import { ConfigManager, createAppConfig } from '@stock-bot/config';
import { getLogger } from '@stock-bot/logger';
import { stockAppSchema, type StockAppConfig } from './schemas';
let configInstance: ConfigManager<StockAppConfig> | null = null;
// ESM-compatible __dirname
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
/**
* Initialize the stock application configuration
* @param serviceName - Optional service name to override port configuration
*/
export function initializeStockConfig(
serviceName?: 'dataIngestion' | 'dataPipeline' | 'webApi'
serviceName?: 'dataIngestion' | 'dataPipeline' | 'webApi' | 'orchestrator'
): StockAppConfig {
try {
if (!configInstance) {

View file

@ -89,6 +89,27 @@ export const stockAppSchema = baseAppSchema.extend({
.optional(),
})
.optional(),
orchestrator: z
.object({
port: z.number().default(3002),
defaultMode: z.enum(['backtest', 'paper', 'live']).default('paper'),
paperTradingCapital: z.number().default(100000),
enableWebSocket: z.boolean().default(true),
backtesting: z
.object({
maxConcurrent: z.number().default(5),
defaultSpeed: z.string().default('max'),
dataResolutions: z.array(z.string()).default(['1m', '5m', '15m', '1h', '1d']),
})
.optional(),
strategies: z
.object({
maxActive: z.number().default(10),
defaultTimeout: z.number().default(30000),
})
.optional(),
})
.optional(),
})
.optional(),
});