개인프로젝트

freqtrade 오픈소스 코드 분석해보기! 비트코인 투자 자동화 오픈소스 프로젝트

티멀 2024. 6. 27. 12:44
728x90
반응형

개요

최근에 관심이 있는 분야이기도하고 회귀 분석 쪽으로도 접목시킬 수 있는 장점이 있어서

오픈소스 컨트리뷰터 및 프로그램 개발을 위해 해당 오픈소스 분석 시작!

 

최근 정리한 오픈소스 분석 방법론을 통해 순차적으로 뜯어볼 예정이다.

(너무 어렵지만 해결했을 때의 짜릿함 기대중)

https://timmer.tistory.com/350

 

깃허브 내 오픈소스 코드 분석하는법 총 정리 - 순서대로만 따라하면 이해되는 오픈소스코드 분

1. 배경지식을 갖출 것정렬이라던가 검색같은데 특정 알고리즘을 사용했다면,해당 알고리즘의 작동원리 이해하고 난 후 분석하는 것이 효율적이다. 만약 해당 지식이 없이 코드로만 이해하려

timmer.tistory.com

 

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를 실행하여 전체 코드가 돌아가게 만든다.

 

소스코드로 공부가 될까?

단순히 쓰기만 했을 때는 몰랐는데

실제로 소스코드를 들여다보며 해당 코드의 작동방식

그리고 코드 폴더 구조 방식, 각 함수들의 네이밍 등을 확인하다보니

확실히 몰랐던 부분을 좀더 자세히 알 수 있었던 경험!

 

뜯어볼때는 좀 스트레스 받았는데

막상 파악하고 나니 희열감이 든다.

 

이런 느낌때문에 코딩이 재밌는게 아닐까!?

 

굿굿

 

 


나머지 문서화나 생각 정리부분은 다음 글에 계속

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형