본문 바로가기
프로젝트/개인프로젝트

4. 주식 살까?말까? AI가 결정해주는 프로그램-파이썬 제미나이 연결

by 코딩마스터^^ 2026. 1. 29.

 

from google import genai
from google.genai import types
import json

# ==========================================
# 🔑 API 키 확인
# ==========================================
MY_API_KEY = "1234" # 본인 키 입력

def get_ai_decision(df, news_summary):
    print("\n[🔍 AI_BRAIN] AI 분석 모듈 진입")


    try:
        client = genai.Client(api_key=MY_API_KEY)
    except Exception as e:
        print(f"❌ [AI 설정 오류] : {e}")
        return {"decision": "hold", "reason": "API 연결 실패"}


    # 2. 데이터 정리 (대소문자 처리 로그 포함)
    current = df.iloc[-1]

    # 컬럼 찾기 시도 로그
    print(f"[🔍 AI_BRAIN] 마지막 데이터 행 확인:\n{current}")

    # 안전하게 값 가져오기 함수
    def get_safe_value(row, keys):
        for k in keys:
            if k in row:
                return row[k]
        return 0

    close_val = get_safe_value(current, ['Close', 'close', 'adj_close'])
    rsi_val   = get_safe_value(current, ['RSI', 'rsi'])
    sma5_val  = get_safe_value(current, ['SMA5', 'sma5'])
    sma20_val = get_safe_value(current, ['SMA20', 'sma20'])

    chart_data = f"""
    - 현재가: {close_val}
    - RSI: {rsi_val:.2f}
    - 5일선: {sma5_val:.0f}
    - 20일선: {sma20_val:.0f}
    """

    print(f"[🔍 AI_BRAIN] AI에게 보낼 차트 요약 데이터:\n{chart_data.strip()}")

    # 3. 프롬프트 작성
    prompt = f"""
    너는 냉철한 주식 투자 전문가야. 
    아래 [시장 데이터]와 [최근 뉴스]를 보고 매매 결정을 내려줘.

    [시장 데이터]
    {chart_data}

    [최근 뉴스]
    {news_summary}

    [미션]
    1. 데이터와 뉴스를 종합해서 상황을 분석해.
    2. 'buy'(매수), 'sell'(매도), 'hold'(관망) 중 하나를 선택해.
    3. 이유는 한 문장으로 짧게 설명해.
    4. 대답은 반드시 아래 JSON 형식으로만 해.
    {{
        "decision": "buy",
        "reason": "RSI가 낮고 호재가 있음"
    }}
    """

    print("[🔍 AI_BRAIN] Gemini에게 질문 전송 중...")

    try:
        response = client.models.generate_content(
            # model="models/gemini-2.0-flash",
            # model="models/gemma-3-27b-it",
            model="gemini-2.5-flash",
            contents=prompt,
            # config=types.GenerateContentConfig(
            #     response_mime_type="application/json" # JSON 강제 출력 설정
            # )
        )


        # ★ AI 답변 원본 로그 출력 (디버깅 핵심) ★
        print(f"\n[🔍 AI_BRAIN] 📩 Gemini 원본 응답:\n{response.text}")

        # JSON 파싱
        clean_text = response.text.replace("```json", "").replace("```", "").strip()
        result = json.loads(clean_text)

        print("[🔍 AI_BRAIN] JSON 변환 성공!")
        return result

    except Exception as e:
        print(f"❌ [AI_BRAIN Error] : {e}")
        return {"decision": "hold", "reason": f"AI 에러 발생: {e}"}

 

먼저 파이썬에 구글 제미나이 사용을 위해 설치해준다.

https://ai.google.dev/gemini-api/docs/quickstart?hl=ko

 

Gemini API 빠른 시작  |  Google AI for Developers

개발자를 위한 Gemini API 시작하기

ai.google.dev

Python 3.9 이상을 사용하여 다음 pip 명령어를 사용하여 google-genai 패키지를 설치합니다

pip install -q -U google-genai

 

구글 AI Studio에서 발급받은 API 키를 준비한다.

 

 

df로 받은 data에서 RSI, 5일선, 20일선 정보와 현재가 정보 그리고 최신 뉴스정보까지 받아서 처리한다.

 

prompt = f"""
너는 냉철한 주식 투자 전문가야. 
아래 [시장 데이터]와 [최근 뉴스]를 보고 매매 결정을 내려줘.

[시장 데이터]
{chart_data}

[최근 뉴스]
{news_summary}

[미션]
1. 데이터와 뉴스를 종합해서 상황을 분석해.
2. 'buy'(매수), 'sell'(매도), 'hold'(관망) 중 하나를 선택해.
3. 이유는 한 문장으로 짧게 설명해.
4. 대답은 반드시 아래 JSON 형식으로만 해.
{{
    "decision": "buy",
    "reason": "RSI가 낮고 호재가 있음"
}}
"""

제미나이한테 쏴줄 프롬프트는 이렇게 한다.

 

다음에는 차트 지식 더 공부하고 주식 기술 공부해서 프롬프트를 좀 더 다듬어야지..

 

============================================================
🚀 [SK하이닉스] 하이브리드 자동매매 시스템 가동
============================================================

[Step 1] 과거 차트 데이터 분석 (000660.KS)...
   ✅ 차트 데이터 및 보조지표 계산 완료
[Step 2] 실시간 시세 조회 중 (Method A: Mobile API)...
[Step 3] 네이버 뉴스 수집 중...
   ⚡ 실시간 현재가: 860,000원 (2.26%)
   📰 역대 최고 실적 경신한 SK하이닉스
   📰 삼성, 반도체 판도 뒤집는다…"올해 HBM 매출 3배"
   📰 SK, HBM4도 압도적 주도…"단기간 추월 불가능"
   📰 SK하이닉스 추가배당 결정 이튿날 삼성전자, 5년 만에 특별배당 발표

[Step 4] Gemini AI 종합 판단 요청...

[🔍 AI_BRAIN] AI 분석 모듈 진입
[🔍 AI_BRAIN] 마지막 데이터 행 확인:
Close             8.570000e+05
High              8.840000e+05
Low               8.190000e+05
Open              8.790000e+05
Volume            5.434346e+06
RSI               7.663345e+01
SMA5              8.002000e+05
SMA20             7.539000e+05
BBL_20_2.0_2.0    6.718425e+05
BBM_20_2.0_2.0    7.539000e+05
BBU_20_2.0_2.0    8.359575e+05
BBB_20_2.0_2.0    2.176880e+01
BBP_20_2.0_2.0    1.128218e+00
BB_LOWER          6.718425e+05
Name: 2026-01-29 00:00:00, dtype: float64
[🔍 AI_BRAIN] AI에게 보낼 차트 요약 데이터:
- 현재가: 857000.0
    - RSI: 76.63
    - 5일선: 800200
    - 20일선: 753900
[🔍 AI_BRAIN] Gemini에게 질문 전송 중...

[🔍 AI_BRAIN] 📩 Gemini 원본 응답:
```json
{
    "decision": "buy",
    "reason": "역대 최고 실적 및 HBM4 압도적 주도권으로 강력한 상승 추세 지속."
}
```
[🔍 AI_BRAIN] JSON 변환 성공!

============================================================
🤖 AI SK하이닉스 분석 리포트
============================================================
💰 기 준 가 : 860,000원 (실시간)
------------------------------------------------------------
📊 결    과 : BUY
📝 상세이유 : 역대 최고 실적 및 HBM4 압도적 주도권으로 강력한 상승 추세 지속.
============================================================
원하는 결과는 이렇다. 

 

다음번에는 야후 파이낸스에서 종목 가격 데이터를 가져오고 그걸 계산하는 로직과

네이버 증권 웹에서 데이터를 크롤링 하여 실시간 종목 뉴스를 가져오도록 하겠다.

 

그걸 종합하여 AI에 보내고 결정을 맡겨보자

댓글