주봉 MACD 골든크로스란? 6·13·5 설정으로 ETF 추세 읽는 법

이미지
 ETF를 살 때 가장 고민되는 건 “언제 사야 하나” 입니다. 좋은 ETF를 골랐어도 하락이 이어지는 중간에 사면 한참을 버텨야 합니다. 그래서 저는 매수 후보를 고를 때 주봉 MACD 골든크로스 를 확인합니다. 이 글에서는 MACD가 무엇인지, 왜 일봉이 아니라 주봉을 보는지, 그리고 왜 기본값(12·26·9) 대신 6·13·5를 쓰는지 정리해 보겠습니다. 1. MACD는 “두 평균선의 거리”입니다 MACD는 이름이 어렵지만 원리는 간단합니다. 짧은 평균선에서 긴 평균선을 빼서 , 두 선이 얼마나 벌어져 있는지 보는 지표입니다. MACD선 = 짧은 지수이동평균(EMA) − 긴 지수이동평균 시그널선 = MACD선을 다시 평균 낸 선 히스토그램 = MACD선 − 시그널선 (막대로 표시) 최근 가격이 오르면 짧은 평균선이 긴 평균선보다 먼저 올라가서 MACD가 커집니다. 반대로 내리면 MACD가 작아집니다. 즉 MACD는 추세의 힘이 세지는지, 약해지는지 를 보여주는 지표입니다. 2. 골든크로스는 “힘이 다시 붙기 시작했다”는 신호 MACD선이 시그널선을 아래에서 위로 뚫고 올라가는 순간 을 골든크로스라고 합니다. 히스토그램으로 보면 막대가 0 아래(음수)에서 0 위(양수)로 바뀌는 지점입니다. 쉬운 비유를 들면 이렇습니다. 자동차가 느려지다가 다시 가속 페달을 밟기 시작한 순간입니다. 아직 속도가 빠르지는 않지만, 방향이 바뀌었다는 뜻이죠. 반대로 위에서 아래로 뚫고 내려가면 데드크로스 라고 하고, 힘이 빠지기 시작했다는 신호로 봅니다. 3. 왜 일봉이 아니라 주봉인가 일봉(하루 단위) MACD는 신호가 자주 나옵니다. 하루 이틀 오르면 골든크로스, 다시 이틀 내리면 데드크로스가 나오는 식이라, 신호를 따라가다 보면 사고팔기만 반복하기 쉽습니다. 주봉(일주일 단위)은 일주일치 움직임을 한 막대로 묶기 때문에 자잘한 흔들림이 걸러집니다 . 신호는 드물지만, 한 번 나오면 방향이 비교적 오래 이어지는 편입니다. ETF처럼 여러...

7편. 실전 자동화 3: 크롤링한 데이터 깔끔하게 엑셀 표로 정리하기 (Pandas 실전)

크롤링 데이터 엑셀 표로 정리 - 실전 자동화 3편 · Pandas 실전




지난 6편에서는 매일 아침 내가 원하는 키워드의 뉴스 기사 제목과 링크를 자동으로 긁어오는 웹 크롤링 코드를 만들어 보았습니다.

 까만 콘솔 창에 결과가 좌르륵 쏟아질 때의 쾌감은 이루 말할 수 없죠. 하지만 실무에서 그 까만 화면을 그대로 팀원들에게 공유하거나 보고서로 제출할 수는 없습니다.

우리가 데이터를 수집하는 진짜 목적은 그 정보를 '활용'하기 위함입니다. 

그러려면 수집한 데이터를 깔끔한 엑셀(Excel) 파일로 저장해 두어야 합니다. 제가 처음 크롤링을 성공했을 때는 이 방법을 몰라, 화면에 출력된 텍스트를 마우스로 드래그해서 엑셀에 직접 복사하고 붙여넣는 반쪽짜리 자동화를 했었습니다.

하지만 오늘 소개할 파이썬의 핵심 무기, 판다스(Pandas) 라이브러리를 만나면 단 몇 줄의 코드만으로 흩어진 데이터를 완벽한 표(Table) 형태로 저장할 수 있습니다.

 오늘은 6편의 크롤링 코드에 판다스를 결합하여, 나만의 자동화된 엑셀 리포트 생성기를 완성하는 과정을 단계별로 명확하게 알아보겠습니다.

판다스(Pandas), 데이터를 다루는 마법의 엑셀 도구

앞서 5편(엑셀 병합)에서도 잠깐 등장했던 판다스는, 쉽게 말해 '파이썬 안에서 돌아가는 가상의 엑셀'입니다. 방대한 데이터를 표 형태로 만들고, 더하고, 빼고, 필터링하는 데 압도적인 성능을 자랑합니다.

판다스에서 가장 중요한 개념은 데이터프레임(DataFrame)입니다. 이름은 거창하지만, 사실 우리가 매일 보는 엑셀의 '행(가로)'과 '열(세로)'로 이루어진 표 구조를 부르는 말일 뿐입니다. 우리는 크롤링으로 수집한 기사 제목들을 '제목 열'에, 기사 주소를 '링크 열'에 줄을 맞춰 집어넣기만 하면 됩니다.

수집한 데이터 표로 만들기 (Step-by-Step)

지난 시간에 사용했던 리플릿(Replit) 환경을 열고, 6편의 코드 아래에 판다스를 덧붙여 보겠습니다. 데이터를 저장하려면 먼저 텍스트를 담아둘 빈 상자(리스트)를 만드는 것부터 시작합니다.

1단계: 데이터를 담을 빈 상자 준비하기 코드 맨 위에 제목과 링크를 따로 모아둘 빈 리스트를 만듭니다.

title_list = [] link_list = []

2단계: 크롤링하면서 상자에 차곡차곡 담기 지난번 작성했던 for 반복문 안에서 print로 화면에 출력만 하던 것을, append 명령어를 사용해 방금 만든 빈 상자에 하나씩 담아줍니다.

for article in articles: title = article.get_text() link = article.attrs["href"]

# 텍스트를 화면에 띄우는 대신 상자에 추가합니다.
title_list.append(title)
link_list.append(link)

3단계: 두 상자를 묶어 판다스 데이터프레임(표)으로 변환하기 이제 가장 중요한 마법의 코드입니다. 따로따로 모인 제목 상자와 링크 상자를 하나로 묶어 표(DataFrame)로 만들어 줍니다. 이때 '딕셔너리(Dictionary)'라는 중괄호 {} 형태를 사용해 엑셀의 최상단 열 이름(헤더)을 정해줍니다.

import pandas as pd

'기사제목'이라는 열에는 title_list를, '기사링크' 열에는 link_list를 짝지어줍니다.

raw_data = { "기사제목": title_list, "기사링크": link_list }

짝지은 데이터를 판다스 데이터프레임(표 형태)으로 최종 변환합니다.

df = pd.DataFrame(raw_data)

단 1줄로 진짜 엑셀 파일(.xlsx) 저장하기

파이썬 내부에서 표(df)가 완성되었다면, 이것을 우리 눈에 익숙한 실제 엑셀 파일로 바탕화면에 내보내는 일은 너무나 간단합니다. 딱 한 줄이면 끝납니다.

df.to_excel("오늘의_뉴스수집.xlsx", index=False)

위 코드를 실행(Run)하면, 리플릿 좌측 파일 목록에 "오늘의_뉴스수집.xlsx"라는 파일이 마법처럼 생성됩니다. 이 파일을 다운로드해 열어보면, A열에는 기사 제목이, B열에는 기사 링크가 한 치의 오차도 없이 줄 맞춰 정리된 것을 확인할 수 있습니다.

끝에 붙인 index=False는 파이썬이 자동으로 매기는 불필요한 일련번호(0, 1, 2...)를 엑셀 파일에 쓰지 않겠다는 뜻입니다. 이를 생략하면 엑셀 파일 맨 앞부분에 쓸모없는 숫자 열이 추가되니 꼭 기억해 두세요.

초보자가 흔히 겪는 에러와 데이터 저장 시 한계

데이터를 저장할 때 가장 빈번하게 발생하는 문제와 대처법을 짚고 넘어가겠습니다.

  • 리스트 길이 불일치 (ValueError) 표를 만들 때는 가로와 세로의 짝이 맞아야 합니다. 만약 '제목'은 10개를 수집했는데 '링크'는 9개만 수집되었다면 파이썬은 표를 만들지 못하고 에러를 뱉어냅니다. 이는 웹페이지 구조가 불규칙해서 빈 값을 긁어왔기 때문일 확률이 높으므로, 크롤링 단계(BeautifulSoup)에서 데이터가 정상적으로 들어오는지 미리 점검해야 합니다.

  • 한글 깨짐 현상 극복 팁 가끔 엑셀(.xlsx)이 아닌 쉼표로 구분된 파일(.csv)로 저장하고 싶을 때 df.to_csv()를 사용합니다. 이때 한글 파일이 외계어처럼 깨진다면 괄호 안에 encoding="utf-8-sig"라는 옵션을 추가해 주면 한글 깨짐을 깔끔하게 방지할 수 있습니다.

  • 파일 덮어쓰기 주의 매일 아침 같은 스크립트를 실행하면 "오늘의_뉴스수집.xlsx"라는 이름의 기존 파일이 계속 새로운 데이터로 덮어씌워집니다. 어제 긁어온 데이터가 날아가는 것을 방지하려면, 파이썬의 datetime 라이브러리를 활용해 파일 이름에 '2026-08-11_뉴스수집.xlsx'처럼 매일 다른 날짜가 자동으로 찍히도록 코드를 응용하는 것이 좋습니다.

핵심 요약

  • 화면에 흩뿌려지는 크롤링 데이터를 실무에 활용하려면 판다스(Pandas)를 통해 엑셀 표로 정리해야 합니다.

  • 수집한 데이터를 빈 리스트 상자에 모은 뒤, pd.DataFrame() 명령어를 사용해 행과 열이 나뉜 표로 변환합니다.

  • 변환된 표는 df.to_excel() 단 한 줄의 명령어로 실제 엑셀 파일로 깔끔하게 저장할 수 있습니다.

다음 8편에서는 수집한 엑셀 데이터를 단순히 내 컴퓨터에 저장하는 것을 넘어, '오픈 API와 메신저 연동하여 나만의 텔레그램 알림 봇 완성하기'를 단계별로 자세히 알아보겠습니다.

오늘 만든 엑셀 리포트 저장 스크립트를 실행해 보셨나요? 매일 엑셀 파일 이름에 자동으로 날짜가 들어가게 하는 방법에 대해 더 자세한 코드가 궁금하시다면 편하게 댓글로 남겨주세요!

#파이썬엑셀 #데이터크롤링 #Pandas기초 #파이썬데이터저장 #직장인파이썬독학 #데이터프레임 

댓글

이 블로그의 인기 게시물

[파이썬 주식 자동매매 1편]

파이썬 주식 자동매매 4편

파이썬 주식 자동매매 3편