전략별 실시간 수익률 집계 및 리포트 기능 구현 – 코인 자동 거래 앱 개발기 (13)

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

반응형

13. 전략별 실시간 수익률 집계 및 리포트 기능 구현 – 코인 자동 거래 앱 개발기 (13)

자동매매 시스템이 점점 복잡해지면서, 각 전략의 성능을 실시간으로 비교하고 분석할 수 있는 리포트 시스템이 필수가 되었습니다. 이번 편에서는 전략별로 수익률을 집계하고, 이를 리얼타임으로 리포트 형태로 정리하는 기능을 구현합니다.


13-1. 전략별 수익률 구조 설계

먼저 전략별로 손익을 기록하기 위한 구조를 준비합니다.


strategy_pnl = {
  "MACDRSIStrategy": [],
  "VWAPStrategy": [],
  "EMACrossStrategy": []
}

진입/청산이 발생할 때마다 해당 전략의 손익을 리스트에 추가합니다.


13-2. 수익률 계산 함수 만들기


def update_strategy_pnl(strategy_name, entry_price, exit_price):
    profit = exit_price - entry_price
    strategy_pnl[strategy_name].append(profit)

이 함수는 각 전략에서 자동으로 호출되도록 연결해둡니다.


13-3. 실시간 리포트 출력


def print_strategy_report():
    print("📊 전략별 실시간 수익률")
    for name, pnl_list in strategy_pnl.items():
        total = round(sum(pnl_list), 2)
        avg = round(sum(pnl_list) / len(pnl_list), 2) if pnl_list else 0
        win_rate = round(len([p for p in pnl_list if p > 0]) / len(pnl_list) * 100, 2) if pnl_list else 0
        print(f"{name}: 총 수익 = {total}, 평균 = {avg}, 승률 = {win_rate}%")

이 리포트는 루프마다 또는 일정 시간 간격으로 출력되도록 설정합니다.


13-4. 로그 파일 저장 기능


import datetime

def save_strategy_log():
    with open("strategy_profit_log.txt", "a") as f:
        now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
        for name, pnl_list in strategy_pnl.items():
            total = round(sum(pnl_list), 2)
            f.write(f"[{now}] {name} 총 수익: {total} USDT\n")

이렇게 하면 하루 단위 성과 분석도 가능해집니다.


13-5. 향후 확장 방향

  • 전략별 수익률 그래프 시각화 (matplotlib, seaborn 등)
  • Flask/Django로 웹 리포트 서버 구축
  • 리스크 경고 기능 연동 (손실 과다 시 알림)

특히 손실 임계치 설정을 통해 자동 전략 중단 기능도 고려할 수 있습니다.


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

이제 우리는 전략별로 성과를 실시간으로 추적하고 비교할 수 있게 되었습니다. 멀티 전략이 활성화된 상황에서 각 전략의 기여도와 안정성까지 분석이 가능해집니다. 다음 편에서는 리스크 경고 시스템과 손실 제한 로직을 구현해봅니다.

 

반응형