跳到主要内容

DSL 策略下单

DSL (Domain Specific Language) 条件单是 Deepcoin 提供的一种高级交易功能,允许用户通过 JSON 定义复杂的行情触发逻辑,并由系统自动执行。


1. 接口信息

  • 接口名称: DSL 策略下单 (DSL Trigger Order)
  • 请求方式: POST
  • 请求 URL: /deepcoin/trade/dsl-trigger-order
  • 内容类型: application/json

2. 整体请求架构

请求体由**账户交易配置 (trade_info)策略逻辑定义 (dsl_json)**两个核心对象组成:

{
"trade_info": { ... }, // 定义:去哪下单?用多少倍杠杆?什么保证金模式?
"dsl_json": { ... } // 定义:什么时候下单?买多少?如何止盈止损?
}

3. 详细参数定义

3.1 账户交易层 (trade_info)

参数名必填类型描述
symbolString交易对标识符 (如 BTC-USDT-SWAP)
tradeModeString保证金模式: isolated(逐仓), cross(全仓)
mrgPositionString持仓模式: merge(合仓), split(分仓);默认 merge

3.2 策略逻辑层 (dsl_json)

参数名必填类型描述
versionStringDSL版本,例如 "1.0"
indicatorsArray技术指标及其触发条件数组 (详见 3.2.1)
thenObject条件满足后的执行动作:开仓/平仓 (详见 3.2.2)
riskObject订单自带的止盈止损保护:stop_loss(止损)、take_profit(止盈) (详见 3.2.3)

3.2.1 技术指标 (indicators)

系统会根据 indicators 中定义的条件进行逻辑评估(多个指标默认为 AND 逻辑)。

参数名必填类型描述
nameString指标唯一标识名 (如:ma5, boll)
typeString指标类型: BOLL, MA, EMA, KDJ, RSI, WR
paramsObject指标计算参数 (详见 3.2.1.1)
conditionObject触发阈值 (详见 3.2.1.2)
scopeString作用范围: entry(入场/开仓判断), exit(出场/平仓判断)
3.2.1.1 指标计算参数 (params)
指标类型params 包含的参数备注
通用interval必填。K线周期:1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w
BOLLperiod, std ,intervalstd 为布林带标准差倍数
MA / EMAperiod,interval-
KDJn, k_smoothing, d_smoothing,intervalnKDJ参数, k_smoothingK平滑, d_smoothingd平滑
RSI / WRperiod,interval-
3.2.1.2 触发条件字段&示例 (condition)

condition 对象通过组合不同字段来定义精确的触发逻辑。

参数名必填类型描述
refString指标引用字段(例如:boll.lower
opString比较运算符(<,>
rightNumber比较值(当指标类型为KDJ、RSI、WR时必填)
diff_priceNumber当前价格与指标值的价差
场景condition 示例业务含义
指标与价格比较
(boll省略 right仅支持市价比较)
{"ref": "boll.lower", "op": "<"}当前市价高于布林带下轨。
指标与固定值比较
(使用 right)
{"ref": "kdj.k", "op": ">", "right": 80}KDJ 指标的 K 值大于 80。
指标与价差比较
(使用 diff_price)
{"ref": "ma", "op": ">", "diff_price": 100}MA 均线值高于当前价格 100 点。

3.2.2 执行动作 (then)

包含 entry (入场) 或 exit (出场) 逻辑块。

动作分支 (on_true):

参数名必填类型描述
actionString动作: open(开仓), close(平仓)
sideString方向: long(多头), short(空头)
volumeNumber下单张数

3.2.3 风险控制 (risk)

参数名必填类型描述
stop_lossObject止损配置。{"value": 0.1} 表示 10%
take_profitObject止盈配置。{"value": 0.2} 表示 20%

4. 响应参数

字段类型描述
sCodeInteger业务状态码。0: 成功;其他: 失败
sMsgString错误或提示信息

5. 典型应用示例

5.1 组合指标 (BOLL + KDJ) 入场

当价格跌破布林下轨 KDJ 的 K 值低于 30 时,开多 100 张。

{
"trade_info": {"symbol": "BTC-USDT-SWAP","tradeMode": "cross","mrgPosition": "merge"}, // 全仓合仓模式
"dsl_json": {
"indicators": [
{
"name": "boll",
"type": "BOLL",
"params": { "period": 20, "std": 2, "interval": "1m" }, // 20周期布林带,2倍标准差,1分钟K线
"condition": { "ref": "boll.lower", "op": ">" }, // 当前价格跌破布林带下轨
"scope": "entry"
},
{
"name": "kdj",
"type": "KDJ",
"params": { "n": 9, "k_smoothing": 3, "d_smoothing": 3, "interval": "1m" }, // 9周期KDJ,3平滑K,3平滑D,1分钟K线
"condition": { "ref": "kdj.k", "op": "<", "right": 30 }, // KDJ K值低于30
"scope": "entry"
}
],
"then": {
"entry": {
"on_true": { "action": "open", "side": "long", "volume": 100 } // 开多100张
}
}
}
}

5.2 入场 + 出场 + 全方位风控

当前价格高于 MA5 时,开多 50 张。 当前价格低于 MA20 时,平多 50 张。

{
"trade_info": { "symbol": "ETH-USDT-SWAP", "tradeMode":"isolated" }, // 逐仓模式
"dsl_json": {
"indicators": [
{ "name": "ma5",
"type": "MA",
"params": { "period": 5, "interval": "1h" }, // 5周期MA,1小时K线
"condition": { "ref": "ma", "op": "<" }, // 当前价格高于MA5
"scope": "entry" },
{ "name": "ma20",
"type": "MA",
"params": { "period": 20, "interval": "1h" }, // 20周期MA,1小时K线
"condition": { "ref": "ma", "op": ">" }, // 当前价格低于MA20
"scope": "exit" }
],
"then": {
"entry": { "on_true": { "action": "open", "side": "long", "volume": 50 } }, // 开多50张
"exit": { "on_true": { "action": "close", "side": "long", "volume": 50 } } // 平多50张
},
"risk": {
"stop_loss": { "value": 0.05 }, // 止损5%
"take_profit": { "value": 0.15 } // 止盈15%
}
}
}

6. 使用注意事项

  1. 指标逻辑: 所有的 entry 范围指标必须同时满足(AND)才会触发 then.entry 动作。
  2. 出场逻辑: 同理,所有 exit 范围指标同时满足时触发 then.exit 动作。
  3. 回测支持: API 实时下单时目前仅支持 on_true