问题描述
order_style函数有没有使用帮助文档,看到别的策略中有用这个函数,但是不知道这个函数怎么使用,参数是什么意思?
解决方案
在 JoinQuant(聚宽)平台的 API 中,其实并没有直接名为 order_style 的函数,您看到的应该是 OrderStyle 类及其子类。它们通常作为下单函数(如 order、order_target、order_value 等)的 style 参数传入,用于指定订单的类型(如市价单、限价单等)。
如果下单时不指定 style 参数,系统默认使用市价单(MarketOrderStyle)。
以下是 OrderStyle 常用子类的详细说明及使用方法:
1. 市价单:MarketOrderStyle
市价单是指按照当前市场最优价格立即成交的订单。
参数说明:
limit_price:科创板市价单的保护价,对非科创板标的无效。科创板市价买入时成交的最高价格不高于本价格,市价卖出时成交的最低价格不低于本价格。
使用示例:
# 以市价单买入平安银行股票100股(默认方式)
order('000001.XSHE', 100)
# 显式指定以市价单买入平安银行股票100股
order('000001.XSHE', 100, style=MarketOrderStyle())
# 科创板设置保护价:以市价单买入天准科技200股,保护价为200元
order('688003.XSHG', 200, style=MarketOrderStyle(200))
2. 限价单:LimitOrderStyle
限价单是指按照指定的限定价格或更优价格成交的订单。
参数说明:
limit_price:限定价格。买入时,成交价必须小于等于该价格;卖出时,成交价必须大于等于该价格。
使用示例:
# 以10.0元的价格下一个限价单,买入平安银行100股
order('000001.XSHE', 100, style=LimitOrderStyle(10.0))
# 在仓位1中以3600.0的限价单,平一手沪深300指数期货的空单
order('IF1412.CCFX', -1, style=LimitOrderStyle(3600.0), side='short', pindex=1)
3. 停止单(条件单)
停止单会在标的价格突破(向上或向下)指定价格时,转化为对应的市价单或限价单。分为两种:
StopMarketOrderStyle(mode, stop_price):触发后转为市价单。StopLimitOrderStyle(mode, stop_price, limit_price):触发后转为限价单。
参数说明:
mode:模式,可选"stop_loss"(止损模式) 或"take_profit"(止盈模式)。stop_price:触发价格。limit_price:触发后转为限价单的限定价格。
止盈止损逻辑:
- 止损模式 (
stop_loss):平空/做多/买入时,触发价必须大于最新价;平多/做空/卖出时,触发价必须小于最新价。 - 止盈模式 (
take_profit):平多/做空/卖出时,触发价必须大于最新价;平空/做多/买入时,触发价必须小于最新价。
(若触发价不满足上述条件,该停止单会立即触发)
使用示例:
# 假设当前价格为 10 元,设置一个止损单:当价格跌破 9 元时,以市价卖出 100 股
order('000001.XSHE', -100, style=StopMarketOrderStyle('stop_loss', 9.0))
# 假设当前价格为 10 元,设置一个止盈单:当价格涨破 12 元时,以 11.8 元的限价卖出 100 股
order('000001.XSHE', -100, style=StopLimitOrderStyle('take_profit', 12.0, 11.8))
总结
在编写策略时,您可以根据需要将这些 Style 对象传递给 order、order_target、order_value 等函数的 style 参数,从而精确控制订单的成交方式。