auto_trade_sys/scripts/aggregate_trade_stats.py
薇薇安 e2e7effca2 feat(database): 添加交易统计模型和聚合逻辑
在数据库模型中新增了 `TradeStats` 类,包含交易统计功能,支持按交易对和日期聚合数据。实现了从 `binance_trades` 和 `trades` 表中提取交易数据的逻辑,并创建了相应的统计表 `trade_stats_daily` 和 `trade_stats_time_bucket`。此改动旨在增强交易数据分析能力,为后续的风险控制和决策提供支持。
2026-02-26 20:08:46 +08:00

40 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
定时任务:将最近 N 天的交易数据聚合到 trade_stats_daily / trade_stats_time_bucket。
优先从 binance_trades 读取(需先跑 sync_binance_orders.py无数据时用 trades 表。
用法:
python scripts/aggregate_trade_stats.py # 默认 7 天、默认账号
python scripts/aggregate_trade_stats.py -d 30 # 最近 30 天
python scripts/aggregate_trade_stats.py -a 2 # 指定账号
"""
import argparse
import sys
from pathlib import Path
proj = Path(__file__).resolve().parent.parent
if (proj / "backend").exists():
sys.path.insert(0, str(proj / "backend"))
sys.path.insert(0, str(proj))
def main():
parser = argparse.ArgumentParser(description="聚合交易统计到 trade_stats_* 表")
parser.add_argument("-a", "--account", type=int, default=None, help="账号 ID不传则用默认")
parser.add_argument("-d", "--days", type=int, default=7, help="聚合最近 N 天,默认 7")
args = parser.parse_args()
if args.days <= 0:
print("days 须 > 0")
sys.exit(1)
try:
from database.models import TradeStats
TradeStats.aggregate_recent_days(days=args.days, account_id=args.account)
print(f"已聚合最近 {args.days} 天统计 (account_id={args.account or 'default'})")
except Exception as e:
print(f"聚合失败: {e}")
sys.exit(1)
if __name__ == "__main__":
main()