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
This commit is contained in:
197
README.md
Normal file
197
README.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# 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. 运行程序:
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
## 配置文件
|
||||
|
||||
### 配置文件结构
|
||||
|
||||
配置文件采用 JSON 格式,命名为`trading_config.json`,基本结构如下:
|
||||
|
||||
```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`)
|
||||
|
||||
- 类型:对象
|
||||
- 必填:是
|
||||
- 内容根据订单类型不同而变化:
|
||||
|
||||
##### 参数
|
||||
|
||||
**必须包含 `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 文件
|
||||
|
||||
---
|
Reference in New Issue
Block a user