按股数下单函数
语法:
order(security, amount, style=None, side='long', pindex=0)
各项参数的意义:
- security-标的代码
- amount-交易数量,正数表示买入,负数表示卖出
- style-下单类型,有两种
- 市价单 (MarketOrder)。市价单是指不论价格,接下单,直到交易全部完成。
- 限价单 (LimitOrder) 。限价单是指定一个价格,买入时不能高于它,卖出时不能低于它,如果不能满足,则等待满足后再交易。
- 默认情况下为市价单,即None表示MarketOrder
- side-用来指定开多单,还是空单。其中long表示开多单,short表示开空单。默认为 long,即开多单。需要注意的是,股票和基金暂不支持开空单
- pindex-在使用
set_subportfolios
创建了多个仓位时,指定subportfolio的序号,从0开始。默认为0
按股数下单函数,如果创建订单成功,则返回Order对象,失败则返回None
实例代码:
买入平定银行股票100股
order('000001.XSHG', 100)
下一个市价单
order('000001.XSHG', 100, MarketOrderStyle())
以10元价下一个限价单
order('00001.XSHG', 100, LimitOrderStyle(10.0))
目标股数下单函数
语法:
order_target(security, amount, style=None, side='long', pindex=0)
目标股数下单函数与按股数下单函数的参数几乎一样,只有第二个参数amount表示的意义不一样。这里amount指期望的最终数量
该函数如果创建订单成功,则返回Order对象,失败则返回None
实例代码:
卖出平安银行所有股票,即最终持有平安银行的股数为0
order_target('000001.XSGH', 0)
买入平安银行所有的股票到100股,即最终持有平安银行的股票数为100股
order_target('000001.XSHG', 100)
按价值下单函数
语法:
order_value(security, value, style=None, side='long', pindex=0)
按价值下单函数与按股数下单函数的参数几乎一样,只有第二个参数不一样,这里的value表示价值(也就是多少钱),即卖出多少钱的股票或买入多少钱的股票
该函数如果创建订单成功,则返回Order对象,失败则返回None
实例代码:
卖出价值为10000元的平安银行的股票
order_value('000001.XSHG', -10000)
买入价值为10000元的平安银行股票
order_value('000001.XSHG', 10000)
目标价值下单函数
语法:
order_target_value(security, value, style=None, side='long', pindex=0)
目标价值下单函数与按股数下单函数的参数几乎一样,只有第二个参数value的意义不一样,这里的value指表示期望的股票的最终价值,也就说将股票买入或卖出直到持有价值(钱)为某个数量为止
该函数如果创建订单成功,则返回Order对象,失败则返回None
实例代码:
卖出平安银行所有股票
order_target_value('000001.XSHG', 0)
调整平安银行股票仓位到10000元价值
order_target_value('000001.XSHG', 10000)
撤单函数
语法:
cancel_order(order)
参数order是指Order对象或者order_id。
撤单指取消委托,如果取消委托成功,则返回 Order 对象,如果委托不存在,则返回None
实例代码:
假设将撤单功能放在一个自定义的函数里
# 该函数在每个交易日结束时运行
# 即将当天盘中下单未成功的订单撤单
def after_trading_end(context):
# 获取当前未完成的订单
orders = get_open_orders()
# 通过循环,将所有未完成的订单撤单
for _order in orders.values():
cancel_order(_order)
获取未完成订单函数
语法:
get_open_orders()
该函数可获得当天所有未完成的订单。
实例代码:
# 该函数在每个交易日结束时运行
# 即将当天盘中下单未成功的订单撤单
def after_trading_end(context):
# 获取当前未完成的订单
orders = get_open_orders()
# 通过循环,将所有未完成的订单撤单
for _order in orders.values():
cancel_order(_order)
获取订单信息函数
语法:
get_orders(order_id=None, security=None, status=None)
该函数可以获取当天所有的订单(get_open_orders只能获取当天所有未完成的订单)】
参数意义:
- order_id - 订单 id
- security - 标的代码,可以用来查询指定标的的所有订单
- status - 表示订单状态,可以查询特定订单状态的所有订单
实例代码:
def after_trading_end(context):
# 得到当天所有订单
orders = get_orders()
for _order in orders.values():
log.info(_order.order_id)
# 根据订单id查询订单
get_orders(order_id='1517627499')
# 查询所有标的为 000002.XSHG 的订单
get_orders(security='000002.XSHG')
# 查询订单状态为 OrderStatus.held 的所有订单
get_orders(status=OrderStatus.held)
# 查询标的为 000002.XSHG 且状态为 OrderStatus.held 的所有订单
get_orders(security='000002.XSHG', status=OrderStatus.held)
获取成交信息函数
语法:
get_trades()
该函数获取当天所有的成交记录。需要注意的是,一个订单可能分多次成交
实例代码:
def after_trading_end(context):
# 得到当天所有成交记录
trades = get_trades()
for _trade in trades.values():
log.info(_trade.trade_id)
注:本文章为个人学习笔记,参考了一些书籍与官方教程,不作任何商业用途!