목차
개요
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 객체 — 계좌 잔고·평가액 조회
