종목명의 Text Box에 차트를 그리고 싶은 종목명을 넣으면 그 회사의 주식 데이터를 불러오도록 하자.

야후 파이낸스에서 주가 데이터를 얻기 위해서는 종목코드를 알아야 한다.

회사명을 입력하면 종목코드를 찾을 수 있게 만들자.

한국거래소에서 상장된 주식 리스트를 얻을 수 있다. 리스트에서 종목 코드를 얻을 수 있다.


종목 코드를 얻고 야후 파이낸스로부터 입력된 시작일에서 종료일까지 데이터를 불러오자.


GUI를 실행하고 종목명에 삼성전자를 넣고 OK 버튼을 누르면 다음과 같은 결과가 나온다.





지난 번에는 메인 화면과 메뉴를 만들었다.

이번에는 탭 안에 주식명을 입력하면 입력된 시작과 끝의 기간의 당일 종가를 조회할 수 있는 텍스트 입력창과 실행 버튼을 만들었다.

 

 

결과를 보면 Tab에 종목을 조회할 수 있는 항목들이 나타났다.

 

 

 

 

 

 


GUI를 만들어 삼성전자 외 다른 주식들도 쉽게 조회할 수 있게 하자.

tkinter를 사용하여 GUI를 만들 것이다.

메인 화면을 만들고, 메뉴창과 탭을 만들 것이다.

메뉴창은 File 과 Help 를 만들고, File 메뉴에는 추후에 결과를 저장할 수 있도록 Save 항목과 프로그램 종료할 수 있는 Exit 항목을 만들었다. Help 메뉴에는 프로그램 정보를 알 수 있는 About 항목을 만들었다.

프로그램 윈도우 제목을 Stock BigData라고 해주었고, 사이즈는 800x400으로 만들고 사이즈를 고정하는 코드를 넣었다.

프로그램을 종료 하는 Function 명령어를 넣어 주었고, File 메뉴의 Exit 를 선택하면 이 명령어에 의하여 프로그램이 종료된다.

탭을 하나 만들었고, 제목을 '주식 데이터'라고 해주었다.


실행하면 다음과 같은 윈도우 창이 실행 된다.


File 메뉴창은 다음과 같다.


Help 메뉴창은 다음과 같다.






불러온 삼성전자 주식 데이터에서 주 종가 데이터만 추출하였다.

데이터가 가시화 하기 위하여 matplotlib을 사용한다.

삼성전자의 주 종가와 RSI 차트를 하나로 표현하기 위한 코드는 다음과 같다.


RSI의 매수 매도 지표인 30선, 70선을 추가하였다.

차트를 불러오면 다음과 같은 그래프를 얻을 수 있다.





 

[이전]



def RSI(data):
    theta = 14 #RSI 주기
    delta = data['Close'].diff(1) # 다음 값과의 차이
    delta = delta.dropna() # NaN 값 제거

    Up = delta.copy() # 결과 복사
    Down = delta.copy() # 결과 복사

    Up[Up < 0] = 0 # RS 값 구하기 위한 0 보다 큰 값만 정렬
    Down[Down > 0] = 0 # RS 값 구하기 위한 0 보다 작은 값만 정렬

    data['Up'] = Up # DataFrame에 추가
    data['Down'] = Down # DataFrame에 추가

    AU = data['Up'].rolling(window=theta).mean() # 0 보다 큰 값들의 14일 평균 값
    AD = abs(data['Down'].rolling(window=theta).mean()) # 0 보다 작은 값들의 14일 평균 값

    RS = AU / AD

    RSI = 100.0 - (100.0 / (1.0 + RS))

    data['AU'] = AU # DataFrame에 추가
    data['AD'] = AD # DataFrame에 추가
    data['RS'] = RS # DataFrame에 추가
    data['RSI'] = RSI # DataFrame에 추가

    return data # RSI Function 결과 값 리턴

df = RSI(df)

df.to_csv('stock.csv') # DataFrame을 csv 파일로 저장


[결과]

 

                      High         Low         Open      ...          AD        RS        RSI
Date                                                              ...                                 
2010-01-04  16180.0  16000.0  16060.0  ...         NaN       NaN        NaN
2010-01-05  16580.0  16300.0  16520.0  ...         NaN       NaN        NaN
2010-01-06  16820.0  16520.0  16580.0  ...         NaN       NaN        NaN
2010-01-07  16820.0  16260.0  16820.0  ...         NaN       NaN        NaN
2010-01-08  16420.0  16120.0  16400.0  ...         NaN       NaN        NaN
...                        ...               ...            ...      ...           ...           ...           ...
2020-12-23  74000.0  72300.0  72400.0  ...  264.285714  2.135135  68.103448
2020-12-24  78800.0  74000.0  74100.0  ...  264.285714  2.702703  72.992701
2020-12-28  80100.0  78200.0  79000.0  ...  264.285714  2.567568  71.969697
2020-12-29  78900.0  77300.0  78800.0  ...  207.142857  3.275862  76.612903
2020-12-30  81300.0  77300.0  77400.0  ...  207.142857  3.448276  77.519380

[2708 rows x 12 columns]

 

 

+ Recent posts