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. 运行程序:

    python main.py
    

配置文件

配置文件结构

配置文件采用 JSON 格式,命名为trading_config.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)
  • 类型:对象
  • 必填:是
  • 内容根据订单类型不同而变化:

必须包含 quantityquoteOrderQty 之一

  • quantity:交易数量(字符串格式的数字)
  • quoteOrderQty:交易金额(字符串格式的数字)
  • price:限价价格(字符串格式的数字),如果为空则自动获取最新价

配置示例

示例 1每日限价买入

{
    "trades": [
        {
            "symbol": "BTCUSDT",
            "order_type": "LIMIT",
            "side": "BUY",
            "execute_dates": ["*"],
            "params": {
                "quoteOrderQty": "100",
                "price": "50000"
            }
        }
    ]
}

示例 2特定日期市价卖出

{
    "trades": [
        {
            "symbol": "ETHUSDT",
            "order_type": "MARKET",
            "side": "SELL",
            "execute_dates": ["2023-12-25", "2023-12-31"],
            "params": {
                "quantity": "1.5"
            }
        }
    ]
}

示例 3多种订单组合

{
    "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 文件

Description
MEXC exchange spot DCA bot
https://www.mexc.com
Readme 94 KiB
Languages
Python 100%