Appearance
交易函数
ℹ️ 当前支持不同频率撮合模式,使用下单相关函数前,需要确保已下载对应频率数据。
按数量买卖标的
函数名称:order
说明:按数量买卖标的。支持股票、期货、场内基金、可转债。
函数原型
python
order(security, amount, style=None, side='long', close_today=False)入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| security | str | 是 | 标的代码,支持股票、期货、场内基金、可转债 |
| amount | int | 是 | 交易数量。正数表示买入,负数表示卖出 |
| style | OrderStyle | 否 | 下单方式。支持 MarketOrderStyle(limit_price) 或 LimitOrderStyle(limit_price)。默认是 MarketOrderStyle(0) |
| side | str | 否 | 操作方向。可选值为 long、short。默认是 long。股票、ETF 暂不支持开空单 |
| close_today | bool | 否 | 期货专用。用于区分平今和平昨手续费计算 |
出参
| 出参名称 | 类型 | 说明 |
|---|---|---|
| order_id | str | 下单成功时返回订单编号 |
| 返回值 | None | 下单失败时返回 None |
补充说明
⚠️ close_today 为期货专用字段。不管 close_today 是 True 还是 False,此函数只会产生一个订单,区别在于平仓时的手续费计算:
- close_today=True:只平今仓。今仓不足时,订单会被废单
- close_today=False:优先平昨仓,昨仓不足部分平今仓
举例
python
oid = order('sh600000', 100)
log.info(oid)
# ZLT-0000000-sh600000
oid = order('IF2406', -2, side='short', close_today=True)
log.info(oid)
# ZLT-0000001-IF2406科创板保护限价示例
科创板(sh688xxx、sh689xxx)使用市价单时,交易所要求设置保护限价。MarketOrderStyle(limit_price) 中的 limit_price 即为保护限价。
python
# 获取科创板标的的涨停价,以涨停价作为保护限价买入(确保不高于此价格成交)
limit_data = get_price_limit('sh688001', count=1)
high_limit_price = limit_data.iloc[0]['high_limit']
oid = order('sh688001', 200, style=MarketOrderStyle(high_limit_price))
log.info(oid)
# ZLT-0000002-sh688001
# 获取科创板标的的跌停价,以跌停价作为保护限价卖出(确保不低于此价格成交)
limit_data = get_price_limit('sh688001', count=1)
low_limit_price = limit_data.iloc[0]['low_limit']
oid = order('sh688001', -200, style=MarketOrderStyle(low_limit_price))
log.info(oid)
# ZLT-0000003-sh688001⚠️ 科创板市价单必须设置保护限价,否则会被交易所拒绝。
💡 保护限价含义:买入时保护限价是最高成交价格限制,卖出时保护限价是最低成交价格限制。
按目标数量买卖标的
函数名称:order_target
说明:买卖标的,使最终持仓数量达到指定数量。
函数原型
python
order_target(security, amount, style=None, side='long', close_today=False)入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| security | str | 是 | 标的代码,支持股票、期货、场内基金、可转债 |
| amount | int | 是 | 期望的最终持仓数量 |
| style | OrderStyle | 否 | 下单方式。支持 MarketOrderStyle(limit_price) 或 LimitOrderStyle(limit_price)。默认是 MarketOrderStyle(0) |
| side | str | 否 | 操作方向。可选值为 long、short。默认是 long。股票、ETF 暂不支持开空单 |
| close_today | bool | 否 | 期货专用。用于区分平今和平昨手续费计算 |
出参
| 出参名称 | 类型 | 说明 |
|---|---|---|
| order_id | str | 下单成功时返回订单编号 |
| 返回值 | None | 下单失败时返回 None |
⚠️ 使用此接口下单时,若指定标的存在未完成订单,则先前未完成的订单会先被取消。
⚠️ close_today 为期货专用字段:
- close_today=True:只平今仓。今仓不足时,订单会被废单
- close_today=False:优先平昨仓,昨仓不足部分平今仓
举例
python
oid = order_target('sz000001', 2000)
log.info(oid)
# ZLT-0000002-sz000001
oid = order_target('IF2406', 3, side='long')
log.info(oid)
# ZLT-0000003-IF2406按目标价值调整仓位
函数名称:order_target_value
说明:调整标的仓位到指定价值。
函数原型
python
order_target_value(security, value, style=None, side='long', close_today=False)入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| security | str | 是 | 标的代码,支持股票、期货、场内基金、可转债 |
| value | float | 是 | 期望的标的最终价值。value = 最新价 × 手数 × 保证金率(股票为 1)× 乘数(股票为 100) |
| style | OrderStyle | 否 | 下单方式。支持 MarketOrderStyle(limit_price) 或 LimitOrderStyle(limit_price)。默认是 MarketOrderStyle(0) |
| side | str | 否 | 操作方向。可选值为 long、short。默认是 long。股票、ETF 暂不支持开空单 |
| close_today | bool | 否 | 期货专用。用于区分平今和平昨手续费计算 |
出参
| 出参名称 | 类型 | 说明 |
|---|---|---|
| order_id | str | 下单成功时返回订单编号 |
| 返回值 | None | 下单失败时返回 None |
⚠️ 使用此接口下单时,若指定标的存在未完成订单,则先前未完成的订单会先被取消。
⚠️ close_today 为期货专用字段:
- close_today=True:只平今仓。今仓不足时,订单会被废单
- close_today=False:优先平昨仓,昨仓不足部分平今仓
举例
python
a = order_target_value(stock, cash)
log.info(a)
# ZLT-0000004-sz300418
log.info(get_orders()[a])
# UserOrder({'order_id': ZLT-0000000--sz300418,'status': filled,'add_time': 2023-02-20 09:30:00,'security': sz300418,'amount': 36200,'filled': 36200,'side': long,'action': open,'price': 23.2200,'commission': 252.1691,'style': MarketOrderStyle: _limit_price=0.0})按指定价值买卖标的
函数名称:order_value
说明:买卖价值为指定数值的标的。
函数原型
python
order_value(security, value, style=None, side='long', close_today=False)入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| security | str | 是 | 标的代码,支持股票、期货、场内基金、可转债 |
| value | float | 是 | 标的价值。value = 最新价 × 手数 × 保证金率(股票为 1)× 乘数(股票为 100) |
| style | OrderStyle | 否 | 下单方式。支持 MarketOrderStyle(limit_price) 或 LimitOrderStyle(limit_price)。默认是 MarketOrderStyle(0) |
| side | str | 否 | 操作方向。可选值为 long、short。默认是 long。股票、ETF 暂不支持开空单 |
| close_today | bool | 否 | 期货专用。用于区分平今和平昨手续费计算 |
出参
| 出参名称 | 类型 | 说明 |
|---|---|---|
| order_id | str | 下单成功时返回订单编号 |
| 返回值 | None | 下单失败时返回 None |
⚠️ close_today 为期货专用字段:
- close_today=True:只平今仓。今仓不足时,订单会被废单
- close_today=False:优先平昨仓,昨仓不足部分平今仓
举例
python
oid = order_value('sh510300', 50000)
log.info(oid)
# ZLT-0000005-sh510300
oid = order_value('IF2406', 120000, side='long')
log.info(oid)
# ZLT-0000006-IF2406获取当日未完成委托
函数名称:get_open_orders
说明:获取当天所有未完成的委托详情。
函数原型
python
get_open_orders()入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| 无 | 无 | 否 | 无入参 |
出参
| 出参名称 | 类型 | 说明 |
|---|---|---|
| 返回值 | dict | 返回当天所有未完成委托详情,key 为 order_id,value 为 Order 对象 |
举例
python
orders = get_open_orders()
log.info(orders)
# {'ZLT-0000007-sh600000': UserOrder({...}), 'ZLT-0000008-sz000001': UserOrder({...})}获取委托详情
函数名称:get_orders
说明:获取指定订单对象,或当天的所有订单委托详情。
函数原型
python
get_orders(order_id=None)入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| order_id | str | 否 | 订单编号,由下单函数返回。不传时返回当天所有委托订单 |
出参
| 出参名称 | 类型 | 说明 |
|---|---|---|
| 返回值 | Order | 传入 order_id 时,返回对应的 Order 对象 |
| 返回值 | dict | 不传 order_id 时,返回当天所有委托订单。key 为 order_id,value 为 Order 对象 |
举例
python
info = get_orders('ZLT-0000000-sz300418')
log.info(info)
# UserOrder({'order_id': ZLT-0000000-sz300418,'status': filled,'add_time': 2023-02-20 09:30:00,'security': sz300418,'amount': 36200,'filled': 36200,'side': long,'action': open,'price': 23.2200,'commission': 252.1691,'style': MarketOrderStyle: _limit_price=0.0})
all_orders = get_orders()
log.info(all_orders)
# {'ZLT-0000000-sz300418': UserOrder({...}), 'ZLT-0000001-sh600000': UserOrder({...})}获取当日成交详情
函数名称:get_trades
说明:获取当天成交详情。
函数原型
python
get_trades()入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| 无 | 无 | 否 | 无入参 |
出参
| 出参名称 | 类型 | 说明 |
|---|---|---|
| 返回值 | dict | 返回一个字典,key 为 trade_id,value 为 Trade 对象 |
举例
python
trades = get_trades()
log.info(trades)撤销订单
函数名称:cancel_order
说明:撤销指定订单。
函数原型
python
cancel_order(order)入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| order | Order 或 str | 是 | Order 对象或者 order_id |
账号出入金
函数名称:inout_cash
说明:账号转入或转出资金。当日的出入金从当日开始记入成本,用于计算收益。当日结束计算收益时的本金包含当日出入金金额。当前暂不支持。
函数原型
python
inout_cash(cash)入参
| 入参名称 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| cash | float | 是 | 可正可负。正数表示入金,负数表示出金 |