learning_ai_invt_trdg/backend/test_alpaca_full_cycle.ts

45 lines
1.7 KiB
TypeScript

import * as dotenv from 'dotenv';
import path from 'path';
import { AlpacaConnector } from '../src/connectors/alpaca.js';
async function testFullExecutionCycle() {
console.log('--- Alpaca Full Cycle (Buy -> Sell) Test Start ---');
dotenv.config({ path: path.resolve(process.cwd(), '.env') });
const connector = new AlpacaConnector();
const symbol = 'BTC/USD';
const qty = 0.001; // Approx $95
try {
// 1. PLACE BUY ORDER
console.log(`Step 1: Placing MARKET BUY for ${qty} ${symbol}...`);
const buyOrder = await connector.placeOrder(symbol, 'buy', qty, 'market');
if (buyOrder && buyOrder.id) {
console.log(`✅ BUY SUCCESS: Order ID ${buyOrder.id}`);
} else {
throw new Error('Buy order failed - no ID returned');
}
// Wait a few seconds for the buy to process
console.log('Waiting 3 seconds for position to register...');
await new Promise(r => setTimeout(r, 3000));
// 2. PLACE SELL ORDER (The real test for the user)
console.log(`Step 2: Placing MARKET SELL for ${qty} ${symbol}...`);
const sellOrder = await connector.placeOrder(symbol, 'sell', qty, 'market');
if (sellOrder && sellOrder.id) {
console.log(`✅ SELL SUCCESS: Order ID ${sellOrder.id}`);
} else {
throw new Error('Sell order failed - no ID returned');
}
console.log('\n--- FULL CYCLE VERIFIED SUCCESSFULLY ---');
} catch (error: any) {
console.log(`❌ FAILED: ${error.message || error}`);
}
console.log('--- Alpaca Full Cycle Test End ---');
}
testFullExecutionCycle().catch(console.error);