# openPosition 方法使用指南

## 方法签名

```typescript
async openPosition(
    symbol: string,
    side: DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum,
    quantity: number,
    price: number,
    options?: {
        // 所有可选参数...
    }
)
```

## 必需参数

### symbol

- **类型**: `string`
- **说明**: 交易对符号
- **示例**: `'BTCUSDT'`, `'ETHUSDT'`

### side

- **类型**: `DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum`
- **说明**: 买卖方向
- **可选值**:
  - `BUY` - 买入
  - `SELL` - 卖出

### quantity

- **类型**: `number`
- **说明**: 订单数量
- **示例**: `0.001`, `1.5`

### price

- **类型**: `number`
- **说明**: 订单价格
- **示例**: `50000`, `3000.5`

## 可选参数

### type

- **类型**: `string`
- **默认值**: `'LIMIT'`
- **说明**: 订单类型
- **可选值**:
  - `LIMIT` - 限价单
  - `MARKET` - 市价单
  - `STOP` - 止损单
  - `STOP_MARKET` - 止损市价单
  - `TAKE_PROFIT` - 止盈单
  - `TAKE_PROFIT_MARKET` - 止盈市价单
  - `TRAILING_STOP_MARKET` - 追踪止损单

### timeInForce

- **类型**: `DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum`
- **默认值**: `GTC`
- **说明**: 订单有效期
- **可选值**:
  - `GTC` - Good Till Cancel (一直有效直到取消)
    - 订单会一直有效，直到被手动取消或完全成交
    - 最常见的订单类型，适合长期挂单
  - `IOC` - Immediate or Cancel (立即成交或取消)
    - 订单必须立即成交，未成交的部分会被取消
    - 适合希望立即成交的场景
  - `FOK` - Fill or Kill (全部成交或取消)
    - 订单必须全部成交，否则整个订单会被取消
    - 适合不希望部分成交的大额订单
  - `GTX` - Good Till Crossing (有效直到穿越)
    - 订单在价格穿越指定价格时生效
    - 适合条件订单，如止损单
  - `GTD` - Good Till Date (有效直到指定日期)
    - 订单在指定日期前有效，过期后自动取消
    - 适合有时间限制的订单

### positionSide

- **类型**: `DerivativesTradingUsdsFuturesRestAPI.NewOrderPositionSideEnum`
- **说明**: 仓位方向
- **可选值**:
  - `BOTH` - 双向模式（默认）
  - `LONG` - 多头
  - `SHORT` - 空头

### reduceOnly

- **类型**: `string`
- **默认值**: `'false'`
- **说明**: 是否仅减仓
- **可选值**:
  - `'true'` - 仅减仓
  - `'false'` - 允许开仓和减仓

### closePosition

- **类型**: `string`
- **说明**: 是否平仓
- **可选值**:
  - `'true'` - 平仓
  - `'false'` - 不开仓也不平仓

### activationPrice

- **类型**: `number`
- **说明**: 激活价格（用于追踪止损单等）
- **示例**: `50000`

### callbackRate

- **类型**: `number`
- **说明**: 回调价格（用于追踪止损单等）
- **示例**: `0.1` (10%)

### workingType

- **类型**: `DerivativesTradingUsdsFuturesRestAPI.NewOrderWorkingTypeEnum`
- **说明**: 工作类型（用于追踪止损单等）
- **可选值**:
  - `MARK_PRICE` - 标记价格
  - `CONTRACT_PRICE` - 合约价格

### priceProtect

- **类型**: `string`
- **说明**: 价格保护
- **可选值**:
  - `'TRUE'` - 启用价格保护
  - `'FALSE'` - 禁用价格保护

### newOrderRespType

- **类型**: `DerivativesTradingUsdsFuturesRestAPI.NewOrderNewOrderRespTypeEnum`
- **说明**: 订单响应类型
- **可选值**:
  - `ACK` - 仅确认
  - `RESULT` - 返回结果
  - `FULL` - 返回完整信息

### newClientOrderId

- **类型**: `string`
- **说明**: 客户端订单ID（可选）
- **示例**: `'my_order_123'`

### stopPrice

- **类型**: `number`
- **说明**: 止损价格
- **示例**: `48000`

### icebergQty

- **类型**: `number`
- **说明**: 冰山订单显示数量
- **示例**: `0.1`

### orderTag

- **类型**: `string`
- **说明**: 订单标签
- **示例**: `'test_order'`

## 使用示例

### 基础限价单

```typescript
const result = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  0.001,
  50000,
)
```

### 市价单

```typescript
const result = await futureConnector.openPosition(
  'ETHUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.SELL,
  0.01,
  0, // 市价单价格为0
  {
    type: 'MARKET',
  },
)
```

### 止损单

```typescript
const result = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.SELL,
  0.001,
  48000,
  {
    type: 'STOP_MARKET',
    stopPrice: 48000,
    reduceOnly: 'true',
  },
)
```

### 追踪止损单

```typescript
const result = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.SELL,
  0.001,
  0,
  {
    type: 'TRAILING_STOP_MARKET',
    activationPrice: 50000,
    callbackRate: 0.1,
    workingType: DerivativesTradingUsdsFuturesRestAPI.NewOrderWorkingTypeEnum.MARK_PRICE,
  },
)
```

### 带完整参数的单子

```typescript
const result = await futureConnector.openPosition(
  'BTCUSDT',
  DerivativesTradingUsdsFuturesRestAPI.NewOrderSideEnum.BUY,
  0.001,
  50000,
  {
    type: 'LIMIT',
    timeInForce: DerivativesTradingUsdsFuturesRestAPI.NewOrderTimeInForceEnum.GTC,
    positionSide: DerivativesTradingUsdsFuturesRestAPI.NewOrderPositionSideEnum.BOTH,
    reduceOnly: 'false',
    newOrderRespType: DerivativesTradingUsdsFuturesRestAPI.NewOrderNewOrderRespTypeEnum.RESULT,
    newClientOrderId: `order_${Date.now()}`,
    orderTag: 'my_order',
  },
)
```

## 注意事项

1. **API密钥**: 确保已正确设置 API_KEY 和 API_SECRET
2. **余额检查**: 下单前请确保账户有足够余额
3. **价格精度**: 注意交易对的价格精度要求
4. **数量精度**: 注意交易对的数量精度要求
5. **风险控制**: 建议在测试环境中先测试
6. **错误处理**: 方法会返回 null 如果下单失败

## 错误处理

方法内部已包含错误处理，如果下单失败会：

1. 在控制台输出错误信息
2. 返回 `null`
3. 不会抛出异常

建议在使用时添加额外的错误处理逻辑。
