From 40a797e7edabc5792576f9c397c03d8fc1d903b4 Mon Sep 17 00:00:00 2001 From: Zichao Lin Date: Tue, 15 Jul 2025 21:21:49 +0800 Subject: [PATCH] feat(mapping): move mapping table to json --- README.md | 22 ++++++++++++++-------- main.py | 9 ++------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 7d4d98c..97b1036 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,9 @@ MEXC 交易机器人是一个自动化交易工具,用于在 MEXC 交易所执 ```json { + "symbol_mapping": { + "BTCUSDC": "BTCUSDT" + }, "trades": [ { "symbol": "BTCUSDT", @@ -48,20 +51,25 @@ MEXC 交易机器人是一个自动化交易工具,用于在 MEXC 交易所执 ### 配置字段详解 -#### 1. 交易列表 (`trades`) +#### 1. 证券代码映射 (`symbol_mapping`) + +- 类型:数组 +- 描述:API代码: CSV记录代码,如`"BTCUSDC": "BTCUSDT"`代表向API请求`BTCUSDC`,但CSV中记录证券代码`BTCUSDT` + +#### 2. 交易列表 (`trades`) - 类型:数组 - 描述:包含所有交易指令的列表 - 每个交易指令是一个包含以下字段的对象: -#### 2. 交易对 (`symbol`) +##### 1. 交易对 (`symbol`) - 类型:字符串 - 必填:是 - 示例:`"BTCUSDT"` - 描述:要交易的货币对,如 BTC/USDT -#### 3. 订单类型 (`order_type`) +##### 2. 订单类型 (`order_type`) - 类型:字符串 - 必填:是 @@ -72,7 +80,7 @@ MEXC 交易机器人是一个自动化交易工具,用于在 MEXC 交易所执 - `"IMMEDIATE_OR_CANCEL"`:立即成交或取消 - `"FILL_OR_KILL"`:全部成交或取消 -#### 4. 交易方向 (`side`) +##### 3. 交易方向 (`side`) - 类型:字符串 - 必填:是 @@ -80,7 +88,7 @@ MEXC 交易机器人是一个自动化交易工具,用于在 MEXC 交易所执 - `"BUY"`:买入 - `"SELL"`:卖出 -#### 5. 执行日期 (`execute_dates`) +##### 4. 执行日期 (`execute_dates`) - 类型:数组 - 必填:是 @@ -91,14 +99,12 @@ MEXC 交易机器人是一个自动化交易工具,用于在 MEXC 交易所执 - `["*"]`:每天执行 - 格式:YYYY-MM-DD -#### 6. 订单参数 (`params`) +##### 5. 订单参数 (`params`) - 类型:对象 - 必填:是 - 内容根据订单类型不同而变化: -##### 参数 - **必须包含 `quantity` 或 `quoteOrderQty` 之一** - `quantity`:交易数量(字符串格式的数字) diff --git a/main.py b/main.py index f47bec8..b285d19 100644 --- a/main.py +++ b/main.py @@ -110,12 +110,6 @@ class MexcSpotTrade: - _tool_record_transaction(): 记录交易到CSV """ - # 证券代码映射 (API代码: CSV记录代码) - SYMBOL_MAPPING = { - "BTCUSDC": "BTCUSDT", - # 可以在此添加更多映射 - } - # 订单类型与必需参数 ORDER_TYPE_REQUIREMENTS = { "LIMIT": [ @@ -134,6 +128,7 @@ class MexcSpotTrade: self.trader = mexc_spot_v3.mexc_trade() self.market = MexcSpotMarket() self.csv_file = "output/mexc_spot_trade.csv" + self.symbol_mapping = TradingConfig().config_data.get("symbol_mapping", {}) def _api_get_order(self, symbol: str, order_id: str) -> Optional[Dict[str, Any]]: """ @@ -163,7 +158,7 @@ class MexcSpotTrade: def _tool_map_symbol(self, symbol: str) -> str: """映射证券代码用于记录""" - return self.SYMBOL_MAPPING.get(symbol, symbol) + return self.symbol_mapping.get(symbol, symbol) def _tool_validate_order_params( self, order_type: str, params: Dict[str, Any]