오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
엑셀 차트 강의

엑셀 실시간 주식 차트 만들기

오빠두엑셀 by 오빠두엑셀
  • 학습시간 27분
  • 난이도 중급
  • 작성일 2020.08.31

네이버 금융에서 제공하는 정보를 참고하여 실시간 엑셀 주식 차트 만들기

이 강의에서는 NaverFinanceHistory 함수로 네이버 금융의 실시간 주가 데이터를 엑셀로 가져와 주식 차트를 직접 만드는 방법을 다룹니다. 5일·20일·60일 이동평균선과 거래량까지 한 화면에 담고, VBA 매크로로 차트의 가격 범위가 종목 변경에 따라 자동으로 갱신되도록 설정해 실무에서도 안정적으로 활용할 수 있는 분석 차트를 완성합니다.

엑셀 실시간 주식 차트 만들기
DOWNLOADS

실습자료를 준비했어요

수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇

실습 가이드

이번 강의에서는 아래 2가지 사용자 추가기능 함수를 사용합니다.

각 함수에 대한 자세한 사용법은 위 링크를 참고하시기 바랍니다. 두 함수와 더불어 네이버 증권에서 제공하는 다양한 주식 정보를 실시간으로 조회할 수 있는 NaverFinanceSearch 함수를 함께 사용하면 주식 분석을 한층 편리하게 진행할 수 있습니다.

예제파일에는 일자별 주가 데이터가 미리 입력되어 있습니다. 이 데이터를 기준으로 5일, 20일, 60일 이동평균선을 추가합니다. 이동평균선은 AVERAGE 함수로 간단히 계산할 수 있습니다.

  1. 예제파일의 I4셀을 선택합니다. 가장 최근 날짜를 기준으로 5일치 평균을 계산하기 위해 I4셀에 아래 수식을 입력합니다. 이동평균은 '종가'의 평균을 계산합니다.
    =AVERAGE(F4:F8)

    평균 계산

  2. J4셀과 K4셀에는 각각 20일, 60일치 이동평균을 구하기 위해 아래 수식을 입력합니다.
    J4셀 : =AVERAGE(F4:F23)
    K4셀 : =AVERAGE(F4:F63)

    엑셀 주식 차트 이동평균

  3. 입력한 수식을 아래 방향으로 자동 채우기 합니다.

    이동 평균 자동채우기

  4. 5일 이동평균선의 마지막 값을 살펴보면, 데이터의 마지막 날 기준으로 평균을 계산할 범위가 부족하여 이동평균이 정확히 반영되지 않은 것을 확인할 수 있습니다.

    이동평균 오류

  5. 따라서 5일선은 마지막 4개 항목, 20일선은 마지막 19개 항목, 60일선은 마지막 59개 항목을 삭제하여 올바른 이동평균선만 남겨둡니다.

    이동평균 오류 제거

엑셀 주식 차트는 2010 이후 버전 사용자라면 손쉽게 만들 수 있습니다. 다만 주식 차트를 만들기 위해서는 차트에 사용되는 데이터가 다음 2가지 조건을 만족해야 합니다.

  • 데이터의 첫 번째 열은 반드시 '날짜'로 구성되어야 합니다.
  • 주식 차트에서 요구하는 순서대로 항목을 입력해야 합니다. 주식 차트로 만들 수 있는 데이터 항목 순서는 다음 4가지입니다.
    a. 고가-저가-종가
    b. 시가-고가-저가-종가
    c. 거래량-고가-저가-종가
    d. 거래량-시가-고가-저가-종가

이제 예제파일에 입력된 데이터를 바탕으로 주식 차트를 직접 제작해보겠습니다.

  1. 주식 차트로 생성할 데이터 범위를 선택합니다. [B3:F129] 영역의 [날짜|시가|고가|저가|종가] 범위를 모두 선택한 뒤, [삽입] - [추천 차트]로 이동합니다.

    엑셀 주식 차트 범위 선택

  2. [차트 삽입] 대화상자에서 [모든 차트] 탭을 선택한 뒤, [주식형] - [시가-고가-저가-종가] 차트를 생성합니다.

    엑셀 주식 차트 삽입

  3. 차트의 가로축을 우클릭하여 [축 서식]으로 이동한 뒤, 축 종류를 '텍스트 축'으로 변경합니다. 이어서 [항목을 거꾸로] 옵션 체크박스를 활성화합니다.

    주식차트 축 변경

  4. 차트 옵션 중 '양선' 항목으로 이동합니다.

    주식차트 양선 이동

  5. '양선'의 채우기 색상은 '빨간색', 테두리는 '없음'으로 변경합니다.

    양선 채우기 색상 변경

  6. '음선'의 채우기 색상은 '파란색', 테두리는 '없음'으로 변경합니다.

    음선 채우기 색상 변경

  7. 계열 항목 중 '시가'를 선택한 뒤, 계열 옵션에서 간격 너비를 30%로 변경합니다.

    차트 간격너비

  8. 현재 차트 세로축의 최소값이 0으로 설정되어 있어 주가의 변동을 확인하기 어렵습니다. 차트 세로축을 우클릭한 뒤 [축 서식]으로 이동하여 축의 최소값을 실제 데이터의 최소값에 가까운 18,000 정도로 변경합니다.

    엑셀 주식 차트 값 최소값

  9. 이로써 주식 기본 차트가 깔끔하게 완성되었습니다.

    엑셀 주식 차트 기본 완성

  1. 차트를 우클릭한 뒤 [데이터 선택]으로 이동하고, 범례 항목(계열)에서 [추가] 버튼을 클릭합니다.
    주식차트 계열 추가
  2. 아래 표를 참고하여 계열 이름과 계열 값을 각각 입력합니다. 같은 작업을 반복하여 5일선, 20일선, 60일선의 데이터를 모두 추가합니다.

    주식차트 계열 추가 완료

    계열이름 계열 값
    =주식차트!$I$3 =주식차트!$I$4:$I$129
    =주식차트!$J$3 =주식차트!$J$4:$J$129
    =주식차트!$K$3 =주식차트!$K$4:$K$129
  3. 새로운 데이터 계열이 추가되면서 기존 주식 차트의 모양이 변경됩니다. 다시 차트를 우클릭한 뒤 [데이터 계열 서식]으로 이동합니다.

    차트 데이터 계열 서식

  4. 계열 항목 중 '5일선'을 선택한 뒤, [데이터 계열 지정]의 값을 기본축 → 보조축 → 기본축 순서로 변경합니다. '20일선'과 '60일선'도 동일하게 보조축으로 변경했다가 다시 기본축으로 되돌립니다.

    데이터 계열 서식 5일선

  5. 차트가 원래 모양으로 돌아온 것을 확인했다면 다시 [데이터 계열 서식]으로 이동합니다.

    이평선 데이터 계열 서식

  6. 계열 항목에서 '5일선'을 선택한 뒤, 선은 '실선', 채우기 색상은 '초록색', 너비는 1pt로 변경합니다. '20일선'과 '60일선'도 동일하게 실선으로 설정하고 색상을 구분해 변경합니다.

    엑셀 주식 차트 이평선 서식

  7. 이로써 주식 차트에 이동평균선이 추가되었습니다.

    엑셀 주식 차트 완성 2차

  1. 차트를 우클릭한 뒤 [데이터 선택]으로 이동합니다. 범례 항목(계열)에서 [추가] 버튼을 클릭하여 거래량 데이터 계열을 추가합니다.

    거래량 계열 추가

    계열이름 계열 값
    =주식차트!$G$3 =주식차트!$G$4:$G$129
  2. 차트를 우클릭한 뒤 [데이터 계열 서식]으로 이동합니다. '계열 옵션'에서 거래량을 선택한 뒤, 데이터 계열 지정 값을 '보조축'으로 변경합니다.

    거래량 데이터 계열 서식

  3. 차트의 [+] 버튼을 클릭한 뒤, [차트 요소] - [축] - [보조 가로]를 추가합니다.
    차트 보조 가로축 추가
  4. 보조 가로축을 우클릭한 뒤 [축 서식]으로 이동합니다. 앞서 진행한 작업과 동일하게 축 종류를 '텍스트 축'으로 변경하고 '항목을 거꾸로' 체크박스를 활성화합니다.

    차트 보조 가로 축 변경

  5. 보조축 설정을 마쳤다면 [차트 요소]에서 [보조 가로축]을 다시 숨겨줍니다.

    보조가로축 숨기기

  6. 거래량 차트를 우클릭한 뒤 [데이터 계열 서식]으로 이동하여 거래량 선을 얇은 회색 실선으로 변경합니다.

    주식 차트 거래량 서식 변경

  7. 주식 변동량과 거래량 차트가 겹쳐 있어 값을 확인하기 어렵습니다. 거래량을 나타내는 보조 세로축을 우클릭한 뒤 [축 서식]으로 이동하여 최대값을 기존 최대값의 약 2.5배 수준으로 변경합니다.

    거래량 최대값 수정

  8. 보조 세로축 설정 중 '레이블' 항목을 '없음'으로 변경하여 보조 세로축을 숨겨줍니다.

    보조세로축 숨김

  9. 마지막으로 차트 제목과 범례 항목 중 불필요한 항목을 삭제합니다. 범례를 위쪽으로 이동하여 주식 차트 만들기 작업을 마무리합니다.

    엑셀 주식차트 최종 완성

NaverFinanceHistory 함수로 특정 종목의 주식 정보를 실시간으로 받아오는 경우, 종목과 기간에 따라 가격 범위가 매번 달라져 차트 세로축의 최소값과 최대값을 수동으로 조정하기 번거로울 수 있습니다. 이러한 상황에서는 아래 명령문을 엑셀 파일에 추가하면 세로축의 최소값과 최대값이 자동으로 갱신됩니다.

아래 명령문 사용 방법은 영상강의 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

엑셀 NaverFinanceHistory 함수는 네이버 증권에서 제공하는 주식 정보를 실시간으로 받아오는 함수입니다. 따라서 계산 방식을 자동으로 설정한 상태에서 많은 양의 데이터를 받아오면 주식 정보와 직접 관련이 없는 다른 셀을 변경할 때에도 인터넷에 접속하여 값을 다시 받아오므로 처리 속도가 느려지는 문제가 발생할 수 있습니다.

뿐만 아니라 불필요한 데이터 요청이 지속될 경우 네이버 측에서도 서버 리소스를 과도하게 사용하게 되는 문제가 생길 수 있습니다.

엑셀 수식 계산 옵션 변경

따라서 NaverFinanceHistory 함수로 주식 정보를 실시간으로 받아온다면, 엑셀 환경설정에서 계산 방식을 '수동'으로 변경한 뒤 필요한 시점에만 값을 갱신하는 방식으로 사용하시기를 권장합니다.

댓글 45
5 (30개 평가)
ki72****
ki72**** 2020.09.02 08:38
오늘도 재미있고 즐겁게 배웠습니다. 좋은 하루 보내세요.
신현승
신현승 2020.10.11 13:09
대박 강의를 하셨네요 전혀 생각지 않은 곳에서 이런 멋진 강의를 봤습니다
질문이 있는데요 양선과 음선이 말씀하신대로 변경하면 각각 빨강 파랑으로 바뀌는데요 봉자체에 있는 고가와 저가의 선은 검정색입니다 실제 증권차트처럼 선색도 변경가능한가요?
오빠두엑셀
오빠두엑셀 작성자 2020.10.11 19:08
선색도 변경 가능합니다. 하지만 증가/감소에 따라 다른 색으로는 변경이 불가능하고
같은 색상으로만 변경할 수 있습니다.
계열항목중 최고/최저값 연결선 옵션 선색을 변경해보세요.^^
지금은 공부중
지금은 공부중 2020.10.21 08:14
항상 좋은정보 감사합니다
한가지 이상한게 있어서 질문 드립니다
종목 검색할때 예를 들어 "비에이치"를 검색했는데 "비에이치아이"라는 종목이 나오는데요
이거 왜 그러는걸까요.?
오빠두엑셀
오빠두엑셀 작성자 2020.10.21 09:28
안녕하세요:)
실시간주식차트 완성차트의 N4셀, GetStockNo 함수를 보시면 주식명 앞 뒤로 어퍼스트로피(*)가 추가되어 있어서 그렇습니다.
GetStockNo에 어퍼스트로피를 지워서 정확히 일치하는 종목만 검색되도록 변경하시면
비에치치가 올바르게 검색됩니다.^^
답변이 도움이 되셨길 바랍니다. 감사합니다.
도토리
도토리 2020.12.17 17:00
좋은 자료 감사합니다!!
이해하기 쉬웠어요//
최종택
최종택 2021.02.26 21:21
아 오빠두님.. 최고에요!!!
강석훈
강석훈 2021.03.07 14:31
너무너무 감사합니다
fkqwhaql
fkqwhaql 2021.03.13 23:57
안녕하세요. 너무 대단한 강의 잘 보고 따라하고 있습니다. 혹시 이 차트를 구글 스프레드시트에서도 만들 수 있을까요?
오빠두엑셀
오빠두엑셀 작성자 2021.03.17 17:00
안녕하세요.
구글시트에서는 구현이 불가능합니다.
JINTIE
JINTIE 2021.03.17 14:27
오빠두와 함께 열심히 배우는 JINTIE
례제의 두 함수를 추가할수 없어요. Addin에서 설정을 하면 "Run-time error '52';Bad file name or number"오유가 떠요.
엑셀 추가기능 ADDIN 설치방법, 오류, 문제해결 총정리에서 모든 경우를 다 해보았는데 왜 안될까?
주식차트 매우 흥미로운데 좀 도와주세요.
JINTIE
JINTIE 2021.03.17 17:57
오빠두와 열심히 배우는 JINTIE!
함수추가기능을 다운해서 설치한 다음 오유가 계속 나오고 함수기능을 삭제하자니 File/Option/Add-Ins에서 추가한 "설치파일-Naverfinancehistory 추가기능 V1.1.2-DutTool"이 해제되지 않아요.
Excel을 기동하면 계속 알수없는 코드로 된 통보문이 나옵니다. 도움 바랍니다.JINTIE
오빠두엑셀
오빠두엑셀 작성자 2021.03.17 18:58
안녕하세요.
추가기능 설치 후 오류가 계속 발생된다면, 아래 페이지를 한번 확인해보시겠어요?
https://www.oppadu.com/%EC%97%91%EC%85%80-%EC%B6%94%EA%B0%80%EA%B8%B0%EB%8A%A5-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0/
나비나라
나비나라 2021.04.24 21:49
엑셀 초보가 멋진 강의를 들으면서 좋은 공부를 하고 있습니다. 정말 감사합니다.
질문드릴 내용은 이 예제 파일을 다른 시트에 갖다 붙여 구현을 하는데
현재 작동은 잘 됩니다. 그런데 불러오기 단추를 누르면
원래 예제파일을 불러오는데 이것을 수정할 방법은 없을까요????
오빠두엑셀
오빠두엑셀 작성자 2021.04.27 21:33
안녕하세요.
예제파일의 명령문을 복사해서 다른 파일의 모듈로 붙여넣기 하세요. 버튼을 우클릭하신 뒤, [매크로 지정] 으로 이동합니다.
매크로 목록에서 다른 통합문서의 명령문 대신, 실행 중인 시트의 명령문을 선택 후 매크로를 설정해주세요.
이후 버튼을 클릭하면 예제파일이 실행되지 않고, 현재 사용중인 통합문서에서 명령문이 동작합니다.