运行回测
DSL(领域特定语言)回测是 Deepcoin 提供的高级交易功能,允许用户通过 JSON 定义复杂的市场触发策略,并针对历史数据进行回测。
1. API 信息
- 接口名称: DSL 回测运行(Backtest Run)
- 请求方法:
POST - 请求 URL:
/deepcoin/v2/trade/backtest-run - Content-Type:
application/json
2. 整体请求架构
请求体由两个核心对象组成:策略逻辑定义(dsl)和历史数据配置(data_source):
{
"dsl": {...},// 定义:策略逻辑、指标、执行动作、风险控制
"data_source": {...}// 定义:哪个交易对?什么时间段进行回测?
}
3. 详细参数定义
3.1 策略逻辑层(dsl)
| 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|
version | 否 | String | DSL 版本,例如 "1.0" |
indicators | 是 | Array | 技术指标及其触发条件数组(详见 3.1.1) |
then | 是 | Object | 条件满足后的执行动作:开仓/平仓(详见 3.1.2) |
risk | 否 | Object | 订单自带的止盈止损保护:stop_loss(止损)、take_profit(止盈)(详见 3.1.3) |
execution | 否 | Object | 执行配置(可选,见 3.1.4) |
3.1.1 技术指标(indicators)
系统会根据 indicators 中定义的条件进行逻辑评估(多个指标默认为 AND 逻辑)。
| 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|
name | 是 | String | 指标唯一标识名 (如:ma5, boll) |
type | 是 | String | 指标类型:BOLL, MA, EMA, KDJ, RSI, WR |
params | 是 | Object | 指标计算参数(详见 3.1.1.1) |
condition | 是 | Object | 触发阈值(详见 3.1.1.2) |
scope | 是 | String | 作用范围:entry(入场/开仓判断), exit(出场/平仓判断) |
3.1.1.1 指标计算参数(params)
| 指标类型 | params 包含的参数 | 备注 |
|---|---|---|
| 通用 | interval | 必填。K 线周期:1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w |
| BOLL | period, std ,interval | std 为布林带标准差倍数 |
| MA / EMA | period,interval | - |
| KDJ | n, k_smoothing, d_smoothing,interval | nKDJ 参数,k_smoothingK 平滑,d_smoothingd 平滑 |
| RSI / WR | period,interval | - |
3.1.1.2 触发条件字段&示例(condition)
condition 对象通过组合不同字段来定义精确的触发逻辑。
| 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|
ref | 是 | String | 指标引用字段(例如:boll.lower) |
op | 是 | String | 比较运算符(<,>) |
right | 否 | Number | 比较值(当指标类型为 KDJ、RSI、WR 时必填) |
diff_price | 否 | Number | 当前价格与指标值的价差 |
| 场景 | condition 示例 | 业务含义 |
|---|---|---|
| 指标与价格比较 ( boll省略 right仅支持市价比较) | {"ref": "boll.lower", "op": "<"} | 当前市价高于布林带下轨。 |
| 指标与固定值比较 (使用 right) | {"ref": "kdj.k", "op": ">", "right": 80} | KDJ 指标的 K 值大于 80。 |
| 指标与价差比较 (使用 diff_price) | {"ref": "ma5.value", "op": ">", "diff_price": 100} | MA 均线值高于当前价格 100 点。 |
3.1.2 执行动作(then)
包含 entry (入场) 或 exit (出场) 逻辑块。
动作分支 (on_true):
| 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|
action | 否 | String | 动作:open(开仓), close(平仓) |
side |