반응형
SMALL
GPT에게 맡기는 AI 비트코인 투자 자동화 - AI 에이전트 만들기
GPT를 활용한 AI 비트코인 투자 자동화 강의 요약
목차
- 강의 개요 및 GPT를 활용한 투자 판단의 원리
- 환경 설정
- 업비트(Upbit) API 키 발급
- OpenAI API 키 발급 및 크레딧 충전
- 파이썬 및 VS Code 설치
- 파이썬 라이브러리 설치
- API 키 환경 변수 설정(.env)
- AI 자동매매 프로그램 구현
- 최소 기능 제품(MVP) 구현
- 코드 수정 및 자동화
- 마무리: 투자 유의사항 및 다음 강의 안내
1. 강의 개요 및 GPT를 활용한 투자 판단의 원리
이 강의는 2021년 고정된 전략을 사용했던 비트코인 투자 자동화와 달리, 초거대 AI인 GPT를 활용하여 시장 상황에 맞춰 추론 및 판단하는 자동매매 시스템을 구축하는 방법을 다룹니다. AI는 인간의 투자 판단 과정처럼 차트, 뉴스, 커뮤니티 의견, 투자 철학 등 방대한 데이터를 종합적으로 보고 분석하여 자동으로 거래를 진행하게 됩니다.
AI가 투자 판단을 내리는 원리는 다음과 같습니다.
- 파이썬을 이용하여 업비트 등에서 차트 데이터를 가져옵니다.
- 이 데이터를 GPT API로 전송합니다. 이때 프롬프트를 통해 AI의 역할과 응답 형식을 설정합니다.
- GPT는 데이터를 기반으로 '매수(Buy)', '매도(Sell)', '보유(Hold)' 등의 판단을 내립니다.
- AI가 내린 판단 신호를 받아 실제로 자동 매매를 실행합니다.
2. 환경 설정
AI 자동매매 프로그램을 구축하기 위해 필요한 환경을 설정합니다.
업비트(Upbit) API 키 발급
- 업비트 앱을 다운로드하고 회원가입 및 고객 확인을 완료합니다.
- 업비트 웹사이트에 접속하여 API 키를 발급받습니다. 이때 자산 조회, 주문 조회, 주문하기 권한에 체크하고, IP 주소 등록을 통해 접근을 제한하는 것이 안전합니다.
- 발급받은 **엑세스 키(Access Key)**와 **시크릿 키(Secret Key)**를 메모장에 안전하게 저장합니다.
OpenAI API 키 발급 및 크레딧 충전
- OpenAI 플랫폼 웹사이트에 접속하여 회원가입 및 로그인을 합니다.
- API를 사용하기 위해 Billing 메뉴에서 결제 카드를 등록하고 크레딧을 충전해야 합니다.
- API keys 메뉴에서 새로운 **시크릿 키(Secret Key)**를 발급받아 메모장에 저장합니다. 이 키는 외부에 노출되지 않도록 주의해야 합니다.
파이썬 및 VS Code 설치
- 파이썬 공식 홈페이지에서 3.9.13 버전(강의 기준)을 다운로드하여 설치합니다. 이때 반드시 Add Python 3.9 to PATH를 체크해야 합니다.
- Visual Studio Code(VS Code)를 다운로드하여 설치합니다.
- VS Code에서 Python 익스텐션을 설치합니다.
파이썬 라이브러리 설치
프로젝트 폴더를 생성한 후, VS Code 터미널에서 requirements.txt 파일을 생성하고 아래 내용을 입력합니다.
python-dotenv
openai
pyupbit
터미널에서 아래 명령어를 실행하여 필요한 라이브러리를 한 번에 설치합니다.
pip install -r requirements.txt
API 키 환경 변수 설정(.env)
- API 키를 코드에 직접 노출하지 않기 위해 requirements.txt와 같은 폴더에 .env 파일을 생성합니다.
- .env 파일에 발급받은 키들을 아래와 같이 입력합니다.
UPBIT_ACCESS_KEY="자신의 업비트 엑세스 키"
UPBIT_SECRET_KEY="자신의 업비트 시크릿 키"
OPENAI_API_KEY="자신의 OpenAI API 키"
3. AI 자동매매 프로그램 구현
최소 기능 제품(MVP) 구현
최소한의 기능만으로 AI 자동매매 프로그램을 만들어 봅니다.
- 업비트 차트 데이터 가져오기: pyupbit 라이브러리의 get_ohlcv 함수를 이용하여 30일치 일봉(Day) 데이터를 가져옵니다.
- AI에게 데이터 제공 및 판단 받기: 가져온 차트 데이터를 df.to_json()으로 JSON 형식으로 변환하여 OpenAI API에 전달합니다. AI의 응답을 JSON 형태로 받습니다.
- 판단에 따라 자동 매매 진행: AI의 응답(buy, sell, hold)에 따라 pyupbit 라이브러리의 buy_market_order 또는 sell_market_order 함수를 호출하여 거래를 실행합니다.
코드 수정 및 자동화
실제 자동매매를 위해 코드를 수정하고 자동화합니다.
- 수수료(0.05%) 및 최소 주문 금액(5,000원) 고려: buy_market_order 함수 호출 시 수수료를 제외한 금액을 계산하고, 5,000원 이상일 때만 거래를 실행하도록 조건문을 추가합니다.
- 코드 자동 실행: while True:와 time.sleep()을 사용하여 코드가 일정 시간 간격으로 반복 실행되도록 함수를 구성합니다.
4. 마무리: 투자 유의사항
AI는 완벽하지 않으며 판단 오류로 인해 원금 손실이 발생할 수 있습니다. 투자의 책임은 전적으로 본인에게 있으므로 이를 명심하고 진행해야 합니다. AI 기술은 계속 발전하고 있으므로, 한 번 구축해 놓은 시스템은 시간이 지날수록 판단 정확도가 높아질 가능성이 있습니다.
# 이 파일은 'GPT에게 맡기는 AI 비트코인 투자 자동화' 유튜브 강의 내용을 바탕으로 작성되었습니다.
# 아래 코드는 영상에서 소개된 AI 자동매매 프로그램의 최소 기능 버전(MVP)입니다.
# --- 목차 ---
# 1. AI 투자 자동화 개요
# - 과거의 고정 전략 대비 AI의 복합적 판단 능력 소개
# - 차트, 뉴스, 커뮤니티, 투자 철학 등 다양한 데이터를 종합하여 판단
#
# 2. AI 자동매매 프로그램 구조
# - GPT가 전략을 세우고, 데이터를 종합하여 투자 판단을 내림
# - 거래소 API를 통해 실제 매매 실행
# - 매매 기록을 다시 데이터로 활용하여 AI의 판단을 개선
#
# 3. 환경 설정 및 API 키 발급
# - 업비트(Upbit) API 키 발급 (자산/주문 조회, 주문하기)
# - OpenAI API 키 발급 (API 사용을 위한 크레딧 충전 필요)
# - 파이썬 및 VS Code 설치
# - 필요한 라이브러리 설치: python-dotenv, openai, pyupbit
#
# 4. 최소 기능 제품(MVP) 구현
# - 기능 1: pyupbit 라이브러리를 사용해 업비트 차트 데이터(30일 일봉) 가져오기
# - 기능 2: OpenAI API에 차트 데이터를 제공하여 AI의 투자 판단(매수/매도/보유) 받기
# - 기능 3: AI 판단에 따라 실제 자동 매매 실행 (수수료, 최소 주문 금액 고려)
#
# 5. 실행 방법 및 유의사항
# - 아래 코드는 무한 루프를 통해 자동으로 매매를 실행합니다.
# - API 호출 시 비용이 발생할 수 있으니 주의해야 합니다.
# - 투자는 항상 본인의 판단과 책임하에 진행해야 합니다. AI의 판단은 완벽하지 않습니다.
import os
import time
import json
import pyupbit
import openai
from dotenv import load_dotenv
# API 키를 .env 파일에서 불러옵니다.
# .env 파일은 아래와 같이 작성해야 합니다.
# UPBIT_ACCESS_KEY="자신의 업비트 Access Key"
# UPBIT_SECRET_KEY="자신의 업비트 Secret Key"
# OPENAI_API_KEY="자신의 OpenAI API Key"
# 만약 .env 파일이 없다면 아래 변수에 직접 키를 입력하세요.
# UPBIT_ACCESS_KEY = ""
# UPBIT_SECRET_KEY = ""
# OPENAI_API_KEY = ""
load_dotenv()
upbit_access_key = os.getenv("UPBIT_ACCESS_KEY")
upbit_secret_key = os.getenv("UPBIT_SECRET_KEY")
openai_api_key = os.getenv("OPENAI_API_KEY")
# OpenAI API 클라이언트 설정
openai.api_key = openai_api_key
# 업비트 API 클라이언트 설정
upbit = pyupbit.Upbit(upbit_access_key, upbit_secret_key)
def get_current_price(ticker):
"""현재 가격을 가져오는 함수"""
try:
orderbooks = pyupbit.get_orderbook(ticker)
if orderbooks and 'orderbook_units' in orderbooks and len(orderbooks['orderbook_units']) > 0:
return orderbooks['orderbook_units'][0]['ask_price']
return None
except Exception as e:
print(f"가격 정보를 가져오는 중 오류 발생: {e}")
return None
def ai_trading_strategy():
"""
AI 기반 투자 판단 및 자동 매매 로직
"""
try:
# 1. pyupbit를 이용해 비트코인(BTC) 30일치 일봉 차트 데이터 가져오기
# 'KRW-BTC' 시장의 30일치 일봉(daily candles) 데이터를 가져옵니다.
df_btc = pyupbit.get_ohlcv("KRW-BTC", interval="day", count=30)
if df_btc is None or df_btc.empty:
print("차트 데이터를 가져오는데 실패했습니다. 다음 주기에 다시 시도합니다.")
return
# 차트 데이터를 JSON 형식 텍스트로 변환
chart_data_json = df_btc.to_json()
# OpenAI API에 보낼 프롬프트 설정
system_prompt = "You are an expert in bitcoin investing. Tell me whether to 'buy', 'sell', or 'hold' at the moment based on the chart data provided. Also, give a detailed reason for your decision. Respond in JSON format."
user_prompt = f"Based on the following 30-day daily chart data, what is your investment decision (buy, sell, or hold)? The data is in JSON format.\n\n{chart_data_json}"
# 2. OpenAI API를 호출하여 AI의 투자 판단 받기
# 'gpt-4o' 모델을 사용합니다.
print("AI에게 투자 판단을 요청하는 중...")
response = openai.chat.completions.create(
model="gpt-4o",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
]
)
# 응답 메시지에서 JSON 데이터 추출
response_content = response.choices[0].message.content
ai_decision_data = json.loads(response_content)
decision = ai_decision_data.get('decision', 'hold').lower()
reason = ai_decision_data.get('reason', '이유가 제공되지 않았습니다.')
print(f"--- AI 판단 ---")
print(f"결정: {decision}")
print(f"이유: {reason}")
print("----------------")
# 3. AI 판단에 따라 실제 매매 실행
krw_balance = upbit.get_balance("KRW")
btc_balance = upbit.get_balance("BTC")
current_btc_price = get_current_price("KRW-BTC")
if not all([krw_balance, btc_balance, current_btc_price]):
print("잔고 또는 현재 가격 정보를 가져오는데 실패했습니다. 다음 주기에 다시 시도합니다.")
return
# 거래 수수료(0.05%)와 최소 주문 금액(5,000원) 고려
min_trade_amount = 5000
fee_rate = 0.0005
if decision == 'buy':
# 매수 결정
buy_amount = krw_balance * (1 - fee_rate)
if buy_amount > min_trade_amount:
print("매수를 진행합니다...")
upbit.buy_market_order("KRW-BTC", buy_amount)
print("매수 완료.")
else:
print(f"매수 실패: 매수 가능 금액({buy_amount:,.0f} KRW)이 5,000원 미만입니다.")
elif decision == 'sell':
# 매도 결정
sell_amount_krw = btc_balance * current_btc_price
if sell_amount_krw > min_trade_amount:
print("매도를 진행합니다...")
# 매도 시 코인 수수료가 차감되므로 전체 수량을 매도할 수 있습니다.
upbit.sell_market_order("KRW-BTC", btc_balance)
print("매도 완료.")
else:
print(f"매도 실패: 보유 비트코인 가치({sell_amount_krw:,.0f} KRW)가 5,000원 미만입니다.")
else: # decision == 'hold'
# 보유 결정
print("보유(Hold)합니다. 매매를 진행하지 않습니다.")
except Exception as e:
print(f"오류가 발생했습니다: {e}")
# 오류 발생 시 프로그램을 종료하지 않고 다음 주기에 재시도합니다.
# 메인 루프: 10초마다 AI 트레이딩 함수 실행
if __name__ == "__main__":
print("AI 비트코인 투자 자동화 프로그램을 시작합니다.")
print("API 호출은 비용이 발생할 수 있으니 유의하시기 바랍니다.")
print("프로그램을 중단하려면 Ctrl+C를 누르세요.")
while True:
ai_trading_strategy()
time.sleep(10) # 10초 대기
반응형
LIST
'코딩' 카테고리의 다른 글
| GPT에게 맡기는 AI 비트코인 투자 자동화 - AI 에이전트 만들기 [조코딩] (1) | 2025.09.04 |
|---|---|
| 하락장도 수익낼 수 있는 AI 비트코인 투자 자동화 선물거래 편 [조코딩] (1) | 2025.09.04 |
| GPT에게 맡기는 AI 비트코인 투자 자동화 - AI 에이전트 만들기 [조코딩] (1) | 2025.09.04 |
| 구글 NotebookLM (노트북LM) 완벽 가이드 최신판 🔥 이거 보시면 여러분의 학습 효율이 【수직 상승】합니다. [나도코딩] (3) | 2025.09.04 |
| Replit 배포 마스터클래스(2025년 7월) [Matt Palmer] (1) | 2025.09.04 |