55 lines
2.5 KiB
TypeScript
55 lines
2.5 KiB
TypeScript
import { supabaseService } from '../src/services/SupabaseService.js';
|
|
import { ConnectorFactory } from '../src/connectors/factory.js';
|
|
import { config } from '../src/config/index.js';
|
|
import { SymbolMapper } from '../src/utils/symbolMapper.js';
|
|
import logger from '../src/utils/logger.js';
|
|
|
|
async function debug() {
|
|
logger.info("--- Debugging Profiles & Positions ---");
|
|
const profiles = await supabaseService.getActiveProfiles();
|
|
const users = await supabaseService.getActiveUsers();
|
|
|
|
logger.info(`Found ${profiles.length} active profiles and ${users.length} active users.`);
|
|
|
|
for (const profile of profiles) {
|
|
const user = users.find(u => u.user_id === profile.user_id);
|
|
if (!user) continue;
|
|
|
|
const userKey = config.PAPER_TRADING ? user.ALPACA_API_KEY : user.REAL_ALPACA_API_KEY;
|
|
const userSecret = config.PAPER_TRADING ? user.ALPACA_SECRET_KEY : user.REAL_ALPACA_SECRET_KEY;
|
|
|
|
if (userKey && userSecret) {
|
|
try {
|
|
const exchange = ConnectorFactory.getCustomConnector(config.EXECUTION_PROVIDER, userKey, userSecret);
|
|
for (const symbol of config.SYMBOLS) {
|
|
const tradeSymbol = SymbolMapper.toTradeSymbol(symbol, config.EXECUTION_PROVIDER);
|
|
const pos = await exchange.getPosition(tradeSymbol);
|
|
if (pos) {
|
|
logger.info(` ✅ FOUND ${symbol} (${tradeSymbol}) for profile ${profile.name}: ${pos.qty} @ ${pos.avg_entry_price}`);
|
|
}
|
|
}
|
|
} catch (e) { /* ignore */ }
|
|
}
|
|
}
|
|
|
|
logger.info("--- Checking MASTER Account (from .env) ---");
|
|
const masterKey = config.ALPACA_API_KEY;
|
|
const masterSecret = config.ALPACA_API_SECRET;
|
|
if (masterKey) {
|
|
try {
|
|
const exchange = ConnectorFactory.getCustomConnector(config.EXECUTION_PROVIDER, masterKey, masterSecret);
|
|
for (const symbol of config.SYMBOLS) {
|
|
const tradeSymbol = SymbolMapper.toTradeSymbol(symbol, config.EXECUTION_PROVIDER);
|
|
const pos = await exchange.getPosition(tradeSymbol);
|
|
if (pos) {
|
|
logger.info(` ✅ FOUND ${symbol} (${tradeSymbol}) for MASTER Account: ${pos.qty} @ ${pos.avg_entry_price}`);
|
|
}
|
|
}
|
|
} catch (e: any) {
|
|
logger.info(` ❌ Error checking Master Account: ${e.message}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
debug();
|