6. Graph 객체 활용
보통의 경우에는 Account 객체 또는 Basket 객체를 사용하면 자동으로 누적수익률 그래프를 그려주지만, Graph 객체를 활용하면 시뮬레이션 그래프에 새로운 그래프를 추가할 수 있습니다.
예를 들어, 추세 지표들 중에 하나인 주가 이동평균선 그래프를 그리거나, 모멘텀 지표인 스토캐스틱(Stochastic) 그래프가 필요할 때 해당 지표 값을 Graph 객체를 이용하여 그리게 됩니다.
var graph, index; var initIndexClose = 0; // 초기 인덱스 종가 var code = "004"; // KOSPI 소형주 코드 function initialize() { // 1) Graph 객체 생성 graph = IQGraph.createGraph('KOSPI 소형주'); index = IQIndex.getIndex(code); initIndexClose = index.getClose(); } function onDayClose(now) { var cumulativeReturn = (index.getClose() / initIndexClose - 1) * 100; // 2) Graph 객체를 이용하여 그래프 그리기 graph.plot(cumulativeReturn); }
위의 예제 코드는 KOSPI 소형주 수익률 그래프를 추가하는 방법이며, 그래프를 그리기 위해 Graph 객체를 생성하는 부분과 생성한 Graph 객체를 이용하여 그래프를 그리는 부분으로 구성됩니다.
1) Graph 객체 생성 - createGraph()
우선 그래프를 그리기 위해서는 createGraph() 함수를 이용하여 Graph 객체를 먼저 생성해야 합니다. 여기서 함수의 매개 변수인 'KOSPI 소형주'는 Graph 객체 ID를 의미하며 시뮬레이션 그래프에 표시되는 이름을 의미합니다. 그리고 Graph 객체는 최초 한번만 생성하므로 일반적으로 initialize() 함수 안에서 생성합니다.
function initialize() { graph = IQGraph.createGraph('KOSPI 소형주'); // Graph 객체 생성 index = IQIndex.getIndex(code); // KOSPI 소형주 Index 객체 initIndexClose = index.getClose(); // 초기 Index 종가 저장 }
2) Graph 객체를 이용하여 그래프 그리기 - plot()
1) 에서 생성된 Graph 객체로 plot() 함수를 호출하여 누적 수익률 값을 그립니다. 보통의 경우에는 그래프를 그리기 위해서 onDayClose() 함수 안에서 plot() 함수를 사용하며, 조건식을 이용하여 매월 또는 분기 단위로도 그래프를 그릴 수 있습니다.
function onDayClose(now) { var cumulativeReturn = (index.getClose() / initIndexClose - 1) * 100; // 누적 수익률 계산 // 계산한 누적 수익률 값을 plot() 함수로 그래프를 그립니다. graph.plot(cumulativeReturn); }