From c80e01a8315e6443340c2ea3f440389f6ad0fc74 Mon Sep 17 00:00:00 2001 From: Zichao Lin Date: Mon, 21 Jul 2025 19:46:28 +0800 Subject: [PATCH] chore(calendar): enhance record format --- generate_calendar.py | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/generate_calendar.py b/generate_calendar.py index b7aa6af..3890a8b 100644 --- a/generate_calendar.py +++ b/generate_calendar.py @@ -37,12 +37,11 @@ def load_config(config_path="config/trading_config.json"): raise -def create_event(symbol, comment, date_obj, description): +def create_event(summary: str, date_obj, description): """创建单个日历事件。 Args: - symbol (str): 交易对符号 - comment (str): 交易备注 + summary (str): 事件标题 date_obj (date): 交易日期 description (str): 事件描述 @@ -50,10 +49,13 @@ def create_event(symbol, comment, date_obj, description): Event: 创建好的事件对象 """ event = Event() - event.add("uid", f"{symbol.lower()}-{date_obj.strftime('%Y%m%d')}@trade") + event.add( + "uid", + f"{summary.lower().replace('/', '-')}-{date_obj.strftime('%Y%m%d')}@trade", + ) event.add("dtstamp", datetime.now()) event.add("dtstart", date_obj) - event.add("summary", f"{symbol} 交易 ({comment})") + event.add("summary", summary) event.add("description", description) return event @@ -71,10 +73,8 @@ def generate_ics(config): cal.add("prodid", "-//Trading Calendar//EN") cal.add("version", "2.0") - symbol_mapping = config.get("symbol_mapping", {}) - for trade in config.get("trades", []): - symbol = symbol_mapping.get(trade["symbol"], trade["symbol"]) + symbol = trade["symbol"] order_type = trade["order_type"] side = trade["side"] comment = trade["comment"] @@ -82,27 +82,29 @@ def generate_ics(config): # 构建描述 amount = trade["params"].get("quoteOrderQty") quantity = trade["params"].get("quantity") - description = f"交易类型: {order_type}\n方向: {side}" - if quantity: - description = f"{description}\n数量: {quantity}" - if amount: - description = f"{description}\n金额: {amount}" - description = f"{description}\n备注: {comment}" if trade["execute_dates"] == ["*"]: - event = create_event(symbol, comment, datetime.now().date(), description) + summary = f"{symbol}/{order_type}/{side}" + if amount: + summary = f"{summary}/{amount}{symbol[-4:]}" + if quantity: + summary = f"{summary}/{quantity}{symbol[:-4]}" + event = create_event(summary, datetime.now().date(), comment) event.add("rrule", {"freq": "daily"}) cal.add_component(event) - logger.info("已创建项目:%s 交易 (%s) 每日", symbol, comment) + logger.info("已创建项目:每日 %s", summary) else: for date_str in trade["execute_dates"]: try: date_obj = datetime.strptime(date_str, "%Y-%m-%d").date() - event = create_event(symbol, comment, date_obj, description) + summary = f"{symbol}/{order_type}/{side}" + if amount: + summary = f"{summary}/{amount}{symbol[-4:]}" + if quantity: + summary = f"{summary}/{quantity}{symbol[:-4]}" + event = create_event(summary, date_obj, comment) cal.add_component(event) - logger.info( - "已创建项目:%s 交易 (%s) %s", symbol, comment, date_str - ) + logger.info("已创建项目:%s %s", date_str, summary) except ValueError as ex: logger.warning("跳过无效日期 %s: %s", date_str, ex)