freqtrade 오픈소스 코드 분석해보기! 비트코인 투자 자동화 오픈소스 프로젝트
개요
최근에 관심이 있는 분야이기도하고 회귀 분석 쪽으로도 접목시킬 수 있는 장점이 있어서
오픈소스 컨트리뷰터 및 프로그램 개발을 위해 해당 오픈소스 분석 시작!
최근 정리한 오픈소스 분석 방법론을 통해 순차적으로 뜯어볼 예정이다.
(너무 어렵지만 해결했을 때의 짜릿함 기대중)
https://timmer.tistory.com/350
1. 배경지식을 갖출 것
간단하게 한줄로 요약이 가능하다.
'비트코인 투자 자동화 프로그램'
2. 큰 그림을 보자
이 캡쳐 하나로도 다 담지 못하는 무지막지한 코드량이 존재한다.
300명이 넘는 contributor가 작성한 코드들이기 때문에 충분히 그럴지도...
폴더 구조 파악
그래서 폴더 하나씩 무엇을 의미하는지, 구조파악을 먼저 해보기로 했다.
주로 아래의 폴더 패키지들이 자주 쓰인다.
이름 | 설명 |
commands | CLI 명령 시 해당 명령어를 읽고 코드 동작하는 함수들을 모아놓음 |
configuration |
CLI에 필요한 config.json 파일 parsing |
data |
데이터 백테스트 및 cache 보관 |
enums |
상수 관리 목적 |
exchange |
각 거래소의 함수 정리 (entry, exit 등) |
freq_types |
상수의 타입 관리 목적 |
loggers |
로깅 함수 |
plugins |
지정된 pair의 선택 알고리즘 함수들 |
resolvers |
custom 전략 관리 |
грс |
sns 연동 함수 (telegram 등) |
strategy |
custom 전략 인터페이스 관리 |
templates |
단순 custom 전략 위한 템플릿 예시들 |
util |
시간 변경 등 각종 util 함수 |
_init__.py 이란?
지금은 파이썬 버전 3.3 이후부터 자동화되어 필요없어진 _init__.py이 각 폴더명마다 있었는데,
이 개념을 한번도 보지 못하여 이해하는데 고난을 많이 겪었다.
(멍청이 그차제)
각 폴더 내에 해당 파일을 지정하면, 파이썬이 해당 파일이 있는 폴더 자체를 패키지로 인식하여,
import를 할 때 보다 편리하게
__init __ .py 내 함수들을 각각 명시하여 관리를 용이하게 할 수 있는 장점이 있다!
예시로
from freqtrade.exchange import (
timeframe_to_minutes,
)
from freqtrade.strategy.informative_decorator import informative
from freqtrade.strategy.strategy_helper import (
merge_informative_pair,
stoploss_from_absolute,
stoploss_from_open,
)
여기서 import를 할 때 ()로 감싸는 이유는, 가독성 목적
위의 정의된 폴더 내 함수를 사용하여 아래
main.py를 실행하여 전체 코드가 돌아가게 만든다.
소스코드로 공부가 될까?
단순히 쓰기만 했을 때는 몰랐는데
실제로 소스코드를 들여다보며 해당 코드의 작동방식
그리고 코드 폴더 구조 방식, 각 함수들의 네이밍 등을 확인하다보니
확실히 몰랐던 부분을 좀더 자세히 알 수 있었던 경험!
뜯어볼때는 좀 스트레스 받았는데
막상 파악하고 나니 희열감이 든다.
이런 느낌때문에 코딩이 재밌는게 아닐까!?
굿굿
나머지 문서화나 생각 정리부분은 다음 글에 계속