전략별 실시간 수익률 집계 및 리포트 기능 구현 – 코인 자동 거래 앱 개발기 (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. 마무리 및 다음 편 예고
이제 우리는 전략별로 성과를 실시간으로 추적하고 비교할 수 있게 되었습니다. 멀티 전략이 활성화된 상황에서 각 전략의 기여도와 안정성까지 분석이 가능해집니다. 다음 편에서는 리스크 경고 시스템과 손실 제한 로직을 구현해봅니다.
반응형
'프로젝트 (Project) > 바이낸스 코인 자동거래' 카테고리의 다른 글
| AWS 서버 배포와 실전 운영 환경 구성 – 코인 자동 거래 앱 개발기 (15) (4) | 2025.07.31 |
|---|---|
| 리스크 경고 시스템과 손실 제한 로직 설계 – 코인 자동 거래 앱 개발기 (14) (1) | 2025.07.30 |
| 멀티 전략 등록 및 동적 실행 시스템 설계 – 코인 자동 거래 앱 개발기 (12) (2) | 2025.07.28 |
| 백테스트 기능 구현과 전략 검증 시스템 설계 – 코인 자동 거래 앱 개발기 (11) (4) | 2025.07.27 |
| 리스크 알림 시스템과 손실 경고 기능 구현 – 코인 자동 거래 앱 개발기 (10) (0) | 2025.07.26 |