learning_ai_invt_trdg/backend/create_low_risk_profile.ts
Saravana Achu Mac 6fac10de9d refactor(backend): root scripts use legacySupabase client where possible
- Call loadDynamicConfig() without dead supabaseService argument (Cosmos-backed).
- Use getLegacySupabaseClient() for raw .from() queries in maintenance scripts.
- manualOverrideCloseTrades: typed imports + legacy client for lifecycle SELECT.
- verify_realtime: ESM .js imports and comment for subscribeToProfiles.
- verifyTenantIsolation: comment for singleton monkey-patch.

Made-with: Cursor
2026-04-04 20:44:24 -07:00

72 lines
2.7 KiB
TypeScript

import { supabaseService } from '../src/services/SupabaseService.js';
import { getLegacySupabaseClient } from '../src/services/legacySupabaseClient.js';
import logger from '../src/utils/logger.js';
import { v4 as uuidv4 } from 'uuid';
async function createLowRiskProfile() {
logger.info('🛡️ CREATING LOW RISK & SCALP PROFILES EXAMPLE...');
const legacyClient = getLegacySupabaseClient();
if (!legacyClient) {
logger.error('❌ Legacy Supabase client not configured.');
return;
}
// 1. Get User
const users = await supabaseService.getActiveUsers();
if (users.length === 0) {
logger.error('❌ No active users found.');
return;
}
const user = users[0];
// 2. Create "Low Risk Swing" Profile
const lowRiskProfile = {
user_id: user.user_id,
name: "Low Risk Swing Trader 🛡️",
allocated_capital: 2000,
risk_per_trade_percent: 0.5, // Ultra Low Risk (0.5%)
symbols: "BTC/USD,ETH/USD", // Major Pairs Only
is_active: true,
strategy_config: {
riskLimits: {
maxDailyLossUsd: 50, // Strict Stop
maxOpenTrades: 2,
maxConsecutiveLosses: 2
},
execution: { orderType: 'limit' }, // Limit Orders for safer entry
rules: [
{ ruleId: 'TrendBiasRule', enabled: true }, // Must be with Trend (EMA200)
{ ruleId: 'ZoneRule', enabled: true }, // Must be near Support Zone
{ ruleId: 'RiskManagementRule', enabled: true }, // ATR Volatility Check
{ ruleId: 'SessionRule', enabled: true } // Only London/NY Sessions
]
}
};
// 3. Create "Aggressive Scalp" Profile (for contrast, if not exists)
// We already renamed the first one to High Risk Scalper, so we just add the Low Risk one.
// Insert Low Risk Profile
// @ts-ignore
const { data, error } = await legacyClient
.from('trade_profiles')
.insert([lowRiskProfile])
.select()
.single();
if (error) {
logger.error(`❌ Failed to create profile: ${error.message}`);
} else {
logger.info(`✅ Created Profile: [${lowRiskProfile.name}]`);
logger.info(` - Capital: $${lowRiskProfile.allocated_capital}`);
logger.info(` - Risk: ${lowRiskProfile.risk_per_trade_percent}% per trade`);
logger.info(` - Rules: Trend + Zone + RiskGuard + Session`);
logger.info(` - Strategy: Only trades major trend pullbacks during active sessions.`);
}
process.exit(0);
}
createLowRiskProfile().catch(console.error);