MEXC 定投交易机器人
项目简介
MEXC 定投交易机器人是一个自动化交易工具,用于在 MEXC 交易所执行现货定投交易。它通过 JSON 配置文件管理交易指令,支持多种订单类型,并自动记录交易日志。
主要功能
- 配置文件管理:从 JSON 文件读取交易指令
- 灵活调度:支持按日期执行交易(
*
表示每天执行) - 多种订单类型:支持 LIMIT、MARKET、LIMIT_MAKER、IMMEDIATE_OR_CANCEL、FILL_OR_KILL 等订单类型
- 智能价格获取:当无 price 参数时自动获取实时价格作为限价
- 自动计算数量:LIMIT 订单支持只提供 quoteOrderQty 自动计算 quantity
- 证券代码映射:支持不同代码格式间的转换
- 完整交易记录:记录交易到 CSV 文件和日志
安装与使用
-
创建配置文件
config/trading_config.json
(可有多个不同名字的.json
文件,程序会自动遍历所有) -
运行程序:
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
)
- 类型:对象
- 必填:是
- 内容根据订单类型不同而变化:
必须包含 quantity
或 quoteOrderQty
之一
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"
}
}
]
}
注意事项
- 价格和数量都使用字符串格式而非数字,以避免浮点数精度问题
- 对于 LIMIT 订单,可以只提供
quoteOrderQty
,系统会自动计算quantity
- 当
execute_dates
包含"*"
时,会忽略其他日期设置 - 系统会自动创建
output
目录存放日志和交易记录 - 所有时间均以系统时区为准
错误处理
如果配置文件格式错误,程序会记录错误并退出。常见错误包括:
- JSON 格式错误
- 缺少必填字段
- 日期格式不正确
- 订单参数不符合订单类型要求
输出文件
output/mexc_trading_bot.log
: 交易日志output/mexc_spot_trade.csv
: 交易记录 CSV 文件
Description
Languages
Python
100%