量化交易之下单函数和context对象
一、下单函数
聚宽设计的函数(如前文所说准确叫法是API)的用法都写在API文档里,位置在聚宽网站导航栏-帮助-API文档
1、order按股数下单
order(security, amount, style=None, side='long', pindex=0, close_today=False)
买卖标的。调用成功后, 您将可以调用[get_open_orders]取得所有未完成的交易, 也可以调用[cancel_order]取消交易
参数
- security: 标的代码
- amount: 交易数量, 正数表示买入, 负数表示卖出
- style: 决定下的订单是市价单还是限价单,默认是None代表市价单(MarketOrder), 还有限价单(LimitOrderStyle)
- side: 'long'/'short',操作多单还是空单。默认为多单,股票、基金暂不支持开空单。
- pindex: 在使用set_subportfolios创建了多个仓位时,指定subportfolio 的序号, 从 0 开始, 比如 0 指定第一个 subportfolio, 1 指定第二个 subportfolio,默认为0。
- close_today: 平今字段。
- 对上海国际能源中心,上海期货交易所,中金所的标的:
- close_today = True, 只平今仓
- close_today = False, 只平昨仓
- 对其他交易所标的:
- close_today = True, 优先平今,超出则平昨仓
- close_today = False, 优先平昨,超出则平今仓
- 对上海国际能源中心,上海期货交易所,中金所的标的:
返回 Order对象或者None, 如果创建订单成功, 则返回Order对象, 失败则返回None
2、常用的下单函数
1.order(security,amount)
含义是买卖一定数量的(单位:股)股票。security是股票代码,amount是数量,amount为负数时就是代表卖出了,需要知道的是,国内股票买入最小单位是1手即100股。
# 买入100股平安银行 order("000001.XSHE",100) # 卖出100股平安银行 order("000001.XSHE",-100)
2.order_target(security,amount)
含义是通过买卖,将股票仓位调整至一定数量(单位:股)。security是股票代码,amount是数量
""" 调整平安银行的持股数量至1000股, 即,如果目前平安银行的持股数量低于1000股就买入,高于就是卖出,不高不低就不动。 """
order_target("000001.XSHE",1000)
3.order_value(security,value)
含义是买卖一定价值量(单位:元)股票。security是股票代码,value是价值量。value为负数时就是代表卖出了
# 买入10000元的平安银行 # 如果当前股票市价是10元,则代表买入1000股 # 如果除不开系统会自动调整成相近的合理数量。卖出时也会。 order_value("000001.XSHE",10000) # 卖出10000元的平安银行 # 如果当前股票市价是100元,则代表卖出100股 order_value("000001.XSHE",-10000)
4.order_target_value(security,value)
通过买卖,将股票仓位调整至一定价值量(单位:元)。security是股票代码,value是价值量
# 调整平安银行的持股价值量至10000元 # 即,如果目前平安银行的持股价值量(按股票市价算)低于10000元就买入,高于就是卖出,不高不低就不动。 order_target_value("000001.XSHE",10000)
5.cancel_order(order) 取消订单
参数:[Order]对象或者order_id
返回 Order对象或者None, 如果取消委托成功, 则返回Order对象, 委托不存在返回None
# 每个交易日结束运行 def after_trading_end(context): # 得到当前未完成订单 orders = get_open_orders() # 循环,撤销订单 for _order in orders.values(): cancel_order(_order)