## 提示

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


## 原型

```python
order_target_value(security, value, limit_price=None)
```

## 释义

order_target_value 是 PTrade 中用于指定持仓市值买卖的接口。

研究：不支持；回测：支持；模拟：官方目录未明确；实盘：支持。

## 参数

| 参数 | 是否必填 | 官方原始定义 |
|---|---:|---|
| `security` | 是 | security |
| `value` | 是 | value |
| `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):

#买卖股票到指定价值

order_target_value('600570.SS', 10000)

#卖出当前所有恒生电子的股票

if data['600570.SS']['close'] > 39:

order_target_value('600570.SS', 0)
```

## 详细说明

order_target_value(security, value, limit_price=None)

### 使用场景

该函数仅在回测、交易模块可用

### 接口说明

该接口用于调整股票持仓市值到value价值

### 注意事项

该函数不支持逆回购交易。

该函数在委托股票时取整100股，委托可转债时取整10张。

交易场景如果limit_price字段不入参，系统会默认用行情快照数据最新价报单，假如行情快照获取失败会导致委托失败， 系统会在日志中增加提醒。

该接口的使用有场景限制，回测可以正常使用，交易谨慎使用。回测场景下撮合是引擎计算的，因此成交之后持仓信息的更新是瞬时的，但交易场景下信息的更新依赖于柜台数据的返回，无法做到瞬时同步，可能造成重复下单。具体原因如下：

柜台返回持仓数据体现当日变化(由柜台配置决定)：交易场景中持仓信息同步有时滞，一般在6秒左右，假如在这6秒之内连续下单两笔或更多order_target_value委托，由于持仓市值不会瞬时更新，会造成重复下单。

柜台返回持仓数据体现当日变化(由柜台配置决定)：第一笔委托未完全成交，如果不对第一笔做撤单再次order_target_value相同的委托目标金额，引擎不会计算包括在途的总委托数量，也会造成重复下单。

柜台返回持仓数据不体现当日变化(由柜台配置决定)：这种情况下持仓金额只会一天同步一次，必然会造成重复下单。

针对以上几种情况，假如要在交易场景使用该接口，首先要确定券商柜台的配置，是否实时更新持仓情况，其次需要增加订单和持仓同步的管理，来配合order_target_value使用。

### 参数详细说明

security: 股票代码(str)；

value: 期望的股票最终价值(float)；

limit_price：买卖限价(float)；

### 返回值

Order对象中的id或者None。如果创建订单成功，则返回Order对象的id(str)，失败则返回None(NoneType)。
