글

라벨이 키움증권API인 게시물 표시

주봉 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편: 목표가 도달 시 알아서 매수하는 '무인 트레이딩 봇' 완성하기

이미지
 💡 이전 글 먼저 보기: 파이썬 코드로 실제 주식을 매수하고 매도하는 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) 전체 코드 지금까지 배운 모든 지...

파이썬 주식 자동매매 4편

이미지
내 돈으로 진짜 주식을 사보자! 실전 매수/매도 주문하기 💡 이전 글 먼저 보기: 삼성전자 등 특정 주식의 실시간 현재가를 불러오는 방법이 궁금하시다면 👉 **[ 여기에 3편 글의 내용을 읽어주세요 ]**를 먼저 확인해 주시기 바랍니다.   파이썬으로 증권사 서버에 로그인하고, 내 계좌를 불러오고, 현재가까지 확인하셨나요?  그렇다면 이제 진정한 '자동매매'의 하이라이트를 장식할 차례입니다. 이번 4편에서는 파이썬 코드를 통해 내 계좌의 예수금을 사용하여 실제로 주식을 매수(Buy)하고 매도(Sell)하는 주문(Order) 로직 에 대해 알아보겠습니다. 1. 주식 주문의 핵심, SendOrder 함수 이해하기 키움증권 API에서 주식을 사고팔 때 사용하는 유일무이한 핵심 함수는 바로 SendOrder 입니다.  HTS나 MTS 앱에서 주식을 살 때 우리가 입력하는 정보(계좌번호, 종목, 수량, 가격 등)를 파이썬 코드에서는 이 함수의 '매개변수'로 쏙쏙 넣어주기만 하면 됩니다. SendOrder 에 들어가야 할 핵심 정보는 다음과 같습니다. 사용자 구분명: 이 주문이 어떤 주문인지 내가 알아보기 쉽게 적는 이름 (예: "삼성전자매수") 화면번호: 통신을 위한 4자리 임의의 숫자 (보통 "1000" 사용) 계좌번호: 2편에서 불러왔던 내 주력 계좌번호 10자리 주문유형: 1 (신규매수), 2 (신규매도), 3 (매수취소), 4 (매도취소) 종목코드: 사고팔려는 주식의 6자리 코드 (예: 삼성전자 "005930") 주문수량: 몇 주를 살 것인가? 주문가격: 얼마에 살 것인가? (시장가 주문일 경우 0 입력) 호가구분: 00 (지정가), 03 (시장가) 2. 단 15줄! 삼성전자 1주 '시장가 매수' 코드 주식을 무조건 지금 당장 체결시키는 가장 확실한 방법은 '시장가'로 매수하는 것입니다.  아래 코드는 파이썬을 이용해 ...

파이썬 주식 자동매매 3편

이미지
키움증권 API 통신의 핵심, TR 데이터로 현재가 조회하기 💡 이전 글 먼저 보기: 단 10줄의 코드로 끝내는 키움증권 자동 로그인과 계좌 조회 방법이 궁금하시다면 👉 **[ 파이썬 주식 자동매매 2편 ]**를 먼저 확인해 주시기 바랍니다. 지난 2편에서 파이썬과 키움증권 서버를 연결하고 로그인하는 데 성공하셨다면, 자동매매 시스템 구축의 절반을 해내신 것과 다름없습니다.  오늘은 증권사 API 통신의 꽃이라고 불리는 'TR(Transaction) 요청'을 통해 특정 주식 종목의 실시간 가격(현재가)을 내 파이썬 프로그램으로 불러오는 방법을 알아보겠습니다. 1. API 통신의 핵심, TR(Transaction)이란 무엇인가? 키움증권 서버에는 수많은 주식 데이터가 저장되어 있습니다.  우리가 서버에게 "삼성전자 주식의 현재가를 알려줘!"라고 요청하면, 서버가 그에 맞는 데이터를 찾아서 우리에게 다시 던져주는 일련의 주고받기 과정을 TR 통신 이라고 부릅니다. 우리가 1편에서 설치했던 'KOA Studio'를 열어보면 수많은 TR 목록을 확인할 수 있습니다.  그중에서 단일 종목의 기본 정보를 가져올 때 가장 많이 쓰이는 TR 코드가 바로 opt10001 (주식기본정보요청) 입니다. 2. pykiwoom으로 초간단 TR 데이터 요청하기 원래 이 TR 데이터를 주고받으려면 요청(Request)을 보내고 데이터가 올 때까지 기다리는 복잡한 '이벤트 루프' 코드를 짜야 합니다.  하지만 우리가 사용하는 pykiwoom 라이브러리의 block_request 기능을 활용하면 단 한 줄의 코드로 이 과정을 끝낼 수 있습니다. 파이썬 에디터를 열고 아래 코드를 작성해 보세요. (코드 내의 005930은 삼성전자의 종목코드입니다.) Python from pykiwoom.kiwoom import * import pandas as pd # 1. 키움증권 로그인 kiwoom = Kiwoom() k...