timeInForce_explanation.md 6.6 KB

Time In Force 参数详解

概述

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

参数值详解

1. GTC - Good Till Cancel

中文: 一直有效直到取消

特点

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

使用场景

// 限价单 - 希望以特定价格买入
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

中文: 立即成交或取消

特点

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

使用场景

// 市价单 - 立即买入
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

中文: 全部成交或取消

特点

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

使用场景

// 大额订单 - 要求全部成交
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

中文: 有效直到穿越

特点

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

使用场景

// 止损单
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

中文: 有效直到指定日期

特点

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

使用场景

// 限时订单
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: 网格交易

// 网格交易使用 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: 紧急平仓

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

策略3: 大额交易

// 大额交易使用 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 参数对于交易策略的成功至关重要。建议根据具体的交易需求和市场条件来选择最合适的设置。