Search

Stock

개요

Stock 객체는 주식 종목 하나를 나타내는 iQ 스튜디오의 핵심 객체입니다.
한국 거래소(KOSPI/KOSDAQ)의 일반 주식, ETF, 리츠, 인프라 펀드와 미국 주식(NASDAQ, NYSE 등)을 모두 동일한 인터페이스로 다룹니다.
// 삼성전자 종목 객체 가져오기 (IQStock 모듈 사용) var stock = IQStock.getStock('A005930'); logger.debug('code: ' + stock.code + ', name: ' + stock.name);
JavaScript
복사

목차

index 파라미터 공통 설명

가격·거래 데이터 함수 대부분은 index 파라미터를 받습니다.
index
의미
0 (기본값, 생략 가능)
당일 데이터
1
1 거래일 전 (어제)
2
2 거래일 전
N
N 거래일 전
중요: 기본으로 로드되는 과거 데이터 범위를 초과하면 loadPrevData(year, month, day) 함수로 미리 데이터를 불러와야 합니다.

재무 데이터 index 파라미터 공통 설명

재무(Fundamental) 함수의 index거래일이 아닌 분기 기준입니다.
index
의미
0 (기본값, 생략 가능)
최신 공시 분기
1
1분기 전
N
N분기 전

1. 속성 (Properties)

속성은 함수 호출 없이 직접 접근하는 읽기 전용 값입니다.

code

구분
설명
한국
A로 시작하는 6자리 종목 코드 (예: A005930)
미국
알파벳 대문자 약어 Symbol (예: AAPL)
logger.debug(stock.code); // 'A005930'
JavaScript
복사

name

종목 이름 (한국어 또는 영문).
logger.debug(stock.name); // '삼성전자'
JavaScript
복사

isETF

의미
true
ETF 종목
false
일반 종목

category

종목의 세부 유형 코드.
한국
유형
0
보통주 / 우선주
1
ETF
6
리츠
12
인프라 펀드
미국
유형
0
Domestic Common Stock
1
ETF
2
Domestic Common Stock Primary Class
3
Domestic Common Stock Secondary Class
4
Domestic Preferred Stock
5
Domestic Stock Warrant
6
ADR Common Stock
7
ADR Common Stock Primary Class
8
ADR Common Stock Secondary Class
9
ADR Preferred Stock
10
ADR Stock Warrant
11
Canadian Common Stock
12
Canadian Common Stock Primary Class
13
Canadian Preferred Stock
14
Canadian Stock Warrant
15
CEF
16
ETD
17
ETN

market

종목이 상장된 거래시장.
한국
시장
1
KOSPI (거래소)
0
KOSDAQ
미국
거래소
0
NASDAQ
1
NYSE
2
NYSEARCA
3
NYSEMKT (아멕스)
4
BATS

manage

관리 상태 코드 (비트 연산 허용, 한국만 해당; 미국은 항상 0)
비트값
상태
1
관리
2
투자유의
4
거래정지
8
정리매매
// 예: manage === 5 → 관리(1) + 거래정지(4) 동시 해당 if (stock.manage & 4) { // 거래정지 종목 제외 }
JavaScript
복사
미국 종목은 모든 값이 0입니다.

basePrice

한국 기준가. 미국 종목은 항상 0.

capLevel

시가총액 구분 코드 (비트 연산 허용)
한국
비트값
구분
1
대형
2
중형
4
소형
8
Kospi200
예: capLevel === 9 → 대형(1) + Kospi200(8)
미국 (비트 연산 미적용)
구분
1
Nano
2
Micro
3
Small
4
Mid
5
Large
6
Mega

sector

업종 분류 코드.
한국 — KOSPI 업종코드
코드
코드명
코드
코드명
S005
음식료
S018
건설
S006
섬유의복
S019
운수창고
S007
종이목재
S020
통신
S008
화학
S021
기타금융
S009
의약품
S022
은행
S010
비금속광물
S023
종합금융
S011
철강금속
S024
증권
S012
기계
S025
보험
S013
전기전자
S026
서비스업
S014
의료정밀
S027
기타제조업
S015
운수장비
S016
유통업
S017
전기가스
한국 — KOSDAQ 업종코드
코드
코드명
코드
코드명
Q012
기타서비스
Q067
비금속
Q025
전기, 가스, 수도
Q068
금속
Q026
건설
Q070
기계, 장비
Q027
유통
Q072
일반전기전자
Q028
숙박, 음식
Q074
의료, 정밀기기
Q029
운송
Q075
운송장비, 부품
Q031
금융
Q077
기타제조
Q037
오락, 문화
Q151
통신서비스
Q056
음식료, 담배
Q152
방송서비스
Q058
섬유, 의류
Q153
인터넷
Q062
종이, 목재
Q154
디지털컨텐츠
Q063
출판, 매체복제
Q155
소프트웨어
Q065
화학
Q156
컴퓨터서비스
Q066
제약
Q157
통신장비
Q158
정보기기
Q159
반도체
Q160
IT부품
미국 — ICB (Industrial Classification Benchmark) Sector
Sector Name
Energy
Technology
Financial Services
Healthcare
Industrials
Consumer Cyclical
Real Estate
Basic Materials
Consumer Defensive
Communication Services
Utilities

2. 날짜 및 상장 정보

getDate(index)

N 거래일 전의 날짜를 반환합니다.

파라미터

파라미터
타입
설명
index
number
거래일 기준 과거 일수. 기본값 0 (당일). index 파라미터 공통 설명 참조

반환값

string — 해당 거래일의 날짜 문자열
logger.debug('yesterday date: ' + stock.getDate(1)); // 전일 날짜
JavaScript
복사

isListed(index)

N 거래일 전 기준 해당 종목의 상장 여부를 반환합니다.

파라미터

파라미터
타입
설명
index
number
거래일 기준 과거 일수. 기본값 0 (당일). index 파라미터 공통 설명 참조

반환값

booleantrue: 상장 중, false: 상장 아님
if (stock.isListed()) { logger.debug(stock.code + ': ' + stock.name + ' 종목은 상장 중입니다.'); }
JavaScript
복사

3. 가격 데이터

모든 함수의 파라미터: index (거래일 기준 과거 일수, 기본값 0)

수정주가 (권리락·배당 등을 반영한 가격)

함수
설명
getAdjClose(index)
수정 종가
getAdjOpen(index)
수정 시가
getAdjHigh(index)
수정 고가
getAdjLow(index)
수정 저가
logger.debug('today adj close: ' + stock.getAdjClose()); logger.debug('yesterday adj close: ' + stock.getAdjClose(1));
JavaScript
복사

원시주가 (수정 미적용)

함수
설명
getClose(index)
종가
getOpen(index)
시가
getHigh(index)
고가
getLow(index)
저가
logger.debug('today close: ' + stock.getClose()); logger.debug('yesterday close: ' + stock.getClose(1));
JavaScript
복사

4. 거래량 및 거래대금

함수
설명
단위
getMarketCapital(index)
시가총액
백만원 / 백만달러
getNoOfShare(index)
상장 주식수
getNoOfShareExpect(index)
상장예정 주식수
getTradingVolume(index)
거래량
getTradingValue(index)
거래대금
백만원 / 백만달러

5. 투자자별 매매 데이터

모두 순매수 기준 (+ = 순매수, - = 순매도) 미국 종목에는 해당 없음
함수
설명
단위
getTradingVolumeFrgn(index)
외국인(등록+비등록) 순매수 거래량
getTradingValueFrgn(index)
외국인(등록+비등록) 순매수 거래대금
백만원
getTradingVolumeInst(index)
기관합계 순매수 거래량
getTradingValueInst(index)
기관합계 순매수 거래대금
백만원
getTradingVolumeIndv(index)
개인 순매수 거래량
getTradingValueIndv(index)
개인 순매수 거래대금
백만원
// 외국인 순매수 강도 판단 예시 if (stock.getTradingVolumeFrgn() > 0) { logger.debug(stock.name + ': 외국인 순매수'); }
JavaScript
복사

6. 재무 데이터 (Fundamental)

index는 분기 기준: 0 = 최신 분기, 1 = 1분기 전 단위: 천원 / 천달러 (별도 표기 없는 경우)

재무상태표 (Balance Sheet)

함수
설명
getFundamentalTotalAsset(index)
자산총계
getFundamentalCurrentAsset(index)
유동자산
getFundamentalInventoryAsset(index)
재고자산
getFundamentalTradeReceivable(index)
매출채권 및 기타채권
getFundamentalQuickAsset(index)
당좌자산
getFundamentalCashAsset(index)
현금 및 현금성 자산
getFundamentalNonLiquidAsset(index)
비유동자산
getFundamentalLTReceivable(index)
장기매출채권 및 기타채권
getFundamentalTotalLiability(index)
부채총계
getFundamentalCurrentLiability(index)
유동부채
getFundamentalNetLiability(index)
순부채
getFundamentalNonCurrentLiability(index)
비유동부채
getFundamentalLTBorrow(index)
장기차입금
getFundamentalLTTradePayable(index)
장기매입채무 및 기타채무
getFundamentalTotalEquity(index)
자본총계
getFundamentalCapitalStock(index)
자본금
getFundamentalCapitalSurplus(index)
자본잉여금
getFundamentalRetainedEarn(index)
이익잉여금
getFundamentalEquity_ownersOfParent(index)
지배기업주주지분 자본총계
logger.debug('자산총계: ' + stock.getFundamentalTotalAsset()); logger.debug('유동자산: ' + stock.getFundamentalCurrentAsset());
JavaScript
복사

손익계산서 (Income Statement)

함수
설명
getFundamentalRevenue(index)
매출액
getFundamentalSalesCost(index)
매출원가
getFundamentalGrossProfit(index)
매출총이익 (매출원가 없는 종목은 0 반환)
getFundamentalSellingExpense(index)
판매비와 관리비
getFundamentalOperatingIncome(index)
영업이익
getFundamentalInterestIncome(index)
이자수익
getFundamentalInterestExpense(index)
이자비용
getFundamentalNetInterestExpense(index)
순이자비용
getFundamentalDepreciationCost(index)
감가상각비 (판관비 기준)
getFundamentalIncomeTax(index)
법인세비용
getFundamentalEBT(index)
법인세전 당기순이익 (EBT)
getFundamentalNetProfit(index)
당기순이익
getFundamentalProfit_ownersOfParent(index)
지배기업주주지분 당기순이익
getFundamentalRnDExpense(index)
연구개발비

현금흐름표 (Cash Flow Statement)

함수
설명
getFundamentalOperatingCashFlow(index)
영업활동으로 인한 현금흐름
getFundamentalInvestingCashFlow(index)
투자활동으로 인한 현금흐름
getFundamentalFinancingCashFlow(index)
재무활동으로 인한 현금흐름
getFundamentalCAPEX(index)
자본적지출 (CAPEX)

파생 재무지표

함수
설명
비고
getFundamentalEBITDA(index)
EBITDA
getFundamentalEBIT(index)
EBIT
getFundamentalEV(index)
EV (기업가치)
getFundamentalDividend(index)
최근 4분기 합계 배당액 (TTM)
단위: 천원/천달러
// 간단한 부채비율 계산 예시 var debtRatio = stock.getFundamentalTotalLiability() / stock.getFundamentalTotalEquity(); logger.debug('부채비율: ' + debtRatio.toFixed(2));
JavaScript
복사

7. 기술적 지표 (Technical Indicators)

모든 기술적 지표는 당일 기준으로 계산됩니다. 오류 발생 시 -99999999.0 반환.

단순 지표

함수
설명
파라미터
getMA(period)
이동평균 (MA)
period: 기간 (일)
getEMA(period)
지수이동평균 (EMA)
period: 기간 (일)
getWMA(period)
가중이동평균 (WMA)
period: 기간 (일)
getATR(period)
Average True Range (ATR)
period: 기간 (일)
getADX(period)
Average Directional Index (ADX)
period: 기간 (일)
getCCI(period)
Commodity Channel Index (CCI)
period: 기간 (일)
getRSI(period)
Relative Strength Index (RSI)
period: 기간 (일)
getWilliamsR(period)
Williams %R
period: 기간 (일)
getTrueRange()
True Range
없음
getOBV()
On Balance Volume (OBV)
없음
logger.debug('MA(20): ' + stock.getMA(20)); logger.debug('RSI(14): ' + stock.getRSI(14)); logger.debug('ATR(14): ' + stock.getATR(14));
JavaScript
복사

복합 지표 (JSON 반환)

getBollingerBand(period, devUp, devDown)

볼린저 밴드 값을 JSON 형태로 반환합니다.
파라미터
파라미터
타입
설명
period
number
기간 (일)
devUp
number
상위 밴드 표준편차 배수
devDown
number
하위 밴드 표준편차 배수
반환값 object{ upper: number, middle: number, lower: number } / 오류 시 -99999999.0
var bb = stock.getBollingerBand(20, 2, 2); logger.debug('Bollinger: ' + JSON.stringify(bb)); // 예: {"upper": 27719.57, "middle": 27468.5, "lower": 27217.47} // 상단 밴드 접근 var upperBand = bb.upper;
JavaScript
복사

getMACD(fast, slow, signal)

MACD 값을 JSON 형태로 반환합니다.
파라미터
파라미터
타입
설명
fast
number
단기 이동평균일
slow
number
장기 이동평균일
signal
number
시그널 이동평균일
반환값 object{ macd: number, signal: number, hist: number } / 오류 시 -99999999.0
var macd = stock.getMACD(12, 26, 9); logger.debug('MACD: ' + JSON.stringify(macd)); // 예: {"macd": 117.3, "signal": 128.1, "hist": -10.8} // MACD 히스토그램 접근 var histogram = macd.hist;
JavaScript
복사

getStochastic(fastK, slowK, slowD)

스토캐스틱 값을 JSON 형태로 반환합니다.
파라미터
파라미터
타입
설명
fastK
number
fastK 이동평균일
slowK
number
slowK 이동평균일
slowD
number
slowD 이동평균일
반환값 object{ slowK: number, slowD: number } / 오류 시 -99999999.0
var stoch = stock.getStochastic(5, 3, 3); logger.debug('Stochastic: ' + JSON.stringify(stoch)); // 예: {"slowK": 71.75, "slowD": 56.58}
JavaScript
복사

getParabolic(acc, max)

Parabolic SAR 값을 반환합니다.
파라미터
파라미터
타입
설명
acc
number
가속변수
max
number
가속변수의 최대값
반환값 number — 당일 Parabolic SAR 값 / 오류 시 -99999999.0
logger.debug('Parabolic SAR: ' + stock.getParabolic(0.02, 0.2));
JavaScript
복사

8. 밸류에이션 지표

당분기 재무제표 기준으로 연율화한 결과. 오류 발생 시 -1 반환.
함수
설명
단위
getPER()
Price Earnings Ratio
getPBR()
Price Book-value Ratio
getROA()
Return on Assets
%
getROE()
Return on Equity
%
getEPS()
Earnings Per Share (당분기 재무제표 기준)
원/달러
logger.debug('PER: ' + stock.getPER()); logger.debug('PBR: ' + stock.getPBR()); logger.debug('ROE: ' + stock.getROE()); logger.debug('EPS: ' + stock.getEPS());
JavaScript
복사

9. 배당 관련

함수
설명
단위
getDividendYieldRatio()
배당수익률 (당분기 재무제표 기준)
%
getDividendPayoutRatio()
배당성향 (배당액/당기순이익, 당분기 기준)
%
logger.debug('배당수익률: ' + stock.getDividendYieldRatio() + '%'); logger.debug('배당성향: ' + stock.getDividendPayoutRatio() + '%');
JavaScript
복사

10. 유틸리티 함수

loadPrevData(year, month, day)

시뮬레이션 시작일 이전의 과거 데이터를 명시적으로 미리 로드합니다.
기본적으로 시뮬레이션 시작일~종료일 범위의 데이터만 로드되므로, 그 이전 데이터가 필요한 기술적 지표 계산 시 이 함수를 호출해야 합니다.

파라미터

파라미터
타입
설명
year
number
연 단위 (예: 1 = 1년 전)
month
number
월 단위 (예: 0 = 0개월)
day
number
일 단위 (예: 60 = 60일 전)
// 60일 전 데이터 로드 (예: 60일 MA 계산을 위해) stock.loadPrevData(0, 0, 60); // 1년 전 데이터 로드 stock.loadPrevData(1, 0, 0);
JavaScript
복사

setScore(key, value)

종목에 사용자가 정의한 값을 저장합니다. 여러 종목을 비교하거나 랭킹 계산 시 활용합니다.

파라미터

파라미터
타입
설명
key
string
저장할 값의 식별 키
value
number \| object
저장할 값
var sse = IQStock.getStock('A005930'); sse.setScore('per', sse.getPER()); var hynix = IQStock.getStock('A000660'); hynix.setScore('per', hynix.getPER());
JavaScript
복사

getScore(key)

setScore로 저장한 값을 가져옵니다.

파라미터

파라미터
타입
설명
key
string
저장 시 사용한 식별 키

반환값

number | objectkey에 해당하는 저장된 값
var perScore = IQStock.getStock('A005930').getScore('per'); logger.debug('삼성전자 PER score: ' + perScore);
JavaScript
복사

getRank(universe, key[, order])

모집단(universe) 내에서 특정 지표를 기준으로 해당 종목의 랭킹 순위를 반환합니다.

파라미터

파라미터
타입
설명
universe
Stock[]
랭킹 계산 대상 종목 배열
key
string
랭킹 기준 지표명 (예: "per")
order
RankOrder (선택)
RankOrder.descending (내림차순, 기본값) 또는 RankOrder.ascending (오름차순)

반환값

number — 해당 종목의 랭킹 순위 (정수)
// 유니버스 내에서 PER 오름차순 랭킹 (낮을수록 1위) var stock = universe[i]; stock.setScore('per', stock.getPER()); logger.debug('PER 랭킹: ' + stock.getRank(universe, 'per', RankOrder.ascending));
JavaScript
복사

종합 예시: PER 기반 저PER 종목 필터링

// universe: Stock 객체 배열 for (var i = 0; i < universe.length; i++) { var stock = universe[i]; // 상장 중이 아닌 종목 제외 if (!stock.isListed()) continue; // 관리·거래정지 종목 제외 (한국) if (stock.manage & 6) continue; // 유효한 PER만 저장 var per = stock.getPER(); if (per > 0) { stock.setScore('per', per); } } // 낮은 PER 상위 10개 출력 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 <= 10) { logger.debug(stock.name + ' PER: ' + stock.getScore('per') + ' | 랭킹: ' + rank); } } }
JavaScript
복사

오류 처리 규칙

상황
반환값
기술적 지표 계산 오류
-99999999.0
밸류에이션 지표 계산 오류
-1
미국 종목에서 한국 전용 속성
0