주봉 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처럼 여러...

파이썬 주식 자동매매 5편: 목표가 도달 시 알아서 매수하는 '무인 트레이딩 봇' 완성하기

무인 트레이딩 봇 완성하기 - 파이썬 주식 자동매매 5편


 💡 이전 글 먼저 보기: 파이썬 코드로 실제 주식을 매수하고 매도하는 SendOrder 함수의 사용법을 아직 모르신다면 👉 **[파이썬 주식 자동매매 4편 글]**을 반드시 먼저 읽고 와주시기 바랍니다.

지금까지 우리는 파이썬을 이용해 키움증권 서버에 로그인하고(2편), 주식의 현재가를 불러오며(3편), 실제로 주식을 매수하는 주문(4편)까지 자동매매를 위한 모든 개별 부품들을 만들어 보았습니다.

이번 5편에서는 이 조각들을 하나로 조립하여, "내가 설정한 가격까지 주가가 떨어지면, 봇(Bot)이 스스로 감지하여 알아서 주식을 매수하는" 진정한 의미의 무인 자동매매 로직을 완성해 보겠습니다.




1. 실시간 가격 감시의 핵심: 무한 루프(while)

사람은 하루 종일 모니터를 쳐다보며 가격을 감시할 수 없지만, 컴퓨터는 지치지 않습니다.

 파이썬의 while 반복문을 사용하면 장이 열려있는 동안 코드가 멈추지 않고 계속해서 현재가를 확인하도록 지시할 수 있습니다.

단, 서버에 너무 빠르게(1초에 수십 번씩) 데이터를 요청하면 디도스(DDoS) 공격으로 오해받아 증권사로부터 통신이 차단될 수 있습니다. 

따라서 time.sleep(1) 함수를 이용해 1초에 한 번씩만 여유롭게 가격을 확인하도록 숨통을 틔워주어야 합니다.

2. 중복 매수 방지 장치 (Flag 변수)

자동매매 봇을 만들 때 초보자들이 가장 많이 하는 실수가 바로 '중복 주문'입니다. 

가격이 목표가 아래로 떨어졌을 때 매수 주문이 나갔음에도 불구하고, 루프가 계속 돌면서 1초마다 계속 매수 주문을 넣어 계좌의 돈을 모두 탕진해 버리는 대참사가 발생할 수 있습니다.

이를 막기 위해 is_bought = False라는 깃발(Flag) 변수를 하나 만들어 둡니다. 매수가 한 번 체결되면 이 깃발을 True로 바꾸고, 무한 루프를 안전하게 빠져나오도록(break) 설계해야 합니다.

3. 나만의 자동매매 봇(Bot) 전체 코드

지금까지 배운 모든 지식이 집약된 최종 코드입니다. 아래 코드는 삼성전자 주식이 75,000원 이하로 떨어지는 순간, 즉시 시장가로 1주를 자동 매수하는 프로그램입니다.

Python
from pykiwoom.kiwoom import *
import time

# 1. 키움증권 로그인 및 계좌 준비
kiwoom = Kiwoom()
kiwoom.GetConnectState()
my_account = kiwoom.GetLoginInfo("ACCNO").split(';')[0]

# 2. 매매 설정 (삼성전자, 목표 매수가: 75,000원 이하)
target_stock = "005930"
target_price = 75000
is_bought = False  # 중복 매수 방지용 깃발 변수

print(f"🤖 자동매매 봇(Bot) 가동 시작! (목표가: {target_price}원 이하 대기 중)")

# 3. 무한 루프를 통한 실시간 가격 감시 시작
while not is_bought:
    # 3-1. 현재가 조회 (opt10001)
    df = kiwoom.block_request("opt10001", 
                              종목코드=target_stock, 
                              output="주식기본정보", 
                              next=0)
    current_price = abs(int(df['현재가'][0]))
    
    print(f"현재 삼성전자 가격: {current_price}원 감시 중...")
    
    # 4. 조건 확인 및 자동 매수 실행
    if current_price <= target_price:
        print(f"🚨 목표가 도달! ({current_price}원) 자동 매수를 실행합니다!")
        
        # 신규 매수 주문 전송
        kiwoom.SendOrder("삼성전자자동매수", "1000", my_account, 1, target_stock, 1, 0, "03", "")
        
        # 중복 매수 방지를 위해 상태 변경 및 루프 종료
        is_bought = True
        print("매수 주문 완료. 봇을 안전하게 종료합니다.")
        
    else:
        # 목표가에 도달하지 않았다면 1초 대기 후 다시 확인 (서버 과부하 방지)
        time.sleep(1)

마무리 및 다음 단계

코드를 실행해 보시면, 콘솔 창에 1초마다 현재 주가가 찍히면서 호시탐탐 기회를 엿보는 나만의 인공지능 비서가 탄생한 것을 확인하실 수 있습니다.

지금은 단 한 종목, 아주 단순한 가격 조건만 걸어두었지만, 이 뼈대에 이동평균선, 거래량 폭증, MACD 지표 같은 조건들을 추가하기만 하면 여러분만의 강력한 퀀트(Quant) 트레이딩 머신으로 진화하게 됩니다.

다음 [파이썬 주식 자동매매 6편]에서는 단일 종목이 아닌, 내 관심 종목 리스트 10개, 20개를 동시에 감시하고 다루는 '다중 종목 처리 기법'에 대해 본격적으로 파헤쳐 보겠습니다!



※ 이 글은 투자 공부를 위한 정보 공유이며, 특정 종목의 매수·매도를 권유하지 않습니다. 투자 판단과 그 결과에 대한 책임은 투자자 본인에게 있습니다.

댓글

이 블로그의 인기 게시물

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

파이썬 주식 자동매매 4편

파이썬 주식 자동매매 3편