本文汇总期魔方期货策略中所有报单与撤单的 API,包括 4 个快捷报单、自定义 send_order 和撤单接口。每个接口都附带调用示例和返回码说明。
快捷报单
buy_open(volume, symbol, price=None) — 开多仓
参数:
| 参数 | 参数名称 | 参数类型 | 是否必填 | 描述 |
|---|---|---|---|---|
| volume | 手数 | int | 是 | |
| symbol | 产品ID | str | 否 | 不填写时,自动选择当前任务运行加载的品种合约 |
| price | 报单价格 | float | 否 | 不填写时,自动根据方向选择涨跌停价(市价) |
返回:
| 参数 | 参数名称 | 参数类型 | 描述 |
|---|---|---|---|
| code | 报单成功状态 | int | 请求成功返回值为 0,请求失败返回值为非0 |
| data | 报单数据 | any | 请求成功返回的对象是字典,请求失败返回值为空值 |
| msg | 报单提示信息 | str | 请求成功返回值为 'ok',请求失败返回请求失败的原因 |
接口案例
def on_tick(context):
res = buy_open(1) # 开单 1 手多单
req_id = res["data"]["result"]["data"]["req_id"] # 通过这个方式可以拿到每次报单的唯一id
数据示例
# 以下是请求成功返回的结果。若请求失败:code 的值为非零 且 msg 会标记请求失败的原因)
{'code': 0, 'data': {...}, 'msg': 'ok'}
sell_open(volume, symbol, price=None) — 开空仓
参数和返回值与 buy_open 一致。
接口案例
def on_tick(context):
res = sell_open(1) # 开单 1 手空单
req_id = res["data"]["result"]["data"]["req_id"] # 通过这个方式可以拿到每次报单的唯一id
数据示例
# 以下是请求成功返回的结果。若请求失败:code 的值为非零 且 msg 会标记请求失败的原因)
{'code': 0, 'data': {...}, 'msg': 'ok'}
buy_close(volume, symbol, price=None) — 平空仓
结束一个空头仓位,默认采用市价单发送,如果存在今昨仓的持仓,平仓时会先平今,会返回该订单唯一值。参数和返回值与 buy_open 一致。
接口案例
def on_tick(context):
res = buy_close(1) # 平仓 1 手空单
req_id = res["data"]["result"]["data"]["req_id"] # 通过这个方式可以拿到每次报单的唯一id
数据示例
# 以下是请求成功返回的结果。若请求失败:code 的值为非零 且 msg 会标记请求失败的原因)
{'code': 0, 'data': {...}, 'msg': 'ok'}
sell_close(volume, symbol, price=None) — 平多仓
结束一个多头仓位,默认采用市价单发送,如果存在今昨仓的持仓,平仓时会先平今,会返回该订单唯一值。参数和返回值与 buy_open 一致。
接口案例
def on_tick(context):
res = sell_close(1) # 平仓 1 手多单
req_id = res["data"]["result"]["data"]["req_id"] # 通过这个方式可以拿到每次报单的唯一id
数据示例
# 以下是请求成功返回的结果。若请求失败:code 的值为非零且 msg 会标记请求失败的原因)
{'code': 0, 'data': {...}, 'msg': 'ok'}
自定义报单 send_order
做多、做空、平仓等动作都可以通过该方法函数进行报单,用户自己封装订单,会返回该订单唯一值
,使用 send_order:
输入参数
| 参数 | 参数名称 | 参数类型 | 是否必填 | 描述 |
|---|---|---|---|---|
| order_info | 字典对象,如方向、价格等 | dict | 是 | 包含字段详见如下对象ORDER_INFO_DATA |
| draw_signal | 任务运行时是否同步画信号到图表 | bool | 否 | 默认 True |
注意:
需要使用 send_order 跨产品且未为该产品进行有效订阅操作然后去报单时,需要填写 draw_signal 值为 False,否则会因为该产品在策略中获取不到价格而导致无法报单。
返回值
| 参数 | 参数名称 | 参数类型 | 描述 |
|---|---|---|---|
| code | 报单成功状态 | int | 请求成功返回值为 0,请求失败返回值为非0 |
| data | 报单数据 | any | 请求成功返回的对象是字典,请求失败返回值为空值 |
| msg | 报单提示信息 | str | 请求成功返回值为 'ok',请求失败返回请求失败的原因 |
ORDER_INFO_DATA 报单对象明细字段信息
| 参数 | 参数名称 | 参数类型 | 是否必填 | 描述 |
|---|---|---|---|---|
| ExchangeID | 交易所ID | str | 是 | |
| Symbol | 产品ID | str | 是 | |
| Direction | 方向 | str | 是 | 多:0,空:1 |
| OrderPriceType | 报单价格类型 | str | 是 | '2' 限价单 指定明确价格成交(必须达到或优于该价格)'1' 市价单 以当时市场最优价成交)'3' FAK 立即按对手价成交,未成交部分自动撤单 '4' FOK 必须立即全部成交,否则整个订单自动撤单'G' 最新价 以最新价报单(部分系统支持)'H' 对手价 以对手方最优价报单(买用卖一价,卖用买一价)'J' 排队价 以己方最优价报单(买用买一价,卖用卖一价)'K' 超价 突破对手价报单(买:对手价+N跳;卖:对手价-N跳)'T' 止损价 触发止损条件后转为限价单 'P' 止盈价 触发止盈条件后转为限价单默认‘2’,即限价单报单 |
| LimitPrice | 报单价格 | float | 是 | |
| CombOffsetFlag | 开平标志 | str | 是 | 0: 开仓 1: 平仓/平昨3: 平今 |
| Volume | 手数 | int | 是 |
接口案例
def on_tick(context):
# 假设这是一个单子完整的信息
dict_data = {
"Direction":"0",
"OrderPriceType":"2",
"Comboffsetflag":"0",
"Volume":"1",
"Symbol":"ag2412",
"ExchangeID":"SHFE",
"LimitPrice":66666,
}
# 执行报单
res = send_order(dict_data)
req_id = res["data"]["req_id"] # 通过这个方式可以拿到每次报单的唯一id
# 输出报单请求类型
print(res)
数据示例
# 以下是请求成功返回的结果。若请求失败:code 的值为非零 且 msg 会标记请求失败的原因)
{'code': 0, 'data': {...}, 'msg': '请求成功'}
撤单 action_order
输入参数
| 参数 | 参数名称 | 参数类型 | 是否必填 | 描述 |
|---|---|---|---|---|
| dict | 字典对象 | dict | 是 | 包含字段详见如下对象ACTION_ORDER_INFO |
返回值
| 参数 | 参数名称 | 参数类型 | 描述 |
|---|---|---|---|
| code | 报单成功状态 | int | 请求成功返回值为 0,请求失败返回值为非0 |
| data | 报单数据 | any | 请求成功返回值为空值,请求失败返回的对象是字典 |
| msg | 报单提示信息 | str | 请求成功返回值为 'ok',请求失败返回请求失败的原因 |
ACTION_ORDER_INFO 撤单对象明细字段信息
| 参数 | 参数名称 | 参数类型 | 是否必填 | 描述 |
|---|---|---|---|---|
| ExchangeID | 交易所ID | str | 否 | 可以为空 |
| instrumentid | 品种合约代码 | str | 是 | 完整合约代码,例如rb2501 |
| OrderSysID | 订单号 | str | 是 | 为共12位右置的字符串 |
接口案例
def on_tick(context):
# 单子具体信息
dict_data = {
# 单子中 key 应包含 instrumentid 、ExchangeID 、OrderSysID ,否则会存在撤单失败的情况,同 send_order 方法函数的用法举例,订单号 OrderSysID 为共12位右置的字符串,该字符串存在于 on_order 接口返回的订单信息
"OrderSysID": " 1863",
"ExchangeID": "SHFE",
"instrumentid": "rb2501",
}
# 执行撤单
res = action_order(dict_data)
print(res)
数据示例
# 以下是请求成功返回的结果。若请求失败:code 的值为非零 且 msg 会标记请求失败的原因)
{'code': 0, 'data': {...}, 'msg': 'ok'}
相关阅读
- [核心API 账户持仓查询]
- [核心API 合约信息查询]
- [策略案例:网格策略]

评论
登录后参与讨论,与站内账号体系共用。