✨ 엑셀 실시간 주식 차트 양식 (네이버 금융, KTB 투자증권)
이번 강의에서는 아래 2가지 사용자 추가기능 함수가 사용 되었습니다.
각 함수에 대한 자세한 사용법은 관련 링크를 참고해주세요. 위 2가지 함수와 더불어 네이버 증권에서 제공하는 다양한 주식정보를 실시간으로 조회할 수 있는 NaverFinanceSearch 함수를 사용 하면 주식 분석을 보다 편리하게 할 수 있습니다.
예제파일을 다운받으면 기존에 추가되어 있는 데이터를 기준으로 5일, 20일, 60일 이동평균선을 추가하겠습니다. 이동평균선은 AVERAGE 함수를 이용하여 손쉽게 추가할 수 있습니다.
예제파일의 I4셀을 선택 합니다. 가장 최근날짜 기준 5일치의 평균을 계산 하기 위해, I4셀에 아래 수식을 입력합니다. 이동평균은 '종가'의 평균을 계산 합니다.
=AVERAGE (F4:F8)
최근 5일 동안의 종가 평균을 계산합니다.
J4셀, K4셀에도 각각 20일, 60일치의 이동평균을 구하기 위해 아래 수식을 입력 합니다.
J4셀 : =AVERAGE (F4:F23)
K4셀 : =AVERAGE (F4:F63)
20일, 60일의 평균도 동일한 방법으로 계산합니다.
입력한 수식을 아래방향으로 자동채우기 합니다.
입력한 수식을 아래방향으로 자동채우기 합니다.
5일 이동평균선의 마지막 값을 선택해보면, 데이터의 마지막 날 기준으로 그 이전에는 평균을 구할 범위가 비어있어 이동평균을 제대로 반영하지 않는 것 을 확인할 수 있습니다.
평균의 마지막 n 번째 값들은 올바른 평균을 계산하지 않습니다.
따라서 5일선의 마지막 4개 항목, 20일선의 마지막 19개 항목, 60일선의 마지막 59개의 항목을 지워서 올바른 이동평균선만 남겨줍니다.
평균을 올바르게 계산하지 않는 범위는 목록에서 제거합니다.
엑셀 주식 차트는 2010 이후 버전 사용자 라면 아주 손쉽게 만들 수 있습니다. 다만 주식차트를 만들려면 아래 차트에 사용되는 데이터가 아래 2가지 조건을 만족 해야 합니다.
예제파일에 기존 추가되어있는 데이터를 바탕으로 주식차트를 제작해보겠습니다.
주식차트로 생성할 데이터 범위를 선택 합니다. [B3:F129]까지, [날짜|시가|고가|저가|종가] 범위를 모두 선택한 뒤, '삽입' - '추천차트' 로 이동 합니다.
주식 차트로 생성할 범위를 선택한 뒤, 삽입 - 추천차트로 이동합니다.
[차트 삽입] 대화상자에서 [모든 차트]를 선택한 뒤, [주식형] - [시가-고가-저가-종가] 차트를 생성 합니다.
모든차트 - 주식형 에서 시가-고가-저가-종가 차트를 삽입합니다.
차트의 가로축을 우클릭하여 [축 서식]으로 이동한 뒤, 축 종류를 '텍스트 축'으로 변경 합니다. 그리고 [항목을 거꾸로] 옵션 체크박스를 활성화 합니다.
차트의 가로축 설정을 변경합니다.
차트 옵션 중 '양선' 항목으로 이동 합니다.
차트의 양선 계열을 선택합니다.
'양선'의 채우기 색상을 '빨간색'으로, 테두리는 '없음'으로 변경 합니다.
양선 계열의 채우기색상과 테두리 설정을 변경합니다.
'음선'의 채우기 색상은 '파란색'으로, 테두리는 '없음'으로 변경 합니다.
음선 계열의 채우기색상과 테두리 설정을 변경합니다.
계열 항목 중, '시가'를 선택한 뒤, 계열 옵션에서 간격너비를 30%로 변경 합니다.
차트 간격너비를 30%로 변경합니다.
현재 차트 세로축의 최소값이 0으로 설정되어 있어 주식의 변화량을 확인하기 어렵습니다. 차트 세로축을 우클릭한 뒤, [축 서식]으로 이동하여 축의 최소값을 실제 데이터의 최소값인 18,000 정도로 변경 합니다.
세로축의 최소값을 변경합니다.
주식 기본 차트가 깔끔하게 완성 되었습니다.
엑셀 기본 주식 차트가 완성되었습니다.
차트를 우클릭한 뒤, [데이터 선택]으로 이동 합니다. 범례 항목(계열)에서 [추가]버튼을 클릭 합니다.
차트를 우클릭 - 데이터선택 - 범례항목 계열 [추가] 버튼을 클릭합니다.
계열이름과 계열 값을 각각 아래와 같이 추가합니다. 3번 작업을 반복하여 5일선, 20일선, 60일선의 데이터를 모두 추가 해줍니다.
5일선, 20일선, 60일선 데이터를 각각 추가합니다.
계열이름
계열 값
=주식차트!$I$3
=주식차트!$I$4:$I$129
=주식차트!$J$3
=주식차트!$J$4:$J$129
=주식차트!$K$3
=주식차트!$K$4:$K$129
새로운 데이터 계열이 추가되면서 기존 주식차트의 모양이 변경된 것을 확인할 수 있습니다. 다시 차트를 우클릭한 뒤, [데이터 계열 서식]으로 이동 합니다.
차트를 우클릭 한 뒤, 데이터 계열 서식으로 이동합니다.
계열 항목 중 '5일선'을 선택한 뒤, [데이터 계열 지정]의 값을 기본축 -> 보조축 -> 기본축으로 변경 합니다. '20일선'과 '60일선'도 동일하게 보조축을 선택했다가 다시 기본축으로 변경합니다.
5일선/20일선/60일선 계열을 기본축->보조축->기본축으로 변경합니다.
차트가 다시 원래대로 돌아온 것을 확인할 수 있습니다. 다시 [데이터 계열 서식]으로 이동 합니다.
차트를 우클릭 한 뒤, 데이터 계열 서식으로 이동합니다.
계열 항목에서 '5일선'을 선택한 뒤, 선은 '실선'으로, 채우기 색상은 '초록색'으로, 너비는 1pt로 변경 합니다. '20일선'과 '60일선'도 동일하게 실선에 색을 추가하여 변경합니다.
각 이동평균선의 서식을 변경합니다.
주식차트에 이동평균선이 추가 되었습니다.
주식 차트에 이동 평균선이 추가되었습니다.
차트를 우클릭한 뒤, [데이터 선택]으로 이동합니다. 범례 항목(계열)에서 [추가]버튼을 클릭하여 거래량 데이터계열을 추가 합니다.
차트에 거래량 데이터 계열을 추가합니다.
계열이름
계열 값
=주식차트!$G$3
=주식차트!$G$4:$G$129
차트를 우클릭한 뒤, [데이터 계열 서식]으로 이동합니다. '계열 옵션' 에서 거래량을 선택 한 뒤, 데이터 계열 지정의 값을 '보조축'으로 변경 합니다.
거래량의 위치를 보조축으로 변경합니다.
차트의 [+] 버튼을 클릭한 뒤, [차트요소] - [축] - [보조가로]를 추가 합니다.
차트의 [+] 버튼을 클릭한 뒤, 축 - 보조가로축을 추가합니다.
보조가로축을 우클릭한 뒤, [축 서식]으로 이동합니다. 이전에 했던 작업과 동일하게 축 종류는 '텍스트 축'으로, '항목을 거꾸로' 체크박스를 활성화 합니다.
보조가로축의 설정을 변경합니다.
보조축을 변경하였으면 [차트요소]에서 [보조가로축]을 다시 숨겨줍니다.
보조가로축을 숨겨줍니다.
거래량 차트를 우클릭한 뒤, [데이터 계열 서식]으로 이동하여 거래량 선을 얇은 회색 실선으로 변경 해줍니다.
거래량 차트의 서식을 변경합니다.
현재 주식 변동량과 거래량 차트가 겹쳐있어서 값을 확인하는데 어려울 수 있습니다. 거래량을 나타내는 보조세로축을 우클릭한 뒤, [축 서식]으로 이동합니다. 최대값을 기존 최대값의 약 2.5배 되는 값으로 변경 합니다.
거래량 차트의 최대값을 변경합니다.
보조세로축 설정 중 아래 '레이블' 항목을 '없음'으로 변경 하여 보조세로축을 숨겨줍니다.
보조세로축의 레이블 위치를 없음으로 변경합니다.
차트제목과 범례항목 중 불필요한 항목을 삭제 합니다. 범례를 위로 이동하여 주식 차트 만들기 작업을 마무리합니다.
주식 차트가 완성되었습니다.
NaverFinanceHistroy 함수를 사용하여 특정 종목의 주식정보를 실시간으로 받아올 경우, 매번 차트 세로축의 최소값/최대값을 변경하기 어려울 수 있습니다. 그럴 경우 아래 명령문을 엑셀 파일에 추가하면 세로축의 최소/최대값이 자동으로 변경 됩니다.
아래 명령문을 사용하는 방법은 영상강의 21:20 부터 자세히 설명 해드렸습니다.
Sub UpdateChart( )
On Error Resume Next
Dim WS As Worksheet
Dim Cht As ChartObject
Dim i As Long : Dim cEnd As Long : Dim cVol As Long
Dim pMax As Double : Dim pMin As Double : Dim vMax As Double : pMin = 1000000000
Dim sEnd As String : sEnd = "F:F" '<- 종가가 입력된 열을 입력하세요.
Dim sVolume As String : sVolume = "G:G" '<- 거래량이 입력된 열을 입력하세요.
Set WS = ActiveSheet
Set Cht = WS. ChartObjects ( 1 )
WS. Calculate
cEnd = WS. Range ( sEnd) . Column
cVol = WS. Range ( sVolume) . Column
For i = 1 To WS. UsedRange . Row + WS. UsedRange . Rows . Count - 1
If WS. Cells ( i, cEnd) > pMax And IsNumeric ( WS. Cells ( i, cEnd) ) And WS. Cells ( i, cEnd) <> "" Then pMax = WS. Cells ( i, cEnd)
If WS. Cells ( i, cEnd) < pMin And IsNumeric ( WS. Cells ( i, cEnd) ) And WS. Cells ( i, cEnd) <> "" Then pMin = WS. Cells ( i, cEnd)
If WS. Cells ( i, cVol) > vMax And IsNumeric ( WS. Cells ( i, cVol) ) And WS. Cells ( i, cVol) <> "" Then vMax = WS. Cells ( i, cVol)
Next
Cht. Chart . Axes ( xlValue) . MaximumScale = pMax * 1.1
Cht. Chart . Axes ( xlValue) . MinimumScale = pMin * 0.7
Cht. Chart . Axes ( xlValue, xlSecondary) . MinimumScale = 0
Cht. Chart . Axes ( xlValue, xlSecondary) . MaximumScale = vMax * 2.5
Application. Calculation = xlCalculationManual
End Sub
엑셀 NaverFiananceHistory 함수는 네이버 증권에서 제공하는 주식정보를 실시간으로 받아오는 함수입니다. 따라서 계산방식을 자동으로 설정한 상태에서 많은 양의 데이터를 받아올 경우, 주식 정보와는 전혀 연관없는 다른 셀을 변경할 때에도 인터넷에 접속하여 값을 받아오게 되므로 처리속도가 느려지는 문제가 발생 할 수 있습니다.
뿐만 아니라, 불필요한 많은 양의 데이터를 지속적으로 요청할 경우, Naver 측에서도 불필요한 리소스를 사용하게 되는 문제가 발생할 수 있습니다.
NaverFinanceHistory 함수 사용시에는 계산방식을 수동으로 변경 후 사용하시는 것을 권장드립니다.
따라서, NaverFinanceHistory 함수를 사용하여 주식정보를 실시간으로 받아온다면, 엑셀 환경설정에서 계산 방식을 '수동'으로 변경한 뒤, 필요할 때만 값을 갱신하는 방법으로 사용 하는 것을 권장드립니다.