Files
openclaw-backups/skills/openclaw-self-healing/check-price-now.js

72 lines
2.2 KiB
JavaScript

const WebSocket = require('ws');
const socket = new WebSocket('wss://ws.finnhub.io?token=d62ho41r01qlugeq3ge0d62ho41r01qlugeq3geg');
console.log('⏳ Finnhub 연결 중...\n');
const prices = { TQQQ: null, QQQ: null };
let receivedCount = 0;
socket.on('open', () => {
console.log('✅ 연결 성공!');
socket.send(JSON.stringify({ type: 'subscribe', symbol: 'TQQQ' }));
socket.send(JSON.stringify({ type: 'subscribe', symbol: 'QQQ' }));
console.log('📊 TQQQ, QQQ 구독 완료\n');
console.log('=== 실시간 가격 (최근 5개) ===\n');
});
socket.on('message', (data) => {
const message = JSON.parse(data);
if (message.type === 'trade' && message.data) {
message.data.slice(0, 5).forEach(trade => {
const time = new Date(trade.t).toLocaleTimeString('ko-KR', { hour12: false });
const price = trade.p.toFixed(2);
const symbol = trade.s;
prices[symbol] = price;
receivedCount++;
console.log(`📈 ${symbol}: $${price} | ${time}`);
});
// 충분한 데이터 받으면 요약 출력
if (receivedCount >= 10) {
console.log('\n=== 현재 가격 요약 ===');
if (prices.TQQQ) console.log(`TQQQ: $${prices.TQQQ}`);
if (prices.QQQ) console.log(`QQQ: $${prices.QQQ}`);
console.log('\n✅ 토스증권 가격과 비교해보세요!');
console.log('(차이가 $0.10 이내면 정상입니다)\n');
socket.close();
process.exit(0);
}
}
});
socket.on('error', (error) => {
console.error('❌ 에러:', error.message);
});
// 15초 후 자동 종료
setTimeout(() => {
console.log('\n=== 현재까지 받은 가격 ===');
if (prices.TQQQ) {
console.log(`TQQQ: $${prices.TQQQ}`);
} else {
console.log('TQQQ: 데이터 없음 (프리마켓 거래 없음)');
}
if (prices.QQQ) {
console.log(`QQQ: $${prices.QQQ}`);
} else {
console.log('QQQ: 데이터 없음 (프리마켓 거래 없음)');
}
console.log('\n💡 프리마켓 시간대는 거래가 적어 데이터가 적을 수 있습니다.');
console.log('✅ 정규장 개장(23:30 KST) 시 활발한 데이터 수신 예상');
socket.close();
process.exit(0);
}, 15000);