## 提示

- `live-or-trading-module-only`
- `backtest-only`
- `broker-or-counter-dependent`


## 原型

```python
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)。

## 示例

```python
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)。
