// --- Simplified Internal Types for Logic Test --- enum SignalType { BUY = 'BUY', SELL = 'SELL', NONE = 'NONE' } const logger = { info: (msg: string) => console.log(`[INFO] ${msg}`), error: (msg: string) => console.log(`[ERROR] ${msg}`) }; // --- Mocking Configuration for Logic Test --- const config = { SYMBOL: 'BTC/USD', LOW_STRESS_MODE: true }; // --- Mocking Notifier --- const notifier = { sendAlert: async (msg: string) => { console.log('\n--- DISCORD ALERT SENT ---'); console.log(msg); console.log('--------------------------\n'); } }; async function runSimulation() { console.log('šŸš€ Starting Low-Stress Mode Simulation Test...\n'); let entryPrice: number | null = null; let lastKnownPrice = 0; // --- STEP 1: Simulate BUY Signal --- console.log('Step 1: Simulating a BUY Signal at $60,000...'); lastKnownPrice = 60000; // Simulate what happens in index.ts when result.changed is true if (config.LOW_STRESS_MODE) { entryPrice = lastKnownPrice; logger.info(`[Low-Stress] Entry Price set at ${entryPrice}`); await notifier.sendAlert(`🚨 *Trend Signal Alert* 🚨\nSignal: BUY\nAsset: ${config.SYMBOL}\nPrice: ${lastKnownPrice}`); } // --- STEP 2: Simulate Price Movement (Monitoring) --- const simulatePrice = async (currentPrice: number) => { lastKnownPrice = currentPrice; if (config.LOW_STRESS_MODE && entryPrice) { const percentChange = ((lastKnownPrice - entryPrice) / entryPrice) * 100; logger.info(`[Low-Stress] Monitoring: ${percentChange.toFixed(2)}% | Price: ${lastKnownPrice}`); if (percentChange >= 1.5) { const tpMessage = `šŸ’° *Take Profit Target Reached (+1.5%)* šŸ’°\nAsset: ${config.SYMBOL}\nEntry: ${entryPrice}\nCurrent: ${lastKnownPrice}\nProfit: ${percentChange.toFixed(2)}%\nPlan: $10/Day Low-Stress āœ…`; await notifier.sendAlert(tpMessage); entryPrice = null; // Reset } else if (percentChange <= -0.7) { const slMessage = `āš ļø *Stop Loss Buffer Hit (-0.7%)* āš ļø\nAsset: ${config.SYMBOL}\nEntry: ${entryPrice}\nCurrent: ${lastKnownPrice}\nLoss: ${percentChange.toFixed(2)}%\nPlan: Risk Managed šŸ›”ļø`; await notifier.sendAlert(slMessage); entryPrice = null; // Reset } } }; console.log('\nStep 2: Price moves to $60,500 (+0.83%)...'); await simulatePrice(60500); console.log('\nStep 3: Price moves to $60,950 (+1.58%)... (TP SHOULD TRIGGER)'); await simulatePrice(60950); console.log('\nStep 4: Restarting for Stop Loss Test at $60,000...'); entryPrice = 60000; console.log('\nStep 5: Price drops to $59,500 (-0.83%)... (SL SHOULD TRIGGER)'); await simulatePrice(59500); console.log('\nāœ… Simulation Test Complete.'); } runSimulation();