멀티 전략 등록 및 동적 실행 시스템 설계 – 코인 자동 거래 앱 개발기 (12)

2025. 7. 28. 05:26프로젝트 (Project)/바이낸스 코인 자동거래

반응형

12. 멀티 전략 등록 및 동적 실행 시스템 설계 – 코인 자동 거래 앱 개발기 (12)

자동 거래 시스템이 실전에서 더 똑똑하게 작동하려면 하나의 전략만이 아니라 다양한 전략을 상황에 맞게 선택하고 병행 실행할 수 있어야 합니다. 이번 글에서는 **멀티 전략 등록 시스템**을 만들고, 전략 선택 → 실행 여부 ON/OFF → 전략별 결과 출력까지 구성합니다.


12-1. 전략을 파일로 분리하고 관리하기

각 전략을 클래스로 만들고, 별도 파일로 관리합니다. 예를 들어 디렉토리 구조는 다음과 같이 구성할 수 있습니다:


/strategies/
├── macd_rsi.py
├── ema_cross.py
├── vwap.py

각 파일은 공통 인터페이스를 따르도록 작성합니다:


class Strategy:
    def generate_signal(self, df):
        raise NotImplementedError

12-2. 공통 인터페이스 설계

모든 전략은 generate_signal() 메서드를 구현해야 합니다.


class MACDRSIStrategy(Strategy):
    def generate_signal(self, df):
        # MACD + RSI 기반 신호 반환
        return signal

이렇게 하면 전략 파일을 자동으로 불러와서 등록할 수 있습니다.


12-3. 동적 전략 로딩


import importlib
import os

def load_strategies():
    strategy_list = []
    for filename in os.listdir("strategies"):
        if filename.endswith(".py"):
            module_name = filename[:-3]
            module = importlib.import_module(f"strategies.{module_name}")
            strategy_class = getattr(module, "Strategy")
            strategy_list.append(strategy_class())
    return strategy_list

이제 새로운 전략을 파일만 추가하면 자동으로 등록되는 구조가 됩니다.


12-4. 전략별 실행 여부 설정 (토글 기능)


# 예시: 실행할 전략만 선택
active_strategies = {
    "MACDRSIStrategy": True,
    "EMACrossStrategy": False,
    "VWAPStrategy": True
}

실행 루프에서 조건에 맞는 전략만 수행:


for strategy in strategies:
    name = strategy.__class__.__name__
    if active_strategies.get(name, False):
        signal = strategy.generate_signal(df)
        # 시그널 처리

12-5. 전략별 결과 로깅

각 전략의 신호 발생 횟수, 성공률, 수익률 등을 따로 추적합니다.


strategy_logs = {
    "MACDRSIStrategy": {"win": 0, "loss": 0, "profit": 0},
    "VWAPStrategy": {"win": 0, "loss": 0, "profit": 0}
}

이를 기반으로 전략별 성능 리포트 자동 출력도 가능합니다.


12-6. 마무리 및 다음 편 예고

이제 자동 거래 시스템은 여러 전략을 동시에 관리하고, 동적으로 켜고 끌 수 있는 유연한 구조를 갖추게 되었습니다. 다음 편에서는 전략별 실시간 수익률 집계 및 시각화 기능을 개발해봅니다.

 

반응형