猎户座量化交易同步集合竞价卖单交割指令API接口文档
文档概述
猎户座是基于利佛莫尔理论为基础的AI金融智能决策系统,能够快速帮助用户安全积累本金。本系统提供开放的量化交易接口,供授权用户进行自动化交易操作。
接口详情
同步集合竞价卖单交割指令 /api/executecallauctionselltrade
接口描述
专为quant量化终端设计的集合竞价自动化交割接口。当quant在集合竞价(9:25~9:30)以涨停价卖出某个股票后,调用此接口自动完成"卖出信号生成 → 卖单指令创建 → 盈亏交割结算"全流程。与普通卖单交割接口不同,此接口无需传入卖单ID,只需传入股票代码即可,完美适配quant终端无法获知系统内部订单ID的场景。
请求参数
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appid | String | 是 | 应用ID |
| appsecret | String | 是 | 应用密钥 |
| code | String | 是 | 股票代码,如 sh600000、sz000001、hk08341、usAAPL.OQ |
| realsellprice | Float | 是 | 真实卖出价格(iquant在集合竞价实际成交的价格) |
| quantity | Integer | 否 | 卖出数量,单位:股(不传则自动计算该标的全部持仓数量) |
业务逻辑
- 验证API访问权限,检查IP白名单、AppID和AppSecret,确保用户已开启实仓模式
- 根据股票代码(code)查找金融标的
- 确定卖出数量:如果入参未传quantity,则自动计算该标的的全部持仓数量
- 生成集合竞价卖出信号写入数据表(InflowState=5,标识"集合竞价自动化交易"类型)
- 生成卖出指令写入数据表(ResultColumnID=4待处理,GolongOrShortsale=2做空)
- 计算该标的总持仓数量,按以下场景智能结算:
- 🟢 清仓结算(卖出数量 = 总持仓数量):按买入时间顺序逐笔结算
- 卖出价 >= 买入价 → 标记为盈利
- 卖出价 < 买入价 → 标记为亏损
- 释放锁定资金到用户对应市场的资金账户
- 🟡 部分仓位结算(卖出数量 < 总持仓数量):自动匹配一笔买入数量与卖出数量相同的买单,进行整笔结算;若匹配不到,返回提示并附带当前所有持仓买单明细
- 🔴 卖出数量超过持仓:返回提示,拒绝执行结算
- 🟢 清仓结算(卖出数量 = 总持仓数量):按买入时间顺序逐笔结算
- 更新卖单状态为交易完结(ResultColumnID=1),追加"集合竞价自动交割完成"标记
- 更新卖出信号为已执行状态(DillStatus=-1)
- 检查该标的是否还有活跃买入订单,如无则:
- 将股票池该标的设为非持仓状态(Own=false)
- 继续启动买入动作,让资金快速投入到新的交易机会中
响应数据结构
{
"code": 1,
"message": "集合竞价卖出交割执行成功",
"data": {
"trade_executed": true,
"financial_object_id": 10211,
"code": "sh600000",
"financial_name": "浦发银行",
"sold_quantity": 1000,
"real_sell_price": 10.50,
"signal_id": 12345,
"sell_order_id": 67890
}
}请求示例
POST http://www.deephunt.com.cn/api/executecallauctionselltrade Content-Type: application/x-www-form-urlencoded appid=test_app_id&appsecret=test_app_secret&code=sh600000&realsellprice=10.50&quantity=1000
响应示例
{
"code": 1,
"message": "集合竞价卖出交割执行成功",
"data": {
"trade_executed": true,
"financial_object_id": 10211,
"code": "sh600000",
"financial_name": "浦发银行",
"sold_quantity": 1000,
"real_sell_price": 10.50,
"signal_id": 12345,
"sell_order_id": 67890
}
}常见问题FAQ
Q: 为什么有时候返回"未找到该股票代码对应的标的"? A: 可能原因:① 股票代码格式不正确(如大小写、市场前缀);② 该标的未在猎户座系统中创建;③ 标的所属用户与API用户不匹配。请检查股票代码格式,确保与系统中注册的代码一致。
Q: 这个接口和普通卖单交割接口(/api/executeuserselltrade)有什么区别? A: 普通接口需要传入卖单ID(id参数),适用于已知卖单ID的场景。本接口只需传入股票代码,系统内部自动完成信号生成、卖单创建、交割结算全流程,专为iquant终端设计——iquant在集合竞价卖出时只知道股票代码,不知道系统内部的订单ID。
Q: 如果不传quantity参数会怎样?传了quantity呢? A: ① 不传quantity(或传0/负值):系统自动计算该标的全部持仓数量作为卖出数量,按买入时间顺序逐笔灵活结算(最推荐使用,适用于清仓场景)。② 显式传入quantity且小于总持仓:走「部分仓位结算」,会自动匹配一笔买入数量与quantity相同的买单,进行整笔结算;匹配不到时返回提示和所有买单明细。
Q: 集合竞价卖出信号和普通卖出信号有什么区别? A: 集合竞价卖出信号的InflowState=5,专门标识为"集合竞价自动化交易"类型,区别于主力流出(0)、止损(3)、提前止盈(4)等信号类型,便于后续统计分析和策略优化。
Q: 卖单结算如何处理对应的买入订单? A: 分场景处理:① 清仓场景(卖出数量 = 总持仓)按买入时间顺序逐笔灵活结算;② 部分卖出场景(卖出数量 < 总持仓)匹配同数量买单整笔结算,保证每笔买单记录完整可追溯。
Q: 盈利和亏损状态是如何判定的? A: 当真实卖出价格 >= 买入价时为盈利状态(ResultColumnID=1),反之为亏损状态(ResultColumnID=2)。盈亏百分点 = (卖出价 - 买入价) / 买入价 × 100%。
Q: 卖出后资金如何处理? A: 卖出所得资金(扣除手续费后)会自动释放到用户对应市场的资金账户中:A股 → AStockAmount,港股 → HKStockAmount,美股 → USStockAmount。
Q: 卖单执行完成后为什么还会自动触发买入动作? A: 系统设计了连续交易机制,卖出后立即调用买入信号处理方法,让释放的资金快速投入到新的交易机会中,提升资金周转速度和交易效率。quant终端建议在卖出后延迟5秒再调用获取买入指令接口,以便系统有足够时间生成新的买入信号。
Q: 这个接口支持哪些市场的股票代码? A: 支持A股(sh/sz前缀)、港股(hk前缀)、美股(us前缀,如usAAPL.OQ),与猎户座系统支持的市场范围一致。
Q: 为什么部分卖出要「同数量买单整笔结算」? A: 每一笔买入订单在系统中都是一条完整独立的交易记录。部分卖出时,系统只对「买入数量刚好等于卖出数量」的那笔买单进行整笔结算,避免了从某笔买入订单中只结算一部分的情况,从而确保仓位数据计算的准确性。
Q: 返回提示 "集合竞价部分卖出需匹配同数量买单...当前所有买单:[订单xx:300股@xx.xx元], [订单yy:200股@yy.yy元]" 如何处理? A: 表示您传入的卖出数量与当前持仓中任何一笔买单的买入数量都不一致。您可以:① 直接不传 quantity,系统自动按清仓方式处理;② 修改 quantity 为现有买单中某笔的买入数量;③ 如需卖出多笔组合数量,可以分多次调用接口,每次对应一笔买单。
Q: 调用集合竞价接口时「传不传quantity」到底有什么不一样? A: 详细对照表:
对比项 不传 quantity(自动全卖,推荐) 传 quantity 且等于总持仓 传 quantity 且小于总持仓 场景归类 清仓结算(最稳定) 清仓结算 部分仓位结算 结算方式 按买入时间顺序,支持灵活拆分 同左 匹配同数量买单,整笔结算 适用情形 集合竞价清仓卖出(最常用) 指定数量但正好全卖 只想卖出部分仓位,且该数量恰好与单笔买单一致 匹配不到时处理 记录提醒但继续执行 同左 返回提示和所有买单明细
错误码说明
| 错误码 | 描述 |
|---|---|
| 1 | 成功 |
| -1 | 失败或错误 |
常见错误信息:
- "缺少必要的认证参数: appid 或 appsecret" - 未提供必需的身份验证参数
- "无效的AppID" - 提供的应用ID不存在
- "AppSecret验证失败" - 应用密钥错误
- "该账户未启用量化交易功能" - 账户未激活量化交易权限
- "IP地址不在白名单中" - 客户端IP不在允许的白名单中
- "缺少必要参数: code" - 未传入股票代码
- "缺少必要参数: realsellprice" - 未传入真实卖出价格
- "参数格式错误: realsellprice 必须为数字" - 卖出价格格式不正确
- "参数格式错误: quantity 必须为正整数" - 卖出数量格式不正确
- "未找到该股票代码对应的标的" - 股票代码在系统中不存在或不属于当前用户
- "获取用户配置失败" - 无法获取用户的量化交易配置
- "无法计算持仓数量,请确认该标的有持仓" - 该标的当前无持仓记录
- "创建卖出信号失败" - 数据库写入信号记录失败
- "创建卖出指令失败" - 数据库写入卖单记录失败
- "集合竞价部分卖出需匹配同数量买单:当前卖出X股,总持仓Y股。当前所有买单:[订单xx:XX股@xx.xx元], [订单yy:YY股@yy.yy元]。请调整卖出数量与某笔买单一致后再执行" - 部分卖出时,没有一笔买单的买入数量与卖出数量完全一致,请根据返回的买单明细调整卖出数量,或改为清仓方式卖出
- "集合竞价卖出数量(X股)大于总持仓(Y股),无法执行结算" - 卖出数量超过该标的的总持仓数量,请核实后重试
- "获取持仓数量失败,请稍后重试" - 计算总持仓时出现异常,请稍后重试
安全注意事项
- 请妥善保管您的AppID和AppSecret,不要泄露给他人
- 确保调用接口的IP地址在白名单中
- 请对敏感数据进行适当的加密传输
- 定期更换AppSecret以增强安全性
- 限制接口调用频率,避免被系统限制访问
- 集合竞价卖出接口仅在真实交易环境中使用,请勿在模拟环境中调用
技术支持
如在使用过程中遇到问题,请联系技术支持团队。
