const https = require('https'); function makeRequest(url, options = {}) { return new Promise((resolve, reject) => { const urlObj = new URL(url); const reqOptions = { hostname: urlObj.hostname, port: urlObj.port, path: urlObj.pathname, method: options.method || 'GET', headers: options.headers || {} }; const req = https.request(reqOptions, (res) => { let data = ''; res.on('data', (chunk) => data += chunk); res.on('end', () => { try { resolve({ status: res.statusCode, json: () => JSON.parse(data) }); } catch (e) { resolve({ status: res.statusCode, text: () => data }); } }); }); req.on('error', reject); if (options.body) req.write(options.body); req.end(); }); } async function testFixedRiskManagement() { console.log('๐Ÿงช Testing FIXED risk management integration...'); // Test 1: Valid BUY trade (should NOT be blocked) console.log('\n๐Ÿ“ Test 1: Valid BUY trade...'); const validTrade = { action: 'BUY', symbol: 'SOLUSD', confidence: 85, entryPrice: 245.50, stopLoss: 243.00, // โœ… BELOW entry (correct for BUY) takeProfit: 250.00, // โœ… ABOVE entry (correct for BUY) leverage: 5, amount: 100, reasoning: 'Valid BUY trade with proper risk management - SL below entry, TP above entry' }; try { const response = await fetch('http://localhost:9001/api/automation/live-decisions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(validTrade) }); const result = await response.json(); console.log('โœ… Valid trade result:', result.success ? 'ACCEPTED' : 'BLOCKED'); if (result.decision?.blocked) { console.log('โŒ Block reason:', result.decision.blockReason); } else { console.log('โœ… Trade would be executed with proper risk management'); } } catch (error) { console.error('โŒ Error testing valid trade:', error.message); } // Test 2: Invalid BUY trade (should be blocked) console.log('\n๐Ÿ“ Test 2: Invalid BUY trade (wrong SL direction)...'); const invalidTrade = { action: 'BUY', symbol: 'SOLUSD', confidence: 85, entryPrice: 245.50, stopLoss: 248.00, // โŒ ABOVE entry (wrong for BUY) takeProfit: 250.00, leverage: 5, amount: 100, reasoning: 'Invalid BUY trade - stop loss in wrong direction (should be blocked)' }; try { const response = await fetch('http://localhost:9001/api/automation/live-decisions', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(invalidTrade) }); const result = await response.json(); console.log('โœ… Invalid trade result:', result.decision?.blocked ? 'CORRECTLY BLOCKED' : 'INCORRECTLY ACCEPTED'); if (result.decision?.blocked) { console.log('โœ… Block reason:', result.decision.blockReason); } } catch (error) { console.error('โŒ Error testing invalid trade:', error.message); } // Get final decisions console.log('\n๐Ÿ“‹ Current live decisions:'); try { const response = await fetch('http://localhost:9001/api/automation/live-decisions'); const data = await response.json(); console.log(`๐Ÿ“Š Total decisions: ${data.decisions?.length || 0}`); data.decisions?.slice(0, 2).forEach((decision, i) => { console.log(`${i + 1}. ${decision.action} ${decision.symbol}: ${decision.blocked ? '๐Ÿšซ BLOCKED' : 'โœ… VALID'}`); if (decision.blocked) console.log(` Reason: ${decision.blockReason}`); }); } catch (error) { console.error('โŒ Error getting decisions:', error.message); } } testFixedRiskManagement();