80 lines
No EOL
2.8 KiB
TypeScript
Executable file
80 lines
No EOL
2.8 KiB
TypeScript
Executable file
#!/usr/bin/env bun
|
|
|
|
/**
|
|
* Minimal test to debug order flow
|
|
*/
|
|
|
|
import { BacktestEngine } from './src/backtest/BacktestEngine';
|
|
import { StrategyManager } from './src/strategies/StrategyManager';
|
|
import { StorageService } from './src/services/StorageService';
|
|
import { getLogger } from '@stock-bot/logger';
|
|
import { TradingEngine } from '@stock-bot/core';
|
|
import { ModeManager } from './src/core/ModeManager';
|
|
import { MarketDataService } from './src/services/MarketDataService';
|
|
import { ExecutionService } from './src/services/ExecutionService';
|
|
|
|
async function testMinimalBacktest() {
|
|
console.log('=== Minimal Backtest Test ===\n');
|
|
|
|
const logger = getLogger('test');
|
|
const container = {
|
|
logger,
|
|
custom: {}
|
|
};
|
|
|
|
const storageService = new StorageService(container as any);
|
|
const marketDataService = new MarketDataService(container as any);
|
|
const executionService = new ExecutionService(container as any);
|
|
const modeManager = new ModeManager(container as any, marketDataService, executionService, storageService);
|
|
|
|
// Add services to container
|
|
container.custom = {
|
|
ModeManager: modeManager,
|
|
MarketDataService: marketDataService,
|
|
ExecutionService: executionService
|
|
};
|
|
|
|
const strategyManager = new StrategyManager(container as any);
|
|
|
|
// Add debug logging to strategy manager
|
|
const origHandleMarketData = (strategyManager as any).handleMarketData;
|
|
(strategyManager as any).handleMarketData = async function(data: any) {
|
|
console.log(`>>> StrategyManager.handleMarketData called for ${data.data.symbol} @ ${data.data.close}`);
|
|
console.log(` Active strategies: ${this.activeStrategies.size}`);
|
|
console.log(` Strategy IDs: ${Array.from(this.activeStrategies).join(', ')}`);
|
|
return origHandleMarketData.call(this, data);
|
|
};
|
|
|
|
const backtestEngine = new BacktestEngine(container as any, storageService, strategyManager);
|
|
|
|
const config = {
|
|
mode: 'backtest' as const,
|
|
name: 'Minimal Test',
|
|
strategy: 'sma-crossover',
|
|
symbols: ['AAPL'],
|
|
startDate: '2023-01-01T00:00:00Z',
|
|
endDate: '2023-02-15T00:00:00Z', // 45 days to ensure we have enough data
|
|
initialCapital: 100000,
|
|
dataFrequency: '1d',
|
|
commission: 0.001,
|
|
slippage: 0.0001,
|
|
speed: 'max' as const
|
|
};
|
|
|
|
// Initialize mode manager with backtest config
|
|
await modeManager.initializeMode(config);
|
|
|
|
try {
|
|
const result = await backtestEngine.runBacktest(config);
|
|
|
|
console.log('\nResults:');
|
|
console.log(`Total Return: ${result.metrics.totalReturn.toFixed(2)}%`);
|
|
console.log(`Total Trades: ${result.metrics.totalTrades}`);
|
|
console.log(`Trades in history: ${result.trades.length}`);
|
|
|
|
} catch (error) {
|
|
console.error('Backtest failed:', error);
|
|
}
|
|
}
|
|
|
|
testMinimalBacktest().catch(console.error); |