order_target - 指定目标数量买卖
order_target 是 PTrade 中用于指定目标数量买卖的接口。
提示
live-or-trading-module-onlybacktest-onlybroker-or-counter-dependent
原型
order_target(security, amount, limit_price=None)
释义
order_target 是 PTrade 中用于指定目标数量买卖的接口。
研究:不支持;回测:支持;模拟:官方目录未明确;实盘:支持。
参数
| 参数 | 是否必填 | 官方原始定义 |
|---|---|---|
security |
是 | security |
amount |
是 | amount |
limit_price |
否 | limit_price=None |
返回值
Order对象中的id或者None。如果创建订单成功,则返回Order对象的id(str),失败则返回None(NoneType)。
示例
def initialize(context):
g.security = ['600570.SS', '000001.SZ']
set_universe(g.security)
def handle_data(context, data):
#买卖恒生电子股票数量到100股
order_target('600570.SS', 100)
#卖出恒生电子所有股票
if data['600570.SS']['close'] > 39:
order_target('600570.SS', 0)
详细说明
order_target(security, amount, limit_price=None)
使用场景
该函数仅在回测、交易模块可用
接口说明
该接口用于买卖股票,直到股票最终数量达到指定的amount
注意事项
该函数不支持逆回购交易。
该函数在委托股票时取整100股,委托可转债时取整10张。
交易场景如果limit_price字段不入参,系统会默认用行情快照数据最新价报单,假如行情快照获取失败会导致委托失败,系统会在日志中增加提醒。
该接口的使用有场景限制,回测可以正常使用,交易谨慎使用。回测场景下撮合是引擎计算的,因此成交之后持仓信息的更新是瞬时的,但交易场景下信息的更新依赖于柜台数据的返回,无法做到瞬时同步,可能造成重复下单。具体原因如下:
柜台返回持仓数据体现当日变化(由柜台配置决定):交易场景中持仓信息同步有时滞,一般在6秒左右,假如在这6秒之内连续下单两笔或更多order_target委托,由于持仓数量不会瞬时更新,会造成重复下单。
柜台返回持仓数据体现当日变化(由柜台配置决定):第一笔委托未完全成交,如果不对第一笔做撤单再次order_target相同的委托目标数量,引擎不会计算包括在途的总委托数量,也会造成重复下单。
柜台返回持仓数据不体现当日变化(由柜台配置决定):这种情况下持仓数量只会一天同步一次,必然会造成重复下单。
针对以上几种情况,假如要在交易场景使用该接口,首先要确定券商柜台的配置,是否实时更新持仓情况,其次需要增加订单和持仓同步的管理,来配合order_target使用。
参数详细说明
security: 股票代码(str);
amount: 期望的最终数量(int);
limit_price:买卖限价(float);
返回值
Order对象中的id或者None。如果创建订单成功,则返回Order对象的id(str),失败则返回None(NoneType)。