feat(weekly-report): add live trade log parser
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -46,3 +46,30 @@ def test_run_backtest_returns_summary():
|
||||
|
||||
assert result["summary"]["profit_factor"] == 1.57
|
||||
assert result["summary"]["total_trades"] == 27
|
||||
|
||||
|
||||
def test_parse_live_trades_extracts_entries(tmp_path):
|
||||
"""봇 로그에서 진입/청산 패턴을 파싱하여 트레이드 리스트를 반환."""
|
||||
from scripts.weekly_report import parse_live_trades
|
||||
|
||||
log_content = """2026-03-01 10:00:00.000 | INFO | src.bot:process_candle:42 - [XRPUSDT] LONG 진입: 가격=2.5000, 수량=100.0, SL=2.4000, TP=2.7000
|
||||
2026-03-01 10:15:00.000 | INFO | src.bot:process_candle:42 - [XRPUSDT] 신호: HOLD | 현재가: 2.5500 USDT
|
||||
2026-03-01 12:00:00.000 | INFO | src.user_data_stream:_handle_order:80 - [XRPUSDT] 청산 감지(TAKE_PROFIT): exit=2.7000, rp=20.0000, commission=0.2160, net_pnl=19.5680
|
||||
"""
|
||||
log_file = tmp_path / "bot.log"
|
||||
log_file.write_text(log_content)
|
||||
|
||||
trades = parse_live_trades(str(log_file), days=7)
|
||||
assert len(trades) == 1
|
||||
assert trades[0]["symbol"] == "XRPUSDT"
|
||||
assert trades[0]["side"] == "LONG"
|
||||
assert trades[0]["net_pnl"] == pytest.approx(19.568)
|
||||
assert trades[0]["close_reason"] == "TAKE_PROFIT"
|
||||
|
||||
|
||||
def test_parse_live_trades_empty_log(tmp_path):
|
||||
"""로그 파일이 없으면 빈 리스트 반환."""
|
||||
from scripts.weekly_report import parse_live_trades
|
||||
|
||||
trades = parse_live_trades(str(tmp_path / "nonexistent.log"), days=7)
|
||||
assert trades == []
|
||||
|
||||
Reference in New Issue
Block a user