Skip to content

交易函数

ℹ️ 当前支持不同频率撮合模式,使用下单相关函数前,需要确保已下载对应频率数据。

按数量买卖标的

函数名称:order

说明:按数量买卖标的。支持股票、期货、场内基金、可转债。

函数原型

python
order(security, amount, style=None, side='long', close_today=False)

入参

入参名称类型是否必填说明
securitystr标的代码,支持股票、期货、场内基金、可转债
amountint交易数量。正数表示买入,负数表示卖出
styleOrderStyle下单方式。支持 MarketOrderStyle(limit_price) 或 LimitOrderStyle(limit_price)。默认是 MarketOrderStyle(0)
sidestr操作方向。可选值为 long、short。默认是 long。股票、ETF 暂不支持开空单
close_todaybool期货专用。用于区分平今和平昨手续费计算

出参

出参名称类型说明
order_idstr下单成功时返回订单编号
返回值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)

入参

入参名称类型是否必填说明
securitystr标的代码,支持股票、期货、场内基金、可转债
amountint期望的最终持仓数量
styleOrderStyle下单方式。支持 MarketOrderStyle(limit_price) 或 LimitOrderStyle(limit_price)。默认是 MarketOrderStyle(0)
sidestr操作方向。可选值为 long、short。默认是 long。股票、ETF 暂不支持开空单
close_todaybool期货专用。用于区分平今和平昨手续费计算

出参

出参名称类型说明
order_idstr下单成功时返回订单编号
返回值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)

入参

入参名称类型是否必填说明
securitystr标的代码,支持股票、期货、场内基金、可转债
valuefloat期望的标的最终价值。value = 最新价 × 手数 × 保证金率(股票为 1)× 乘数(股票为 100)
styleOrderStyle下单方式。支持 MarketOrderStyle(limit_price) 或 LimitOrderStyle(limit_price)。默认是 MarketOrderStyle(0)
sidestr操作方向。可选值为 long、short。默认是 long。股票、ETF 暂不支持开空单
close_todaybool期货专用。用于区分平今和平昨手续费计算

出参

出参名称类型说明
order_idstr下单成功时返回订单编号
返回值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)

入参

入参名称类型是否必填说明
securitystr标的代码,支持股票、期货、场内基金、可转债
valuefloat标的价值。value = 最新价 × 手数 × 保证金率(股票为 1)× 乘数(股票为 100)
styleOrderStyle下单方式。支持 MarketOrderStyle(limit_price) 或 LimitOrderStyle(limit_price)。默认是 MarketOrderStyle(0)
sidestr操作方向。可选值为 long、short。默认是 long。股票、ETF 暂不支持开空单
close_todaybool期货专用。用于区分平今和平昨手续费计算

出参

出参名称类型说明
order_idstr下单成功时返回订单编号
返回值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_idstr订单编号,由下单函数返回。不传时返回当天所有委托订单

出参

出参名称类型说明
返回值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)

入参

入参名称类型是否必填说明
orderOrder 或 strOrder 对象或者 order_id

账号出入金

函数名称:inout_cash

说明:账号转入或转出资金。当日的出入金从当日开始记入成本,用于计算收益。当日结束计算收益时的本金包含当日出入金金额。当前暂不支持。

函数原型

python
inout_cash(cash)

入参

入参名称类型是否必填说明
cashfloat可正可负。正数表示入金,负数表示出金