파이썬 공부(ft. sparta)/5주차 (8) 썸네일형 리스트형 5주차 끝 숙제 이 외에도 크롤링도 했고 그래프도 그렸고 엑셀도 다뤘고, 파일이름바꾸기 등 여러가지를 해봤다. 기억에 남길것들을 적어서 마지막 리마인드할 시간을 가지겠다. 5-6. 최적화 종목 찾기 월 - 금 전략이 가장 잘 맞는 종목을 찾아보겠다. 앞서 쓴 함수코드는 놨두고 새코드를 열어서 아래 코드를 작성해 다운받는다. !pip install dart-fss 그리고 api를 보기 위해 opendart사이트에 들어가서 로그인을 해준다. https://opendart.fss.or.kr/index.do 전자공시 OPENDART 시스템 --> 시스템 점검으로 모든 서비스 이용이 일시적으로 중단되어니 양해 부탁드립니다. 시스템 점검 일정 2019년12월30일 23:00 ~ 12월31일 24:00 (1시간) *상기 작업 시간은 사정에 의해 변경 될 수 있습니 opendart.fss.or.kr 그리고 인증키 신청/관리 에서 오픈API 이용현황 에 들어간다. 이상태로 일단 놨둔다. 이제 '종목 가져오기' 코드.. 5-5. 요일 표기와 주별 가격 붙이기 자 첫번째로 주가가져오기를 한다. df = fdr.DataReader('005930','2018') df 값이 잘 나오는지 확인한다. 우리가 필요한건 Date 와 Open만 필요하다. 보면 date가 index로 구분되있기 때문에 값을 가져올 수 없다. 그래서 이걸 가져오기 위해선 우선 reset해주면 된다. 확인해주면 date가 값으로 들어온것을 확인 할 수 있다. 이제 date와 open값을 가져올 수 있다. 이제 여기다가 요일을 붙여야한다. 먼저 date가 텍스트 형식으로 들어가 있기 때문에 날짜형식으로 바꾼 다음 pands에서 제공하는 요일로 바꿔주는 함수를 사용한다. 그럼 바뀐게 없어보이지만 형식은 바뀌었다. 그리고 아래 사지처럼 작성 후 결과를 보면 day 항목이 생기고 거기에 요일이 들어간것.. 5-4. 최적의 k 구하고 나만의 전략 구현하기 우선 함수로 만들고 잘 작동하는지 새코드를 만들어서 적어보았다. 잘 작동이 됬고, 이제 k값을 반복문으로 넣어서 뭐가 최적인지 찾아볼꺼다. 우선 아래 사진과 같이 작성하고 살펴보자면 0.4 부터 0.6 까지 0.01씩 값을 올릴꺼다. 라는 것이 된다. 이렇게 k 값을 돌려주고 이제 print안에 get_return 함수를 넣어보자. 이렇게 값이 나오는데 우리가 일일히 눈으로 확인하기 어렵기 때문에 수익률을 표로 보고 값 크기대로 정렬해서 제일 큰 값인 첫번째 값만 꺼내오게 하면 된다. 우선 doc로 k 와 return을 만들어 거기에 각각 값을 넣어주고, df.append 해서 값들을 차곡차곡 넣어준뒤 sort해서 정렬을 해주면 아래 사진과 같이 나온다. 제일 위를 확인하면 k가 0.40 일때가 가장 큰.. 5-3. 사야하는 날, 파는 날 가격 구하기 데이터를 원하는 형태로 가공해 보겠다. 우선 가장 필요한건 오늘이 사야하는 날인가 아닌가 구분이 되야한다. 사야되는 가격을 알아야 그 가격을 넘으면 사야한다. 위 사진에서 보는 것처럼 어제 high 에서 어제 low 를 빼주면 된다. shift() 를 해서 빼주면 된다. 사야하는 가격을 구하는 식은 아래와 같다. 사야하는 가격 = (어제최고가 - 어제 최저가) * k + 오늘 시작가 어제 최고가는 shift(1)을 해주면 다음 날로 넘어가기때문에 어제 최고가가 되는게 맞다. 어제 최저가도 마찬가지이기 때문에 shift(1)을 해서 계산해주고 k는 얼만큼 오르내리는가 퍼센트지를 결정하고, 시작가를 더하면된다. 확인해 보면 위 사진과 같이 나온다. 여기 보면 시작가가 52540원 인데 buy_at 52788.. 5-2. 주가 가져오기 먼저 라이브러리 설치를 해보자. !pip install yfinance pandas-datareader finance-datareader 완료 됬으면 아래 코드를 복사해서 새코드에 붙여넣어준다. from pandas_datareader import data as pdr import yfinance as yf yf.pdr_override() import numpy as np import pandas as pd import FinanceDataReader as fdr df = fdr.DataReader('005930','2018') df.head() 참고로 이 코드는 강사님도 외워서 쓰지않는다. 필요할때 찾아서 쓰자. 삼성전자의 값이 잘나오는지 확인한다. 여기까지 확인이 됬으면 from pandas_data.. 5-1. 변동성 돌파 전략 - 설명 먼저 변동성 돌파 전략이 뭔지 알고 가겠다. 주식이 막 오르는 거 같으면 일단 사고 내일 바로 파느게 핵심이다. 주식이 막 오르는거 같은 기준은 다음은 주가 가져오기를 먼저 해보겠다. 5w_좀 다른 백테스팅 연습 이번 주차는 조금 다른 백테스팅을 반복해서 연습할거다. pandas, colab, python, 백테스팅에 많이 익숙해졌을거라 생각한다. 두가지의 백테스팅을 해볼꺼다. 먼저 변동성 돌파 전략이라는 것을 구현해 볼꺼다. 두번째는 월요일에 사서 금요일에 팔면 수익률이 어떠한지 해볼꺼다. 자 우리가 백테스팅 했던 순서는 아래와 같다. 다음에 변동성 돌파 전략에 대해 설명하겠다. 이전 1 다음