본문 바로가기

반응형

전체

Platinum DP 문제들 풀이 (1) 요즘 DP에 약한 기분이 많이 들어서, 플래티넘 DP 문제 중 특별한 기법이나 최적화를 이용하지 않는 문제들을 푼 사람 수로 정렬해서 안 푼 문제들을 선별하여 조금씩 풀고 있다. 푼 사람 수로 정렬한 문제라 이미 남들에겐 웰논일지도 모른다. 많이 풀린 문제들답게 플래티넘임에도 불구하고 꽤 잘 풀리는 것도 있는 반면 해설 없이는 못 풀었을 문제들도 많았다. 아마 DP라는 걸 모르고 풀었다면 체감 난이도가 훨씬 높았을 것 같다. [BOJ 1126] 같은 탑 (Platinum III) N = 50개의 블록을 이용하여 높이가 같은 두 개의 탑을 만든다. 모든 블록을 사용할 필요는 없으며, 각 블록의 높이는 최대 50만이고, 모든 블록의 높이의 합이 50만 이하이다. 이때, 만들 수 있는 탑의 높이의 최댓값을 구..
[Toy Project] 자동매매 프로그램 만들기 - 5. RSI 지표 이용하여 매매하기 [목차] 1. 여러 암호화폐 RSI값 받아오기 2. RSI 지표 이용하여 매매 기능과 연동 1. 여러 암호화폐 RSI값 받아오기 이전 글에서 특정 암호화폐의 RSI값을 계산하는 방법을 알아보았다. RSI값을 계산하기 위해서는 pyupbit 모듈의 get_ohlcv 함수를 이용하여 해당 암호화폐의 이전 데이터들을 불러와야 한다. 하지만 get_ohlcv 함수로는 여러 암호화폐에 대한 데이터를 한 번에 받아올 수 없어서, 여러 암호화폐 RSI값을 계산하기 위해서는 각 암호화폐별로 get_ohlcv 함수를 각각 호출해야 한다. 따라서, 원하는 암호화폐 ticker를 리스트에 모아놓고, 차례대로 RSI를 계산하기로 했다. (더 나은 방법이 있는지는 잘 모르겠다) coinlist = ["KRW-BTC", "KRW..
[Toy Project] 자동매매 프로그램 만들기 - 4. RSI 지표 계산하기 [목차] 1. RSI 지표란? 2. RSI 지표 공식 3. 업비트 API를 통해서 RSI 계산하기 1. RSI 지표란? RSI(Relative Strength Index)는 상대강도지수로, 주식, 선물, 옵션 등의 기술적 분석에 사용되는 보조 지표이다. 1978년 미국의 Welles Wilder가 개발했다. RSI는 가격의 상승 압력과 하락 압력 간의 상대적인 강도를 나타내며, 일정 기간 동안 주가가 전일 가격에 비해 상승한 변화량과 하락한 변화량의 평균값을 구하여, 상승한 변화량이 크면 과매수로, 하락한 변화량이 크면 과매도로 판단하는 방식이다. Welles Wilder는 70% 이상을 과매수, 30% 이하를 과매도 상태로 규정했다. 2. RSI 지표 공식 RSI 지표의 식이 어떻게 유도되는지 알아보자..
[Toy Project] 자동매매 프로그램 만들기 - 3. pyupbit 모듈 알아보기 [목차] 1. pyupbit 모듈 설치 2. 암호화폐 목록 얻기 3. 암호화폐 현재가 얻기 4. 암호화폐 과거 데이터 조회 5. 암호화폐 호가 조회 6. 잔고 조회 7. 지정가 매수/매도 8. 시장가 매수/매도 9. 주문 취소/조회 1. pyupbit 모듈 설치 pyupbit 모듈이란, 업비트 API를 파이썬에서 쉽게 사용하기 위해서 저자들이 개발한 모듈이다. 굳이 API를 호출할 필요 없이 pyupbit 모듈을 이용하면 간편한 경우가 많다. pyupbit github 와 wikidocs.net/31063 를 참고하여 작성하였다. 먼저 pyupbit 모듈을 설치해보자. 프롬프트 창에 "pip install pyupbit"를 입력한다. 그 후, 다음 코드를 실행했을 때 오류가 발생하지 않는다면 pyupbi..
[Toy Project] 자동매매 프로그램 만들기 - 2. 업비트 API 가이드 업비트 개발자 센터에서는 API에서 제공하는 기능과 어떻게 사용할 수 있는지를 소개하고 있다. (docs.upbit.com/) Node, Python, Ruby, Java 총 4가지 언어에 대한 예시 코드가 나와있어 자신에게 맞는 언어를 선택하면 된다. 이제, 어떤 기능을 제공하고 있는지 알아보자. 먼저, 거래를 하기 위한 기능들이다. 1. 전체 계좌 조회 내가 현재 보유한 자산 리스트를 보여준다. 2. 주문 가능 정보 마켓별 주문 가능 정보를 확인한다. 여기서 마켓은 하나의 코인 종류를 생각하면 된다. 해당 코인에 대한 정보, 주문 가능한 범위, 조건 등을 제공한다. 3. 개별 주문 조회 주문 UUID(범용 고유 식별자)를 통해 개별 주문건을 조회한다. 4. 주문 리스트 조회 주문 리스트를 조회한다. ..
[Toy Project] 자동매매 프로그램 만들기 - 1. 업비트 API 사용 신청 암호화폐 자동매매 프로그램을 만들기 위해서는 기본적으로 거래소에서 제공하는 암호화폐에 대한 정보가 필요하다. 대부분의 큰 거래소들은 Open API를 제공하므로, 그중 국내에서 가장 거래량이 많은 업비트(Upbit) 거래소의 API를 사용하려고 한다. 먼저, 업비트 사이트의 회원가입 과정은 생략하겠다. 업비트 메인 홈페이지의 하단 부분을 보면 "Open API" 메뉴를 확인할 수 있다. 이를 클릭하자. Open API 사용하기를 누르면 Open API 이용 약관이 나온다. 여러 주의사항이 있는데, 대충 중요한 내용만 보면 다음과 같다. - 잔고 조회, 주문 기능(주문 조회, 주문하기), 출금 기능(출금 조회, 출금하기)을 사용할 수 있다. - 서비스의 장애 또는 중단으로 발생한 손해는 책임지지 않는다. ..
[Python] 7. 모듈(Module) [목차] 1. 모듈이란? 2. 모듈 만들기 & 불러오기 3. if __name__ == "__main__" 1. 모듈(Module)이란? 모듈(Module)이란, 함수나 변수 또는 클래스를 모아놓은 파이썬 파일이다. 이미 파이썬에서 아주 많은 표준 라이브러리 모듈을 제공하고 있고, 사용자가 직접 모듈을 만들어서 이용할 수도 있다. 여러 파일에서 동일한 클래스나 함수 등이 이용되는 경우에, 공통되는 부분을 따로 빼내어 하나의 파일로 만들어두면 매번 새로 정의할 필요 없이 가져오기만 하면 되므로 코드도 짧아지고 훨씬 편리하다. 2. 모듈 만들기 & 불러오기 이제 모듈을 어떻게 만들고 불러오는지를 알아보자. # file name : calculate.py def add(a, b): return a+b def ..
[Python] 6. 클래스 (2) - 클래스 심화 (상속, 메서드 오버라이딩, 추상) [목차] 1. 클래스 상속(Inheritance) 2. 메서드 오버라이딩(Method Overriding) 3. 추상 클래스(Abstract Class) 1. 클래스 상속(Inheritance) 1. 클래스 상속 기본 무언가를 물려받는다는 '상속'의 의미에 맞게, 클래스 상속은 어떤 클래스의 기능을 그대로 물려받으면서 다른 기능을 더 추가할 수 있는 기능을 말한다. 보통 상속을 해주는 클래스를 기반 클래스(base class) 또는 부모 클래스(parent class)라고 하고, 상속을 받는 클래스를 파생 클래스(derived class) 또는 자식 클래스(child class)라고 한다. 상속 기능이 유용한 경우는 새로운 기능이 필요할 때마다 계속해서 클래스를 새로 만드는 비효율적인 일을 방지하기 위함..