Search

Graph

목차

개요

Graph는 iQ 스튜디오 시뮬레이션 결과 화면에 사용자 정의 그래프를 추가할 때 사용하는 객체입니다.
Account 또는 Basket 객체를 사용하면 누적수익률 그래프가 자동으로 그려지지만, Graph 객체를 활용하면 여기에 추가 그래프 라인을 올릴 수 있습니다. 벤치마크 지수 수익률, 이동평균선, 모멘텀 지표(스토캐스틱 등) 시각화에 주로 사용합니다.
Graph 객체는 직접 생성하는 것이 아니라 IQGraph.createGraph(graphId)를 통해 생성하며, IQGraph.getGraph(graphId)로 재접근합니다.
var graph; function initialize() { graph = IQGraph.createGraph('KOSPI200 수익률'); // Graph 객체 생성 } function onDayClose(now) { graph.plot(42.5); // 당일 x축, 42.5를 y축 값으로 그래프 그리기 }
JavaScript
복사

1. 속성 (Properties)

graphId

그래프의 고유 식별자. IQGraph.createGraph(graphId) 호출 시 지정한 이름이며, 시뮬레이션 결과 화면의 범례(legend)에 표시됩니다.
var graph = IQGraph.createGraph('벤치마크'); logger.debug(graph.graphId); // '벤치마크'
JavaScript
복사

2. plot(value) — 그래프 그리기

당일 날짜를 x축, value를 y축으로 하는 데이터 포인트를 그래프에 추가합니다.
onDayClose(now) 안에서 매 거래일마다 호출하는 것이 일반적이며, 조건식을 사용해 월별·분기별 단위로도 호출할 수 있습니다.

파라미터

파라미터
타입
설명
value
number
y축에 표시할 값. 단위는 사용자가 정의합니다. (예: 수익률 %, 지수값, 지표값 등)

반환값

없음.

Sample

var graph; var initClose = 0; function initialize() { graph = IQGraph.createGraph('KOSPI200 누적수익률(%)'); } function onDayClose(now) { var kospi200 = IQIndex.getIndex('101'); // KOSPI200 지수 if (initClose === 0) { initClose = kospi200.getClose(); // 첫날 종가 저장 } var ret = (kospi200.getClose() / initClose - 1) * 100; graph.plot(ret); }
JavaScript
복사

3. 활용 패턴

패턴 1: 벤치마크 지수 수익률 비교

전략 수익률과 함께 KOSPI200 같은 벤치마크 수익률을 한 화면에 표시합니다.
var benchGraph; var initKospi200 = 0; function initialize() { benchGraph = IQGraph.createGraph('KOSPI200'); } function onDayClose(now) { var kospi200 = IQIndex.getIndex('101'); if (initKospi200 === 0) { initKospi200 = kospi200.getClose(); } var ret = (kospi200.getClose() / initKospi200 - 1) * 100; benchGraph.plot(ret); }
JavaScript
복사

패턴 2: 기술적 지표 시각화

스토캐스틱 같은 모멘텀 지표를 그래프로 시각화합니다.
var stochGraph; function initialize() { stochGraph = IQGraph.createGraph('삼성전자 Stochastic SlowK'); } function onDayClose(now) { var sse = IQStock.getStock('A005930'); if (sse == null) return; var stoch = sse.getStochastic(5, 3, 3); if (stoch && stoch !== -99999999.0) { stochGraph.plot(stoch.slowK); } }
JavaScript
복사

패턴 3: 멀티 그래프 — 여러 지수 동시 비교

여러 Graph 객체를 생성하여 복수의 지표를 한 번에 비교합니다.
var kospiGraph, kosdaqGraph; var initKospi = 0, initKosdaq = 0; function initialize() { kospiGraph = IQGraph.createGraph('KOSPI 수익률(%)'); kosdaqGraph = IQGraph.createGraph('KOSDAQ 수익률(%)'); } function onDayClose(now) { var kospi = IQIndex.getIndex('001'); // KOSPI 종합 var kosdaq = IQIndex.getIndex('201'); // KOSDAQ 종합 if (initKospi === 0) initKospi = kospi.getClose(); if (initKosdaq === 0) initKosdaq = kosdaq.getClose(); kospiGraph.plot( (kospi.getClose() / initKospi - 1) * 100); kosdaqGraph.plot((kosdaq.getClose() / initKosdaq - 1) * 100); }
JavaScript
복사

패턴 4: 조건부 그래프 — 월별 또는 분기별

매일이 아닌 특정 주기마다 값을 기록합니다.
var monthlyGraph; function initialize() { monthlyGraph = IQGraph.createGraph('월별 계좌수익률(%)'); } function onDayClose(now) { // 매월 말일에만 기록 (IQDate 활용) if (!IQDate.isMonthEnd(now)) return; var acc = IQAccount.getDefaultAccount(); var ret = (acc.getTotalEquity() / acc.aum - 1) * 100; monthlyGraph.plot(ret); }
JavaScript
복사

주의사항

Graph 객체는 IQGraph.createGraph()로 최초 한 번만 생성합니다. 일반적으로 initialize() 함수 안에서 생성합니다.
동일한 graphIdcreateGraph()를 두 번 이상 호출하면 의도치 않은 동작이 발생할 수 있습니다.
plot()을 호출하지 않은 날(거래일)은 그래프에 해당 포인트가 표시되지 않아 선이 끊길 수 있습니다.

관련 API

IQGraph 객체 — Graph 컨테이너. Graph 생성 및 조회
IQIndex 객체 — 시장 지수 데이터 조회 (벤치마크 활용)
Stock 객체 — 개별 종목의 기술적 지표 데이터 조회