2025년 6월 28일 토요일

[TIP] 한국 주식 전용 차트 검색식 만글기 위한 기본적인것

 요즘 장이 정말 핫 하다.

그래서 혼자 심심하기에 이것 저것 알아도 보고 공부도 할겸 작성하게 됨.

아래는 그기본적인 것들.


한국 주식 전용 "차트 검색식"을 만들고 싶다면, 아래와 같은 요소들을 포함하여 구현할 수 있습니다.

 "차트 검색식"은 조건 검색(예: 골든크로스, RSI 30 이하 등)을 의미하는 것.

!! 목표:

"조건식 기반 한국 주식 차트 검색 기능 만들기"

예: 이동평균선 골든크로스가 발생한 종목만 검색

RSI가 30 이하인 종목만 필터링해서 차트 보여주기

!! 구성요소

1. 데이터 소스

한국 주식 데이터는 공식적으로는 아래 두 가지를 활용할 수 있습니다.


- 방법 A: 한국투자증권 API (KIS OpenAPI)

국내 주식 실시간, 일봉, 분봉, 조건검색 등 가능

OAuth2 인증 필요

실전 매매까지 가능

> 공식 문서: https://apiportal.koreainvestment.com/


- 방법 B: 크롤링/비공식 라이브러리 (연습용/비추천)

pykrx (한국거래소의 일봉/재무데이터)

네이버금융 크롤링 (제약 많고 차단 위험 있음)

pip install pykrx

예시:

from pykrx import stock
from datetime import datetime

# 삼성전자 일봉 데이터
df = stock.get_market_ohlcv_by_date("20240101", "20240628", "005930")
print(df.head())


2. 검색식 구현 예시 (Python)

예: 5일 이동평균선이 20일선 돌파 (골든크로스)

import pandas as pd

def find_golden_cross(df):
    df['MA5'] = df['종가'].rolling(window=5).mean()
    df['MA20'] = df['종가'].rolling(window=20).mean()
    df['prev_cross'] = df['MA5'].shift(1) > df['MA20'].shift(1)
    df['curr_cross'] = df['MA5'] > df['MA20']
    # 골든크로스 발생 조건
    return (df['prev_cross'] == False) & (df['curr_cross'] == True)

이걸 모든 종목에 반복해서 돌리면 조건식 검색 완성.


3.  프론트 UI 예시

종목 조건 선택: RSI < 30, MACD 상승, 이동평균선 돌파 등

종목 리스트: 조건 만족하는 종목들 나열

차트 보기 버튼 → 차트 팝업 or 페이지 이동


4.  전체 워크플로우

1. pykrx 또는 KIS API로 종목별 OHLCV 데이터 수집

2. Python 또는 백엔드에서 조건식 처리

3. 조건 만족하는 종목 리스트 프론트로 전달

4. 프론트에서는 종목 클릭 시 차트 표시


!! 예시: RSI 30 이하 종목 리스트 출력

def compute_rsi(data, period=14):
    delta = data['종가'].diff()
    gain = delta.where(delta > 0, 0)
    loss = -delta.where(delta < 0, 0)
    avg_gain = gain.rolling(period).mean()
    avg_loss = loss.rolling(period).mean()
    rs = avg_gain / avg_loss
    rsi = 100 - (100 / (1 + rs))
    return rsi

from pykrx import stock
import pandas as pd

tickers = stock.get_market_ticker_list()
rsi_30_list = []

for code in tickers:
    df = stock.get_market_ohlcv_by_date("20240501", "20240628", code)
    df['RSI'] = compute_rsi(df)
    if df['RSI'].iloc[-1] < 30:
        rsi_30_list.append((code, stock.get_market_ticker_name(code), df['RSI'].iloc[-1]))

print(rsi_30_list)


!! 요약

구성 내용

데이터 pykrx 또는 한국투자 API
검색식 Python으로 조건 계산 (RSI, MA, MACD 등)
종목 필터링 조건 만족 종목 리스트 추출
차트 표시 프론트엔드에서 차트.js 등으로 시각화



대충 이런식으로 가능하다는....

댓글 없음:

댓글 쓰기