반응형

프로젝트 52

업비트 웹소켓 데이터 PostgreSQL DB에 저장하기 - 파이썬 비트코인 자동매매

지난 포스팅까지 PostgreSQL 데이터베이스 서버를 리눅스 서버에 설치하고 기본적인 세팅 및 외부에서 접속할 수 있도록 설정을 하는 방법에 대해서 살펴 보았습니다. 이번 시간에는 업비트 웹소켓 데이터를 PostgreSQL DB에 저장하기 위해 테이블 및 인덱스를 생성하고 파이썬 프로그램을 이용해서 웹소켓 데이터를 저장하는 방법에 대해서 살펴 보겠습니다. 아직 PostgreSQL 설치를 하지 않으신 분들은 아래 포스팅을 순차적으로 참고 부탁 드립니다. 2022.02.07 - [코딩스토리/리눅스] - 오라클 리눅스 8 - PostgreSQL 13 데이터베이스 설치하기 오라클 리눅스 8 - PostgreSQL 13 데이터베이스 설치하기 이번 시간에는 앞으로 Tech&Fin에서 다루는 비트코인 자동매매 프로..

업비트 공지사항 크롤링하여 텔레그램으로 메세지 알림받기

예전에는 업비트에서 프로젝트 공시를 공지사항에 올리면 해당 종목이 급등하는 일명 공시펌핑이 있던 시절이 있었습니다. 하지만 여러가지 사유로 시장을 흐린다는 판단하에 현재는 업비트에서는 프로젝트 공시를 하고 있지는 않습니다. 하지만 일반 공지사항 중에서도 입출금 일시 중지와 같은 펌핑의 재료로 쓰일 수 있는 공지들이 있는데요. 이러한 공지들은 빠르게 확인하고 대처하는 것이 가장 중요합니다. 이번 시간에는 업비트 공지사항의 글을 5초 간격으로 크롤링하여 새로운 글이 올라오면 텔레그램 메시지로 알림을 받는 프로그램을 만들어 보겠습니다. 목차 - 클릭하면 이동합니다. 업비트 공지사항 크롤링 업비트 공지사항 크롤링 주소 업비트 웹사이트를 보면 고객센터 아래에 위와 같은 공지사항 메뉴가 있습니다. 여러가지 게시판이..

급등주 찾기 - 업비트 파이썬 비트코인 자동매매 프로그램

업비트의 경우 일명 9시 경주마라고 불리고 있는 변동률이 초기화 되는 오전 9시에 이유없이 갑자기 급상승하는 종목들이 있는데요. 이런 종목 외에도 호재 공지가 뜨거나 해외 거래소의 급상승으로 인해 갑자기 급상승하는 종목들을 발견할 수 있습니다. 업비트 API를 이용하여 급등하는 종목을 찾으려면 분봉 데이터를 종목별로 가져와야 하기 때문에 100여개가 넘는 종목에 대해서 캔들 데이터를 조회하여 급등 종목을 찾으려면 빨라야 20~30초 정도가 소요 됩니다. 급등하는 종목에서 20~30초는 많게는 50~100%까지의 상승도 이루어 낼수 있는 시간이 될 수 있기 때문에 20~30초의 딜레이는 급등주 종목을 찾아서 매수하기에는 다소 애매한 시간이 될 수 있습니다. 하지만 얼마전에 살펴본 웹소켓을 이용하여 현재가 ..

비트코인 자동매매 프로그램 환경변수 파일로 빼기 - 보안 강화

비트코인 자동매매 프로그램을 만들다보면 업비트 API 액세스 키 및 시크릿 키 그리고 텔레그램 키 등 여러가지 보안 정보들을 사용해야 합니다. 지금까지는 제일 간편한 방법으로 각종 Key를 공통모듈에 넣고 저장하여 사용하였는데요. 이런 경우 코드를 공유할 때 해당 부분을 제거하는 것을 깜빡하는 경우 자신의 Key가 그대로 노출되어 자산이 위험에 빠질 수 있습니다. 이번 시간에는 각종 Key를 공통 코드가 아닌 특정 파일로 빼서 보관하고 필요한 시점에 파일을 읽어 Key를 조회하는 방법으로 공통 모듈을 변경해 보도록 하겠습니다. 목차 - 클릭하면 이동합니다. 보안 정보 파일로 관리하기 폴더 및 파일 생성하기 trade_bot 폴더 아래에 env 폴더를 하나 생성하고 env.txt 파일을 생성합니다. {'a..

업비트 웹소켓 데이터 오라클 DB에 저장하기 - 비트코인 자동매매 프로그램

지난 포스팅에서 업비트 웹소켓을 통해 현재가(TICKER) 정보를 구독하여 실시간으로 데이터를 수신하는 프로그램을 만들어 보았는데요. 해당 포스팅에서도 언급해 드린바와 같이 웹소켓 데이터는 실시간으로 데이터를 계속해서 수신하기 때문에 해당 데이터를 데이터베이스에 저장하고 분석 및 쿼리를 통한 다수의 종목 일괄 조회의 목적으로 사용할 수 있습니다. 이번 시간에는 업비트 웹소켓 데이터 중에 현재가(TICKER) 데이터를 오라클 DB에 저장하는 방법에 대해서 살펴 보도록 하겠습니다. 아직 업비트 웹소켓을 구독하는 방법을 확인하지 못한 분들은 아래 포스팅을 참고하시면 됩니다. 2022.01.14 - [프로젝트/비트코인 자동매매] - 파이썬 업비트 웹소켓 접속방법 - 비트코인 자동매매 프로그램 파이썬 업비트 웹소..

프로젝트 2022.01.22

파이썬 업비트 웹소켓 접속방법 - 비트코인 자동매매 프로그램

업비트에서 코인 정보를 받아오는 방법은 크게 두 가지 방법으로 나눌 수 있는데요. 먼저 API를 개별 호출하여 정보를 얻어오는 방법과 웹소켓을 이용해서 실시간 데이터를 구독하는 방법이 있습니다. 지금까지 Tech&Fin에서 다루었던 프로그램들에서는 첫 번째 방법인 API를 개별 호출하는 방법을 사용했었는데요. 이번 시간에는 API 개별 호출 방법과 웹소켓을 이용하는 방법은 어떤점이 다른지 살펴보고 웹소켓을 이용해서 실시간 체결 데이터를 받아오는 방법에 대해서 알아 보도록 하겠습니다. 목차 - 클릭하면 이동합니다. 웹소켓에 대한 생각 API 개별 호출과 웹소켓 구독의 차이점 기술적인 이야기는 뒤로하고 API를 개별 호출하는 것과 웹소켓을 구독하는 것은 목적의 차이가 크다고 생각합니다. API를 개별 호출하..

리눅스 서버에서 비트코인 자동매매 프로그램 스케쥴 등록하여 실행하기

지난 시간에 비트코인 자동매매 프로그램을 리눅스 서버에서 실행하는 방법에 대해서 살펴 보았는데요. 리눅스에서 프로그램을 수행한다 하더라도 예기치 않은 오류 또는 API를 제공하는 업체(업비트, 빗썸, 바이낸스 등)의 점검 또는 오류/과부하로 인해 프로그램이 중단되는 경우가 상당히 자주 발생하게 됩니다. 프로그램에 문제가 있어 발생하는 오류라면 프로그램의 수정이 있어야 하겠지만 그런 경우가 아니라면 프로그램 수정 없이 단순히 실행만 다시 해주면 되는데요. 이를 자동화 시키면 프로그램을 거의 99% 영구적으로 수행할 수 있게 됩니다. 그래서 이번 시간에는 비트코인 자동매매 프로그램을 스케쥴에 등록하여 중단되더라도 다시 실행하는 방법을 통해 프로그램을 연속적으로 실행할 수 있는 방법에 대해서 살펴 보도록 하겠..

리눅스 서버에서 비트코인 자동매매 프로그램 실행하기

윈도우 환경에서 파이썬으로 만든 비트코인 자동매매 프로그램을 실행하면 오류나 업비트 서버 점검 등으로 인해 오류가 발생하는 경우 프로그램이 종료 되어 수동으로 다시 실행해 주어야 하는 경우가 꽤 자주 발생하게 됩니다. 윈도우 환경에서도 스케쥴러에 등록하는 방법이 있긴 하지만 스케쥴러를 등록하는 것이 복잡하기도 하지만 실행이 완벽하게 되지 않아 사용하기 불편한 점이 많습니다. 또한 가정용 PC의 경우에는 일반적인 업무 용도로도 사용하기도 하며 윈도우의 잦은 업데이트로 재부팅이 자주 필요하기 때문에 프로그램을 끊었다 다시 돌려야 하는 경우가 많이 발생합니다. 이런 불편함은 프로그램을 리눅스 서버에서 수행하게 되면 어느정도 해소가 가능한데 오늘은 리눅스에서 파이썬 프로그램을 실행하는 방법에 대해서 살펴 보겠습..

트레일링 스탑 자동 매도 프로그램(수정본) - 파이썬 업비트 비트코인 자동매매

과거 포스팅에서 올려드린 트레일링 스탑을 활용한 자동 매도 프로그램에서 매수 후 바로 매도가 되어 버리는 현상이 발생한다는 댓글을 달아주신 분이 계셔서 프로그램을 분석해 본 결과 업비트 API의 치명적인 오류가 발견되었습니다. 문제는 업비트 API를 이용해서 보유 코인 리스트(get_accounts)를 할 때 발생하는 것으로 확인 되었으며 현상은 매수 직후에 매수가격이 올바르지 않게 조회되는 현상입니다. 예를들어 도지코인을 300원에 매수했음에도 불구하고 매수 직후에 조회된 잔고 자료에는 평균매수가격이 400원이나 200원 등으로 높거나 낮게 조회되어 수익 후 매도 로직이나 손절 로직을 타게 되는 현상입니다. 그리고 몇 초후에 다시 조회하면 올바르게 300원으로 조회가 됩니다. 오류 현상은 매수 직후에만..

비트코인 자동 매수 프로그램(수정본) - 파이썬 업비트 비트코인 자동매매

이전에 업비트 API 및 파이썬을 이용해서 보조지표를 활용하여 원하는 조건에 맞을 시 코인을 자동으로 매수하는 프로그램을 작성해 보았는데요. ① 보조지표를 가져오는 로직에서 속도가 저하되는 문제와 ② 중복 매수를 방지하기 위해 매수 후 매수 제외 종목으로 등록하는 부분이 추후 매도를 하게 되더라도 다시 매수되지 않는 문제에 대해서 몇몇 분들께서 댓글을 달아 주셨습니다. 또한 프로젝트를 진행하면서 공통 모듈이 여러 번 수정되어 과거 포스팅의 로직이 정상적으로 작동하지 않는 분들도 계시는 것 같아 이번에 자동 매수 프로그램을 수정하면서 전체 코드를 다시 정리해서 업로드 하려고 합니다. 목차 - 클릭하면 이동합니다. 매수 타이밍 보조 지표를 활용한 매수 타이밍 판단 로직 기본적인 매수 타이밍을 판단하는 로직은..

반응형