# Time In Force 参数详解

## 概述

Time In Force (TIF) 是订单有效期参数，用于指定订单的有效期限。不同的 TIF 设置会影响订单的执行方式和生命周期。

## 参数值详解

### 1. GTC - Good Till Cancel

**中文**: 一直有效直到取消

#### 特点

- 订单会一直有效，直到被手动取消或完全成交
- 最常见的订单类型
- 适合长期挂单策略

#### 使用场景

```typescript
// 限价单 - 希望以特定价格买入
const limitOrder = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  0.001,
  50000,
  {
    type: 'LIMIT',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.GTC,
  },
)

// 限价单 - 希望以特定价格卖出
const sellOrder = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.SELL,
  0.001,
  52000,
  {
    type: 'LIMIT',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.GTC,
  },
)
```

#### 适用策略

- 网格交易
- 长期投资
- 价格预测策略

---

### 2. IOC - Immediate or Cancel

**中文**: 立即成交或取消

#### 特点

- 订单必须立即成交
- 未成交的部分会被取消
- 适合需要立即执行的订单

#### 使用场景

```typescript
// 市价单 - 立即买入
const marketBuy = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  0.001,
  0, // 市价单价格为0
  {
    type: 'MARKET',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.IOC,
  },
)

// 限价单 - 立即成交或取消
const immediateOrder = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  0.001,
  50000,
  {
    type: 'LIMIT',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.IOC,
  },
)
```

#### 适用策略

- 紧急买入/卖出
- 流动性管理
- 快速执行策略

---

### 3. FOK - Fill or Kill

**中文**: 全部成交或取消

#### 特点

- 订单必须全部成交
- 如果无法全部成交，整个订单会被取消
- 适合大额订单

#### 使用场景

```typescript
// 大额订单 - 要求全部成交
const largeOrder = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  1.0, // 大额数量
  50000,
  {
    type: 'LIMIT',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.FOK,
  },
)

// 精确数量订单
const preciseOrder = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.SELL,
  0.5,
  52000,
  {
    type: 'LIMIT',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.FOK,
  },
)
```

#### 适用策略

- 大额交易
- 精确数量要求
- 避免部分成交

---

### 4. GTX - Good Till Crossing

**中文**: 有效直到穿越

#### 特点

- 订单在价格穿越指定价格时生效
- 适合条件订单
- 常用于止损单

#### 使用场景

```typescript
// 止损单
const stopLoss = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.SELL,
  0.001,
  48000,
  {
    type: 'STOP_MARKET',
    stopPrice: 48000,
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.GTX,
  },
)

// 条件限价单
const conditionalOrder = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  0.001,
  51000,
  {
    type: 'LIMIT',
    stopPrice: 50000, // 当价格达到50000时激活
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.GTX,
  },
)
```

#### 适用策略

- 止损策略
- 条件订单
- 价格触发策略

---

### 5. GTD - Good Till Date

**中文**: 有效直到指定日期

#### 特点

- 订单在指定日期前有效
- 过期后自动取消
- 适合有时间限制的订单

#### 使用场景

```typescript
// 限时订单
const timeLimitOrder = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  0.001,
  50000,
  {
    type: 'LIMIT',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.GTD,
    // 注意：GTD 需要额外的日期参数
  },
)
```

#### 适用策略

- 短期交易
- 时间限制策略
- 临时订单

## 选择指南

### 何时使用 GTC

- 长期投资策略
- 网格交易
- 价格预测策略
- 不急于成交的订单

### 何时使用 IOC

- 需要立即执行
- 流动性管理
- 紧急买入/卖出
- 接受部分成交

### 何时使用 FOK

- 大额订单
- 精确数量要求
- 避免部分成交
- 对成交完整性有严格要求

### 何时使用 GTX

- 止损策略
- 条件订单
- 价格触发策略
- 需要价格条件激活的订单

### 何时使用 GTD

- 短期交易
- 有时间限制的订单
- 临时策略
- 避免长期挂单

## 实际应用示例

### 策略1: 网格交易

```typescript
// 网格交易使用 GTC
const gridOrders = []
for (let i = 0; i < 5; i++) {
  const price = 50000 + i * 1000
  const order = await futureConnector.openPosition(
    'BTCUSDT',
    DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
    0.001,
    price,
    {
      type: 'LIMIT',
      timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.GTC,
    },
  )
  gridOrders.push(order)
}
```

### 策略2: 紧急平仓

```typescript
// 紧急平仓使用 IOC
const emergencySell = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.SELL,
  0.001,
  0,
  {
    type: 'MARKET',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.IOC,
  },
)
```

### 策略3: 大额交易

```typescript
// 大额交易使用 FOK
const largeTrade = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  10.0,
  50000,
  {
    type: 'LIMIT',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.FOK,
  },
)
```

## 注意事项

1. **默认值**: 如果不指定 timeInForce，默认为 GTC
2. **订单类型兼容性**: 某些订单类型可能不支持特定的 timeInForce 设置
3. **市场影响**: IOC 和 FOK 可能对市场产生较大影响
4. **费用考虑**: 不同 timeInForce 设置可能有不同的手续费
5. **风险控制**: 选择合适的 timeInForce 是风险控制的重要部分

## 总结

选择合适的 Time In Force 参数对于交易策略的成功至关重要。建议根据具体的交易需求和市场条件来选择最合适的设置。
