stock-bot/apps/stock/orchestrator/test-api-response.ts

69 lines
No EOL
2 KiB
TypeScript

import { createContainer } from './src/simple-container';
import fetch from 'node-fetch';
async function testApiResponse() {
console.log('Testing API Response Values...\n');
// First, create the container and start the server
const container = await createContainer({
database: {
mongodb: { enabled: false, uri: '' },
postgres: { enabled: false, uri: '' },
questdb: { enabled: false, host: '', port: 0 },
dragonfly: { enabled: false }
}
});
// Run a simple backtest via API
const backtestRequest = {
strategy: 'sma-crossover',
symbols: ['AAPL'],
startDate: '2023-01-01',
endDate: '2023-02-01',
initialCapital: 100000,
config: {
commission: 0.001,
slippage: 0.0001,
dataFrequency: '1d'
}
};
try {
console.log('Sending backtest request...');
const response = await fetch('http://localhost:2003/api/backtest/run', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(backtestRequest)
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const result = await response.json();
console.log('\n=== API RESPONSE ===');
console.log(JSON.stringify(result, null, 2));
if (result.metrics) {
console.log('\n=== METRICS VALUES ===');
console.log(`Total Return: ${result.metrics.totalReturn}`);
console.log(`Sharpe Ratio: ${result.metrics.sharpeRatio}`);
console.log(`Max Drawdown: ${result.metrics.maxDrawdown}`);
console.log(`Win Rate: ${result.metrics.winRate}`);
console.log(`Total Trades: ${result.metrics.totalTrades}`);
}
} catch (error) {
console.error('API call failed:', error);
}
console.log('\n=== TEST COMPLETE ===');
process.exit(0);
}
testApiResponse().catch(error => {
console.error('Test failed:', error);
process.exit(1);
});