파이썬 코인 자동매매 봇 만들기 (3) [with Celery & GIL]

서론 지난 글과 지지난 글을 통해 자동매매의 기본적인 틀을 잡았다면, 최적화하는 옵티마이저를 만들어보고자 한다. * Scheduler (Celery Beat) : 주기적으로 작업을 트리거 * Redis : 메시지 브로커 * Collector : 시세(분봉) 데이터를 수집하여 DB에 적재 * Trader : 전략에 따라 매수/매도 시그널을 실행 * Optimizer : 전략 파라미터(가중치 등)를 백테스트하여 최적화 * Database (TimescaleDB) : 시계열 데이터 저장소…

파이썬 코인 자동매매 봇 만들기 (2)

서론 지난 글에 이어 이번에는 본격적인 인프라 설정 및 자동매매의 기본 플로우를 구현해보고자 한다. 본론 1. 인프라 구축 자동매매 시스템의 전반적인 파이프라인은 다음과 같은 구성요소들로 이루어져 있다. * Scheduler (Celery Beat) : 주기적으로 작업을 트리거 * Redis : 메시지 브로커 * Collector : 시세(분봉) 데이터를 수집하여 DB에 적재 * Trader : 전략에 따라 매수/매도 시그널을 실행…

파이썬 코인 자동매매 봇 만들기 (1)

서론 필자는 암호화폐(이하 코인)에 대해 무지하다. 그리고 지금도 마찬가지이다. 그럼에도 불구하고 암호화폐 자동매매 봇을 개발하고자 하는 이유는 단순하다. 최근 개인용 서버를 구매하였는데, 여기에 돌릴만한 게 없나 하고 찾아보다가 자동매매 봇을 떠올렸기 때문이다. 사실 개인 NAS용으로 구매하려 한 건데, '그돈씨' 하다 보니까 스펙이 생각보다 높아졌다 서버는 24시간…

DRF QuerySet 처리 흐름과 FilterSet 동작 원리 분석

서론 Django REST Framework를 사용하면서 filterset_class를 설정하고 필터링을 적용하는 건 매우 흔한 일이다. 필터셋을 통해 URL 파라미터만으로 복잡한 조건 필터링을 쉽게 구현할 수 있고, django-filter 라이브러리를 활용하면 필드 단위, 메서드 단위로 커스텀 필터도 자유롭게 정의할 수 있다. 필자 또한 filterset_class에 커스텀 메서드를 정의하여 필터링을 적용했다. 하지만 API 성능을…

DRF Serializer 검증 흐름과 to_internal_value 동작 원리 분석

서론 DRF(Django REST Framework)를 사용하여 개발을 할 때, 시리얼라이저를 커스텀하는 것은 빈번한 일이다. 나 또한 마찬가지로 개발을 진행하던 중 DRF 시리얼라이저를 커스텀하였는데, 예상과 다른 동작이 일어났다. 입력값은 엑셀 파일에서 단일 행으로 제공되고, 이를 여러 모델로 정규화하여 나누는 과정에서 문제가 발생하였다. 보다 구체적으로 설명하면, A 시리얼라이저는 B, C, D,…

Django Request 처리 흐름 분석

서론 Django를 통해 WAS 서버를 구성하다 보면 당연시하며 사용하는 것이 있다. 바로 'request(요청)' 객체가 이에 해당된다. 너무나도 당연시하며 사용하곤 있었지만 어떻게 이 'request' 객체가 생성되는지 흐름을 알고 있진 못하였다. 따라서 본 글에서는 WSGI 서버와 Django(장고) 사이에서 어떻게 'request' 객체가 생성되고, 비즈니스 로직이…

파이썬 매직 메서드(Magic Method)의 동작 원리 분석

서론 흔히들 파이썬(Python)은 자바(Java)와 비교하였을 때 보다 개발하기 쉬운 언어라고들 한다. 파이썬이 개발하기 쉬운 언어로 평가받는 이유 중 하나는 다양한 연산자들이 직관적이고 유연하게 설계되어 있기 때문이다. 일례로, 리스트 자료형의 경우 'in' 연산자를 통해 해당 리스트 내부에 특정 값이 존재하는지를 확인할 수 있다. fruits = ['…