Files
mexc-spot-dca-bot/README.md
Zichao Lin 1c3ca56823 feat(main): load trades form json, imporve LIMIT LIMIT_MAKER order handling
- Read trading instructions from JSON configuration file
- Support executing multiple trades by date (* means executing daily)
- Automatically fetch real-time price as the limit price when no price is provided
- For LIMIT, LIMIT_MAKER orders, support providing only quoteOrderQty to automatically calculate the quantity
2025-07-15 20:38:52 +08:00

4.6 KiB
Raw Blame History

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. 创建配置文件trading_config.json

  2. 运行程序:

    python main.py
    

配置文件

配置文件结构

配置文件采用 JSON 格式,命名为trading_config.json,基本结构如下:

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

配置字段详解

1. 交易列表 (trades)

  • 类型:数组
  • 描述:包含所有交易指令的列表
  • 每个交易指令是一个包含以下字段的对象:

2. 交易对 (symbol)

  • 类型:字符串
  • 必填:是
  • 示例:"BTCUSDT"
  • 描述:要交易的货币对,如 BTC/USDT

3. 订单类型 (order_type)

  • 类型:字符串
  • 必填:是
  • 可选值:
    • "LIMIT":限价单
    • "MARKET":市价单
    • "LIMIT_MAKER":限价做市单
    • "IMMEDIATE_OR_CANCEL":立即成交或取消
    • "FILL_OR_KILL":全部成交或取消

4. 交易方向 (side)

  • 类型:字符串
  • 必填:是
  • 可选值:
    • "BUY":买入
    • "SELL":卖出

5. 执行日期 (execute_dates)

  • 类型:数组
  • 必填:是
  • 特殊值:
    • "*":表示每天执行
  • 示例:
    • ["2023-01-01", "2023-01-15"]:仅在指定日期执行
    • ["*"]:每天执行
  • 格式YYYY-MM-DD

6. 订单参数 (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 文件