54 lines
2.1 KiB
TypeScript
54 lines
2.1 KiB
TypeScript
import { config } from '../src/config/index.js';
|
|
import { AlpacaConnector } from '../src/connectors/alpaca.js';
|
|
import { TradeExecutor } from '../src/services/TradeExecutor.js';
|
|
import logger from '../src/utils/logger.js';
|
|
|
|
async function testFullLifeCycle() {
|
|
logger.info('--- Starting FINAL E2E Trade Life Cycle Verification ---');
|
|
|
|
// Use your specific user ID
|
|
const userId = '8d5efd9e-0760-4859-8c07-0930ab3ede5a';
|
|
const symbol = 'BTC/USD';
|
|
const qty = 0.001;
|
|
|
|
const exchange = new AlpacaConnector(config.ALPACA_API_KEY, config.ALPACA_API_SECRET);
|
|
const executor = new TradeExecutor(exchange, undefined, userId);
|
|
|
|
try {
|
|
// 1. OPEN POSITION
|
|
logger.info(`[Step 1] Opening Position for ${userId}...`);
|
|
const openResult = await executor.openPosition(symbol, 'BUY' as any, qty, 'market');
|
|
|
|
if (!openResult.success) {
|
|
throw new Error(`Open failed: ${openResult.error}`);
|
|
}
|
|
logger.info(`✅ Open Processed: ${openResult.orderId}`);
|
|
|
|
// Wait a bit for fill and status
|
|
logger.info('Waiting 5 seconds for fill confirmation...');
|
|
await new Promise(r => setTimeout(r, 5000));
|
|
|
|
// 2. CLOSE POSITION
|
|
logger.info(`[Step 2] Closing Position for ${userId}...`);
|
|
const closeResult = await executor.closePosition(symbol, 'E2E_VERIFICATION_COMPLETE');
|
|
|
|
if (!closeResult.success) {
|
|
throw new Error(`Close failed: ${closeResult.error}`);
|
|
}
|
|
logger.info(`✅ Close Processed: Exit Price ${closeResult.exitPrice}`);
|
|
|
|
// 3. FINAL WAIT FOR LOGGING
|
|
logger.info('Waiting 10 seconds for all Supabase async logs to finish...');
|
|
await new Promise(r => setTimeout(r, 10000));
|
|
|
|
logger.info('--- E2E TEST COMPLETED ---');
|
|
logger.info('Please check your Dashboard -> Trade History Tab.');
|
|
logger.info(`Looking for entry: Symbol=${symbol}, Reason=E2E_VERIFICATION_COMPLETE`);
|
|
|
|
} catch (error: any) {
|
|
logger.error(`❌ TEST FAILED: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
testFullLifeCycle().catch(console.error);
|