Search

IQStock

목차

개요

IQStock은 iQ 스튜디오 전략 코드에서 전역으로 접근 가능한 싱글톤 객체입니다.
Stock 객체가 종목 하나를 나타낸다면, IQStock은 그 종목들의 컨테이너(Container) 역할을 합니다. 전략 코드에서 종목 유니버스를 구성하거나 특정 종목 하나를 가져올 때 반드시 사용합니다.

메서드 목록

메서드
반환 타입
설명
filter(filterfn)
Stock[]
조건 함수를 만족하는 종목 배열 반환
getStock(code)
Stock 또는 null
특정 종목 코드의 Stock 객체 반환
getAllStock()
Stock[]
모든 Stock 객체의 배열 반환

filter(filterfn)

원하는 종목을 필터링한 종목의 배열을 얻을 수 있습니다.

파라미터

파라미터
타입
설명
filterfn
function(stock: Stock) → boolean
Stock 객체를 파라미터로 받아 boolean값을 리턴하는 함수. true를 리턴한 종목은 결과 배열에 포함되고, false를 리턴한 종목은 제외됩니다.

반환값

Stock 객체의 배열 (Stock[])

Sample

var universe0 = IQStock.filter(function(stock) { return (stock.getMarketCapital() > 10000); // 시가총액이 100억 이상인 종목으로 필터링 }); logger.debug('universe0 size:' + universe0.length); // 필터링된 종목수를 출력함
JavaScript
복사

getStock(code)

code에 해당하는 종목 하나를 가져옵니다.

파라미터

파라미터
타입
설명
code
string
[한국] A로 시작하며 단축코드 6자리. 예) 삼성전자: A005930 [미국] 종목 Symbol. 예) 애플: AAPL

반환값

code에 해당하는 Stock 객체. 해당하는 코드가 없으면 null.
주의: 반환값이 null일 수 있으므로 반드시 null 체크 후 사용하세요.

Sample

var sse = IQStock.getStock('A005930'); if (sse == null) logger.debug("종목이 없습니다."); else logger.debug('sse 종가:' + sse.getClose());
JavaScript
복사

getAllStock()

모든 Stock 객체의 배열을 리턴합니다.

파라미터

없음.

반환값

모든 Stock 객체의 배열 (Stock[])
주의: 한국·미국 전체 종목이 포함되므로 배열 크기가 매우 클 수 있습니다. 대부분의 경우 filter()로 유니버스를 먼저 구성하는 것이 효율적입니다.

Sample

var stocks = IQStock.getAllStock(); logger.debug("all stocks size: " + stocks.length);
JavaScript
복사

활용 패턴

패턴 1: 유니버스 구성 → 스코어 계산 → 랭킹

iQ 스튜디오 퀀트 전략의 가장 일반적인 패턴입니다.
// Step 1: 유니버스 구성 var universe = IQStock.filter(function(stock) { return stock.market === 1 // KOSPI && !stock.isETF // ETF 제외 && stock.isListed() // 상장 중 && stock.manage === 0 // 관리종목 아님 && stock.getMarketCapital() > 50000; // 시가총액 500억 이상 }); // Step 2: 각 종목에 팩터 스코어 부여 for (var i = 0; i < universe.length; i++) { var stock = universe[i]; var per = stock.getPER(); if (per > 0) { stock.setScore('per', per); } } // Step 3: 랭킹 기반으로 상위 종목 출력 for (var i = 0; i < universe.length; i++) { var stock = universe[i]; if (stock.getScore('per')) { var rank = stock.getRank(universe, 'per', RankOrder.ascending); if (rank <= 20) { logger.debug('[저PER 상위] ' + stock.name + ' PER: ' + stock.getScore('per')); } } }
JavaScript
복사

패턴 2: 특정 종목 단건 조회

var benchmark = IQStock.getStock('A005930'); // 삼성전자 if (benchmark != null) { var ret20 = (benchmark.getAdjClose() - benchmark.getAdjClose(20)) / benchmark.getAdjClose(20); logger.debug('삼성전자 20일 수익률: ' + (ret20 * 100).toFixed(2) + '%'); }
JavaScript
복사

패턴 3: 섹터별 필터링

// KOSDAQ 반도체 종목 (sector 코드 Q159) var semiUniverse = IQStock.filter(function(stock) { return stock.market === 0 && stock.sector === 'Q159'; }); logger.debug('KOSDAQ 반도체 종목 수: ' + semiUniverse.length);
JavaScript
복사

관련 API

Stock 객체 — 개별 종목의 가격, 재무, 기술적 지표 등 상세 데이터 조회
RankOrder.ascending / RankOrder.descendingStock.getRank() 함수의 정렬 방향 상수