Search

logger

목차

개요

logger는 iQ 스튜디오 전략 코드에서 전역으로 접근 가능한 싱글톤 디버깅 객체입니다.
logger로 출력한 내용은 iQ 스튜디오 콘솔창에 표시됩니다. 시뮬레이션 실행 중 변수값·계산 결과·매매 내역 등을 출력하여 전략 로직을 검증할 때 사용합니다.
var stock = IQStock.getStock('A005930'); logger.debug('삼성전자 당일 종가: ' + stock.getClose());
JavaScript
복사

메서드 목록

메서드
설명
debug(msg)
DEBUG 레벨 메시지 출력
info(msg)
INFO 레벨 메시지 출력
error(msg)
ERROR 레벨 메시지 출력

debug(msg)

DEBUG 레벨 메시지를 콘솔에 출력합니다.
전략 개발 중 값을 확인하거나 로직 흐름을 추적할 때 가장 많이 사용하는 메서드입니다.

파라미터

파라미터
타입
설명
msg
string
출력할 메시지. 문자열 연결(+)로 변수값을 포함할 수 있습니다.

반환값

없음.

Sample

var stock = IQStock.getStock('A005930'); logger.debug('당일 종가: ' + stock.getClose()); logger.debug('전일 종가: ' + stock.getClose(1)); logger.debug('20일 이동평균: ' + stock.getMA(20).toFixed(2));
JavaScript
복사

info(msg)

INFO 레벨 메시지를 콘솔에 출력합니다.
중요도가 높은 상태 변화나 주요 이벤트(매매 체결, 리밸런싱 실행 등)를 기록할 때 사용합니다.

파라미터

파라미터
타입
설명
msg
string
출력할 메시지

반환값

없음.

Sample

logger.info('리밸런싱 시작: ' + now); logger.info('매수 체결 — 종목: A005930, 수량: 10주');
JavaScript
복사

error(msg)

ERROR 레벨 메시지를 콘솔에 출력합니다.
예외 상황이나 의도치 않은 값이 발생했을 때 기록합니다.

파라미터

파라미터
타입
설명
msg
string
출력할 에러 메시지

반환값

없음.

Sample

var stock = IQStock.getStock('A005930'); if (stock == null) { logger.error('종목을 찾을 수 없습니다: A005930'); return; }
JavaScript
복사

활용 패턴

패턴 1: 숫자 포맷팅

금액은 IQUtil.getNumberWithCommas()로, 소수는 toFixed()로 가독성을 높입니다.
var acc = IQAccount.getDefaultAccount(); logger.debug('총 평가액: ' + IQUtil.getNumberWithCommas(acc.getTotalEquity().toFixed(0)) + '원'); logger.debug('누적수익률: ' + ((acc.getTotalEquity() / acc.aum - 1) * 100).toFixed(2) + '%');
JavaScript
복사

패턴 2: 매매 내역 추적

매수·매도가 발생하는 시점에 로그를 남겨 체결 내역을 확인합니다.
function onDayClose(now) { var sse = IQStock.getStock('A005930'); if (sse == null) return; var acc = IQAccount.getDefaultAccount(); if (sse.getClose() > sse.getMA(20) && acc.cash > sse.getClose() * 10) { acc.buy('A005930', 10); logger.info('[매수] ' + now + ' 삼성전자 10주 @ ' + IQUtil.getNumberWithCommas(sse.getClose().toFixed(0))); } }
JavaScript
복사

패턴 3: 조건부 출력 — 특정 날짜에만 로그

매일 출력하면 콘솔이 과도하게 길어질 수 있으므로, 리밸런싱일 등 특정 조건에서만 출력합니다.
function onDayClose(now) { if (!IQDate.isRebalancingDay(now)) return; var acc = IQAccount.getDefaultAccount(); var eggs = acc.getEggs(); logger.debug('=== 리밸런싱 날짜: ' + now + ' ==='); logger.debug('보유 종목 수: ' + eggs.length); logger.debug('현금 잔고: ' + IQUtil.getNumberWithCommas(acc.cash.toFixed(0))); logger.debug('총 평가액: ' + IQUtil.getNumberWithCommas(acc.getTotalEquity().toFixed(0))); }
JavaScript
복사

패턴 4: JSON 객체 출력

복합 지표(볼린저밴드, MACD 등) 반환값을 확인할 때 JSON.stringify()를 활용합니다.
var stock = IQStock.getStock('A005930'); var bb = stock.getBollingerBand(20, 2, 2); var macd = stock.getMACD(12, 26, 9); logger.debug('볼린저밴드: ' + JSON.stringify(bb)); logger.debug('MACD: ' + JSON.stringify(macd));
JavaScript
복사

주의사항

logger는 시뮬레이션 콘솔에만 출력됩니다. 실거래(Live) 환경에서는 별도 확인 방법을 참고하세요.
onDayClose()처럼 매 거래일 반복 호출되는 함수 안에서 무조건 출력하면 로그가 매우 많아질 수 있습니다. 조건부로 출력하거나 info / error 레벨을 적절히 구분해서 사용하세요.
숫자를 직접 문자열에 연결(+)하면 부동소수점이 길게 출력될 수 있습니다. toFixed(N)으로 자릿수를 제한하는 것을 권장합니다.

관련 API

IQStock 객체 — 종목 필터링 및 개별 종목 조회
Account 객체 — 계좌 잔고·평가액 조회