728x90
반응형
read_stock_lists는 이전 글의 py파일 이름입니다
import pandas as pd
import read_stock_lits as rsl
import pandas_datareader.data as web
import datetime from datetime
import timedelta
# 데이터를 가져올 날짜 설정
today = datetime.date.today() # 오늘 날짜 불러오기
start = today - timedelta(days=21) # 21일 이전 날짜 설정
# 코스피와 코스닥 종목코드 데이터 합치기
ks_code = rsl.kospi_code['종목코드']
kq_code = rsl.kosdaq_code['종목코드']
kr_code = pd.concat([ks_code, kq_code])
# 당일 종가가 20일 이동평균선을 돌파한 종목을 구분하는 코드
def filter(code):
# 야후 파이낸스에서 데이터 불러오기
df = web.get_data_yahoo(code, start, today, interval='d')
# df 파일이 위에서부터 과거 데이터부터 최근 데이터이기때문에 이를 뒤집는다
# 즉 과거 데이터가 데이터프레임의 행 가장 밑에 오도록 만들기
df_reverse = df['Close'].loc[::-1].reset_index(drop = True)
# 상장 21일 이내 종목 제거(20일 평균을 구하기 위해선 21일치가 필요)
if len(df_reverse) <= 21:
return False
first_price = 0
second_price = 0
first_sum = 0
second_sum = 0
# 당일 가격과 전일 가격 구하기
for i, price in enumerate(df_reverse):
if i == 0:
first_price = price
if i <= 19:
first_sum += price
if i == 1:
second_price = price
if 1 <= i <= 20:
second_sum += price
# 당일과 전일 20일 평균 구하기
first_avg = first_sum / 20
second_avg = second_sum / 20
if first_price > first_avg :
if second_price < second_avg:
return True
# 추천종목들을 텍스트 파일로 정리하고 저장하기
def update_buy_list(buy_list):
f = open("C:/Users/USER/Desktop/buy_list_test.txt", "wt") # USER는 개인 컴퓨터마다 다른 이름입니다
for code in buy_list:
f.writelines("추천종목: %s\n" % (code))
f.close() buy_list = []
# 20일 이평선을 돌파한 종목 찾기
for i, code in enumerate(kr_code):
try:
# 이거는 그냥 얼마만큼 실행되고 있는 지 확인하기 위해 넣은 코드입니다.
print(i)
if filter(code):
buy_list.append(code)
# 예외 발생 시 프로그램이 종료되지 않고 계속 진행시키기 위해 넣음(그리고 무슨 오류인지 확인)
except Exception as e:
print(e, " : " , i , " : " , code)
update_buy_list(buy_list)
잘 작동함
728x90
반응형
'코딩 갤러리 > 데이터분석' 카테고리의 다른 글
[파이썬] MACD 매매기법 백테스팅하고 그래프로 만들기 (0) | 2022.03.20 |
---|---|
[파이썬] 캔들 스틱 차트(Candlestick Chart) 그리기 (0) | 2021.09.17 |
[파이썬] 코스피와 코스닥 종목코드 가져오기 (0) | 2021.09.17 |
[파이썬] 코스피, 달러, 채권 간 상관관계 분석을 위한 코드 (0) | 2021.09.17 |
손실을 줄이는 자산 배분을 위한 상관분석(주식, 달러, 채권) (0) | 2021.09.13 |