81 lines
3.2 KiB
TypeScript
81 lines
3.2 KiB
TypeScript
/**
|
|
* Example usage of the @stock-bot/config library
|
|
*/
|
|
import {
|
|
databaseConfig,
|
|
dataProviderConfigs,
|
|
riskConfig,
|
|
Environment,
|
|
getEnvironment,
|
|
marketDataGatewayConfig,
|
|
riskGuardianConfig,
|
|
ConfigurationError,
|
|
validateConfig
|
|
} from './index';
|
|
|
|
/**
|
|
* Display current configuration values
|
|
*/
|
|
export function printCurrentConfig(): void {
|
|
console.log('\n=== Stock Bot Configuration ===');
|
|
|
|
console.log('\nEnvironment:', getEnvironment());
|
|
console.log('\n--- Database Config ---');
|
|
console.log('Dragonfly Host:', databaseConfig.dragonfly.host);
|
|
console.log('Dragonfly Port:', databaseConfig.dragonfly.port);
|
|
console.log('QuestDB Host:', databaseConfig.questDB.host);
|
|
console.log('QuestDB Database:', databaseConfig.questDB.database);
|
|
console.log('MongoDB URI:', databaseConfig.mongodb.uri);
|
|
console.log('MongoDB Database:', databaseConfig.mongodb.database);
|
|
console.log('PostgreSQL Host:', databaseConfig.postgres.host);
|
|
console.log('PostgreSQL Database:', databaseConfig.postgres.database);
|
|
console.log('\n--- Data Provider Config ---');
|
|
console.log('Default Provider:', dataProviderConfigs.defaultProvider);
|
|
console.log('Providers:');
|
|
dataProviderConfigs.providers.forEach((provider: {
|
|
name: string;
|
|
type: string;
|
|
baseUrl?: string;
|
|
wsUrl?: string;
|
|
}) => {
|
|
console.log(` - ${provider.name} (${provider.type})`);
|
|
if (provider.baseUrl) console.log(` URL: ${provider.baseUrl}`);
|
|
if (provider.wsUrl) console.log(` WebSocket: ${provider.wsUrl}`);
|
|
});
|
|
|
|
console.log('\n--- Risk Config ---');
|
|
console.log('Max Drawdown:', riskConfig.maxDrawdown * 100, '%');
|
|
console.log('Max Position Size:', riskConfig.maxPositionSize * 100, '%');
|
|
console.log('Max Leverage:', riskConfig.maxLeverage, 'x');
|
|
console.log('Default Stop Loss:', riskConfig.stopLossDefault * 100, '%');
|
|
console.log('Default Take Profit:', riskConfig.takeProfitDefault * 100, '%');
|
|
|
|
console.log('\n--- Market Data Gateway Config ---');
|
|
console.log('Service Port:', marketDataGatewayConfig.service.port);
|
|
console.log('WebSocket Enabled:', marketDataGatewayConfig.websocket.enabled);
|
|
console.log('WebSocket Path:', marketDataGatewayConfig.websocket.path);
|
|
console.log('Caching Enabled:', marketDataGatewayConfig.caching.enabled);
|
|
console.log('Caching TTL:', marketDataGatewayConfig.caching.ttlSeconds, 'seconds');
|
|
|
|
console.log('\n--- Risk Guardian Config ---');
|
|
console.log('Service Port:', riskGuardianConfig.service.port);
|
|
console.log('Pre-Trade Validation:', riskGuardianConfig.riskChecks.preTradeValidation);
|
|
console.log('Portfolio Validation:', riskGuardianConfig.riskChecks.portfolioValidation);
|
|
console.log('Alerting Enabled:', riskGuardianConfig.alerting.enabled);
|
|
console.log('Critical Threshold:', riskGuardianConfig.alerting.criticalThreshold * 100, '%');
|
|
}
|
|
|
|
// Execute example if this file is run directly
|
|
if (require.main === module) { try {
|
|
printCurrentConfig();
|
|
} catch (error: unknown) {
|
|
if (error instanceof ConfigurationError) {
|
|
console.error('Configuration Error:', error.message);
|
|
} else if (error instanceof Error) {
|
|
console.error('Error:', error.message);
|
|
} else {
|
|
console.error('Unknown error:', error);
|
|
}
|
|
process.exit(1);
|
|
}
|
|
}
|