파이썬 주식 자동매매 5편: 목표가 도달 시 알아서 매수하는 '무인 트레이딩 봇' 완성하기
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
💡 이전 글 먼저 보기: 파이썬 코드로 실제 주식을 매수하고 매도하는 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주를 자동 매수하는 프로그램입니다.
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개를 동시에 감시하고 다루는 '다중 종목 처리 기법'에 대해 본격적으로 파헤쳐 보겠습니다!
※ 이 글은 투자 공부를 위한 정보 공유이며, 특정 종목의 매수·매도를 권유하지 않습니다. 투자 판단과 그 결과에 대한 책임은 투자자 본인에게 있습니다.

댓글
댓글 쓰기