본문 바로가기
Python

업비트 비트코인 GPT 자동매매 4편 : GPT로 의사결정하기

by 코드렌즈 2025. 10. 8.
반응형

이제 GPT를 본격적으로 트레이딩 의사결정에 활용할 차례입니다.
이번 글에서는 업비트에서 불러온 비트코인 시세 데이터를 GPT API로 전송하고,
AI가 매수·매도·보류 중 어떤 판단을 내리는지를 JSON 형태로 받아보는 과정을 설명합니다.

🔹 1. 준비사항

이번 단계에서는 다음 세 가지가 미리 준비되어 있어야 합니다.

이전 단계를 완료하셨다면 바로 GPT와 연결할 수 있습니다 ✅

🔹 2. GPT API 구조 이해하기

OpenAI의 GPT API는 기본적으로 질문 → 응답 구조로 작동합니다.
즉, 우리가 보낸 메시지(데이터 + 지시문)를 분석한 후,
모델이 텍스트로 답변을 반환합니다.

자동매매에서는 단순 텍스트 대신 JSON 형식으로 응답을 받는 것이 핵심입니다.
이렇게 하면 프로그램이 응답을 쉽게 해석하고
자동으로 주문 실행 단계로 이어질 수 있습니다.

🔹 3. 시스템 메시지 설계하기

GPT에게 단순히 “비트코인 사야 해?”라고 물으면
매번 다른 말투와 문장으로 대답합니다.

이걸 방지하려면 역할(Role)응답 형식(Format) 을 명확하게 설정해야 합니다.

system_prompt = """
You are a Bitcoin investment expert.
You can accurately calculate buy and sell timings using chart data.
Respond in JSON format only.

Response Example:
{"decision": "buy"}
{"decision": "sell"}
{"decision": "hold"}
"""

이 메시지를 시스템 역할로 전달하면
GPT는 분석 결과를 반드시 JSON 형태로 반환하게 됩니다.

🔹 4. 차트 데이터를 GPT에 전달하기

이제 실제로 3편에서 가져온 비트코인 시세 데이터를 GPT API로 전송해보겠습니다.

import pyupbit
from openai import OpenAI
from dotenv import load_dotenv
import os

# 환경변수 로드
load_dotenv()

# OpenAI 클라이언트 초기화
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# 비트코인 시세 데이터 가져오기 (30일 일봉)
df = pyupbit.get_ohlcv("KRW-BTC", count=30, interval="day")

# JSON 형태로 변환
chart_data = df.to_json()

# GPT 프롬프트 설정
system_prompt = """
You are a Bitcoin investment expert.
You can accurately calculate buy and sell timings using chart data.
Respond in JSON format only.

Response Example:
{"decision": "buy"}
{"decision": "sell"}
{"decision": "hold"}
"""

# GPT 요청
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": chart_data}
    ],
    response_format={"type": "json_object"}
)

# 결과 출력
print(response.choices[0].message.content)

🔹 5. 결과 예시

터미널을 실행하면 아래와 같은 결과가 나옵니다.

{"decision": "hold"}
{"decision": "buy"}

GPT는 시세의 변동 패턴을 보고
직관적으로 매수(buy), 매도(sell), 혹은 보류(hold)를 결정하게 됩니다.

✅ Tip:
GPT가 판단하는 기준은 단순 통계 분석이 아닌,
차트 데이터를 기반으로 한 “패턴 해석 + 언어 모델 판단”이 결합된 결과입니다.

🔹 6. 응답 결과를 파이썬에서 처리하기

GPT가 반환한 JSON 데이터를 파이썬이 바로 사용할 수 있도록
json 모듈로 파싱해봅니다.

import json

result = json.loads(response.choices[0].message.content)

if result["decision"] == "buy":
    print("📈 매수 신호 감지")
elif result["decision"] == "sell":
    print("📉 매도 신호 감지")
else:
    print("⏸ 보류 상태 유지")

이제 프로그램이 GPT의 판단 결과를 읽고
다음 단계(자동매매 실행)로 넘어갈 수 있습니다.

🔹 7. GPT 프롬프트 개선 팁

GPT의 투자 판단이 너무 자주 바뀌거나,
비현실적인 응답을 할 경우 아래와 같이 프롬프트를 보완하세요 👇

system_prompt = """
You are a Bitcoin trading analyst.
Analyze the last 30 days of OHLC data and decide whether to BUY, SELL, or HOLD.
Base your decision on:
- Short-term trend direction
- Price volatility
- Support and resistance levels

Respond ONLY with a JSON object:
{"decision": "buy"} or {"decision": "sell"} or {"decision": "hold"}
"""
 

명확하게 판단 기준을 지정해주면
GPT의 응답 일관성이 훨씬 좋아집니다.

🔹 8. 다음 단계 예고

이제 GPT가 차트 데이터를 보고 스스로 매매 판단을 내릴 수 있게 되었습니다.
다음 단계에서는 이 결과를 실제 업비트 거래 명령과 연결해보겠습니다.

👉 다음 글 예고

  • 5편 — GPT 판단 결과로 자동매매 실행하기
  • 6편 — 1시간마다 자동 반복 매매 (Main Loop 구성)

관련포스팅

 

 

업비트 비트코인 GPT 자동매매 1편 : 개발환경 세팅 및 프로젝트 구성

안녕하세요 👋 이번 글은 GPT 자동매매 시리즈의 첫 번째 단계,“프로젝트 환경 구성과 기본 세팅”을 다룹니다.파이썬 설치, VSCode 설치, 가상환경(venv) 구성 등은 이미 다른 포스팅에서 다뤘기

codelenz.tistory.com

 

 

업비트 비트코인 GPT 자동매매 2편 : API 키 연동 및 환경 변수 관리

안녕하세요 👋 이번 글에서는 업비트와 OpenAI API 키를 코드에 연결하는 방법을 살펴보겠습니다.앞선 포스팅에서 API 키 발급은 이미 완료하셨을 텐데요 👇[업비트 API 키 발급 가이드↗][OpenAI API

codelenz.tistory.com

 

 

업비트 비트코인 GPT 자동매매 3편 : 비트코인 시세 데이터 가져오기

이제 GPT가 판단할 수 있는 데이터를 만들어야 합니다.이번 글에서는 업비트 API를 활용해 비트코인 시세(OHLCV) 데이터를 가져오는 방법을 배워봅니다.이 데이터는 이후 GPT가 “BUY / SELL / HOLD” 결

codelenz.tistory.com

 

반응형