# MEXC 定投交易机器人 ## 项目简介 MEXC 定投交易机器人是一个自动化交易工具,用于在 MEXC 交易所执行现货定投交易。它通过 JSON 配置文件管理交易指令,支持多种订单类型,并自动记录交易日志。 ## 主要功能 1. **配置文件管理**:从 JSON 文件读取交易指令 2. **灵活调度**:支持按日期执行交易(`*`表示每天执行) 3. **多种订单类型**:支持 LIMIT、MARKET、LIMIT_MAKER、IMMEDIATE_OR_CANCEL、FILL_OR_KILL 等订单类型 4. **智能价格获取**:当无 price 参数时自动获取实时价格作为限价 5. **自动计算数量**:LIMIT 订单支持只提供 quoteOrderQty 自动计算 quantity 6. **证券代码映射**:支持不同代码格式间的转换 7. **完整交易记录**:记录交易到 CSV 文件和日志 ## 安装与使用 1. 创建配置文件`config/trading_config.json`(可有多个不同名字的`.json`文件,程序会自动遍历所有) 2. 运行程序: ```bash python main.py ``` ## 配置文件 ### 配置文件结构 配置文件采用 JSON 格式,命名为`trading_config.json`,基本结构如下: ```json { "api": { "mexc_host": "https://api.mexc.com", "api_key": "mxxxxxxxxxx", "secret_key": "xxxxxxxxxxxxxxxxx" }, "symbol_mapping": { "BTCUSDC": "BTCUSDT" }, "trades": [ { "symbol": "BTCUSDT", "order_type": "LIMIT", "side": "BUY", "execute_dates": ["*"], "params": { "quoteOrderQty": "100", "price": "50000" } } ] } ``` ### 配置字段详解 #### 1. API 配置 (`api`) #### 2. 证券代码映射 (`symbol_mapping`) - 类型:数组 - 描述:API 代码: CSV 记录代码,如`"BTCUSDC": "BTCUSDT"`代表向 API 请求`BTCUSDC`,但 CSV 中记录证券代码`BTCUSDT` #### 3. 交易列表 (`trades`) - 类型:数组 - 描述:包含所有交易指令的列表 - 每个交易指令是一个包含以下字段的对象: ##### 1. 交易对 (`symbol`) - 类型:字符串 - 必填:是 - 示例:`"BTCUSDT"` - 描述:要交易的货币对,如 BTC/USDT ##### 2. 订单类型 (`order_type`) - 类型:字符串 - 必填:是 - 可选值: - `"LIMIT"`:限价单 - `"MARKET"`:市价单 - `"LIMIT_MAKER"`:限价做市单 - `"IMMEDIATE_OR_CANCEL"`:立即成交或取消 - `"FILL_OR_KILL"`:全部成交或取消 ##### 3. 交易方向 (`side`) - 类型:字符串 - 必填:是 - 可选值: - `"BUY"`:买入 - `"SELL"`:卖出 ##### 4. 执行日期 (`execute_dates`) - 类型:数组 - 必填:是 - 特殊值: - `"*"`:表示每天执行 - 示例: - `["2023-01-01", "2023-01-15"]`:仅在指定日期执行 - `["*"]`:每天执行 - 格式:YYYY-MM-DD ##### 5. 订单参数 (`params`) - 类型:对象 - 必填:是 - 内容根据订单类型不同而变化: **必须包含 `quantity` 或 `quoteOrderQty` 之一** - `quantity`:交易数量(字符串格式的数字) - `quoteOrderQty`:交易金额(字符串格式的数字) - `price`:限价价格(字符串格式的数字),如果为空则自动获取最新价 ### 配置示例 #### 示例 1:每日限价买入 ```json { "trades": [ { "symbol": "BTCUSDT", "order_type": "LIMIT", "side": "BUY", "execute_dates": ["*"], "params": { "quoteOrderQty": "100", "price": "50000" } } ] } ``` #### 示例 2:特定日期市价卖出 ```json { "trades": [ { "symbol": "ETHUSDT", "order_type": "MARKET", "side": "SELL", "execute_dates": ["2023-12-25", "2023-12-31"], "params": { "quantity": "1.5" } } ] } ``` #### 示例 3:多种订单组合 ```json { "trades": [ { "symbol": "BTCUSDT", "order_type": "LIMIT", "side": "BUY", "execute_dates": ["2023-12-01"], "params": { "quantity": "0.01", "price": "42000" } }, { "symbol": "ETHUSDT", "order_type": "MARKET", "side": "SELL", "execute_dates": ["*"], "params": { "quoteOrderQty": "200" } } ] } ``` ### 注意事项 1. 价格和数量都使用字符串格式而非数字,以避免浮点数精度问题 2. 对于 LIMIT 订单,可以只提供`quoteOrderQty`,系统会自动计算`quantity` 3. 当`execute_dates`包含`"*"`时,会忽略其他日期设置 4. 系统会自动创建`output`目录存放日志和交易记录 5. 所有时间均以系统时区为准 ### 错误处理 如果配置文件格式错误,程序会记录错误并退出。常见错误包括: - JSON 格式错误 - 缺少必填字段 - 日期格式不正确 - 订单参数不符合订单类型要求 ## 输出文件 - `output/mexc_trading_bot.log`: 交易日志 - `output/mexc_spot_trade.csv`: 交易记录 CSV 文件 ---