Programming for trading 7

[Python] 바이낸스API로 비트코인 1분봉 가져오기

오늘은 binance api로 비트코인 1분봉을 가져오는 코드를 작성하려고 합니다. 코드들은 여러 블로그 글들을 참고했는데, 레퍼런스를 못남겼네요 ㅠㅠ import된 패키지들입니다. 우선 api요청을 위한 requests 모듈이 보이고, time관련 패키지와 pandas가 보이네요. concurrent.futures라는 모듈도 import했는데, 이건 chatGPT가 멀티프로세싱을 제안하며 추가해주는 것입니다. 요새 코딩할때 chatGPT에게 최종 코드점검을 맡기는데 여러분도 꼭 이용해보시기바랍니다. import requests from datetime import timedelta import pandas as pd import datetime as dt from datetime import datet..

[Python] 업비트API로 비트코인 1분봉 가져오기

오늘은 업비트에서 비트코인 1분봉 데이터를 가져오는 코드를 작성해 보도록 하겠습니다. 조대표님이 만드신 pyupbit을 이용할 예정입니다. 관련 깃허브는 아래 링크 참고하세요. GitHub - sharebook-kr/pyupbit: python wrapper for upbit API python wrapper for upbit API . Contribute to sharebook-kr/pyupbit development by creating an account on GitHub. github.com 우선 데이터를 받기 위해 필요한 모듈입니다. from datetime import timedelta import pandas as pd import pyupbit import datetime as dt fro..

[Python] chatGPT 활용기(데이터프레임 replace)

데이터를 다루다 보면 칼럼 내 문자열 처리를 해야 하는 경우가 있습니다. 예를 들어 데이터베이스에 숫자 데이터를 insert할때 콤마(,)때문에 데이터가 문자열로 인식되어 오류를 뱉는 상황 등입니다. 이 경우 콤마를 빈값으로 수정해 주어야 숫자로 옳게 인식합니다. str과 replace 함수를 통해 아래와 같이 컬럼 하나씩 바꿀 수 있는데요, 여러 칼럼일 경우 칼럼마다 코드를 작성해야 한다는 번거로움이 있었습니다. df['frst_acqs_amount'] = df['frst_acqs_amount'].str.replace(',','') 그래서 7열부터 나머지열의 모든 컬럼을 한 번에 싶어 아래와 같이 코드를 작성했는데요, 데이터프레임에서는 작동되는 replace함수는 제가 의도한 replace와 달랐습니다..

[Python] OpenAPI로 주식 영업일, 휴장일 구하기

이번 포스팅은 주식장의 영업일과 비영업일을 구분하는 방법에 대한 것입니다. 트레이딩캘린더를 데이터베이스로 만들어 놓으면 주식이나 etf의 과거 기간성과를 쉽게 뽑아낼 수 있다는 장점이 있습니다. 휴일정보는 공공데이터포털(https://www.data.go.kr/data/15012690/openapi.do)에서 openapi를 이용하여 뽑아낼 거구요 나머지 일자는 pandas와 datetime을 통해 생성해보겠습니다. 개발에 앞서 미리 위 사이트에서 apikey를 신청해놓으시기 바랍니다. 휴일정보를 데이터프레임으로 반환하기 import requests import datetime as dt from bs4 import BeautifulSoup import pandas as pd from datetime i..

[Python] 데이터프레임 차집합 구하기

데이터프레임을 다루다보면 두 데이터프레임간의 차집합을 구해야 할 때가 있습니다. 예를 들어 데이터베이스 테이블에 존재하는 데이터와 웹에서 크롤링한 데이터간의 차집합을 구해서 비어있는 값을 insert하는 경우가 있겠습니다. 중복키 에러를 피하기 위해서 입니다. 리스트에서는 set이라는 함수가 있어서 차집합을 쉽게 구할 수 있는데, 데이터프레임에서 구현하기엔 쉽지 않더라구요. 데이터프레임의 merge기능을 이용하여 두 데이터 프레임 간 key값을 조인한 뒤, 한쪽에 있는 데이터만 가져와 주면 쉽게 차집합을 구할 수 있습니다. 예제와 함께 진행해보겠습니다. import numpy as np import pandas as pd import matplotlib.pyplot as plt columns =['dat..

[Python] 삼성전자 PER, PBR 웹크롤링

이번 포스팅에서는 주식 종목의 PER, PBR을 웹에서 크롤링하는 법을 알아보겠습니다. 웹크롤링 주의사항 웹크롤링할때는 주의할 점이 몇 가지 있는데, 아래와 같습니다. 1. 반복문 적용시 Sleep을 걸어주어 웹서버에 부하가 걸리지 않도록 해야 함(block 방지) 2. 사전에 허락을 받은 것이 아니라면, 수집한 데이터를 상업용목적으로 쓰지 않아야 한다. 오늘 크롤링할 데이터가 있는 에프엔가이드(http://comp.fnguide.com/)에는 아래와 같은 경고문구가 있으니 참고하세요. 사이트의 웹크롤링 허용 범위를 보려면 홈페이지 url 맨 뒤에 /robots.txt 를 붙여보면 되는데요, 확인 결과 특정 페이지만 네거티브하게 Disallow를 하고 있네요. 자세한 설명은 유대표님이 쓰신 파이썬으로 배..

[Python] 정규표현식(regular expression)

정규표현식(regular expression) 정규표현식은 문자열에 대한 패턴을 분석하는데 쓰이는 문법입니다. 예를 들어서 뉴스를 크롤링할 경우 뉴스 내용과 필요없는 기자의 이메일주소를 삭제하는데 정규표현식이 쓰일 수 있습니다. 정규표현식은 '메타문자' 때문에 헷갈리고 어려운 경우가 많은데요, 메타문자는 문자가 그 뜻이아니라 특별한 용도로 사용되는 문자를 뜻합니다. 정규표현식에서 사용되는 메타문자의 예는 다음과 같습니다. r은 뒤 문자열을 그대로 반환 [ ]는 문자들의 범위 [abc]의 의미는 ‘a,b,c’중 하나의 문자와 매치 [0-5]는 [012345]와 동일한 의미 [0-9] : 모든 숫자 [a-z] : 모든 소문자 [A-Z] : 모든 대문자 [a-zA-Z0-9] : 모든 알파벳 문자 및 숫자 \d..