const WebSocket = require('ws'); const socket = new WebSocket('wss://ws.finnhub.io?token=d62ho41r01qlugeq3ge0d62ho41r01qlugeq3geg'); console.log('πŸš€ Finnhub νŒŒμ›Œ ν…ŒμŠ€νŠΈ μ‹œμž‘!'); console.log('πŸ’‘ λΉ„νŠΈμ½”μΈ (24μ‹œκ°„ 거래) μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§\n'); let tradeCount = 0; const startTime = Date.now(); socket.on('open', () => { console.log('βœ… μ—°κ²° 성곡!'); console.log('πŸ“Š BTC-USD ꡬ독 μ™„λ£Œ\n'); console.log('=== μ‹€μ‹œκ°„ 거래 데이터 폭발! ===\n'); // λΉ„νŠΈμ½”μΈ ꡬ독 (24μ‹œκ°„ 거래) socket.send(JSON.stringify({ type: 'subscribe', symbol: 'BINANCE:BTCUSDT' })); }); socket.on('message', (data) => { const message = JSON.parse(data); if (message.type === 'trade' && message.data) { message.data.forEach(trade => { tradeCount++; const time = new Date(trade.t).toLocaleTimeString('ko-KR', { hour12: false, fractionalSecondDigits: 3 }); const price = trade.p.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); const volume = trade.v.toFixed(6); console.log(`⚑ #${tradeCount} | BTC: $${price} | μˆ˜λŸ‰: ${volume} | ${time}`); }); } }); socket.on('error', (error) => { console.error('❌ μ—λŸ¬:', error.message); }); // 10초 ν›„ κ²°κ³Ό μš”μ•½ setTimeout(() => { const elapsed = ((Date.now() - startTime) / 1000).toFixed(1); console.log('\n================================='); console.log('🎯 Finnhub νŒŒμ›Œ ν…ŒμŠ€νŠΈ κ²°κ³Ό'); console.log('================================='); console.log(`⏱️ μ‹€ν–‰ μ‹œκ°„: ${elapsed}초`); console.log(`πŸ“Š 받은 거래 수: ${tradeCount}개`); console.log(`⚑ μ΄ˆλ‹Ή 거래: ${(tradeCount / elapsed).toFixed(1)}개/초`); console.log(`πŸš€ μ§€μ—° μ‹œκ°„: < 1초 (μ‹€μ‹œκ°„)`); console.log('\nβœ… 이게 Finnhub의 νŒŒμ›Œμž…λ‹ˆλ‹€!'); console.log('βœ… 08:30 κ³ μš©μ§€ν‘œ λ°œν‘œ μ‹œ TQQQ도 μ΄λ ‡κ²Œ μŸμ•„μ§‘λ‹ˆλ‹€!'); socket.close(); process.exit(0); }, 10000);