交易操作

C# SDK 通过 TradeClient 提供全部交易接口,所有请求使用 TigerRequest<TResponse> 泛型包装,通过 await tradeClient.ExecuteAsync(request) 异步调用。以下为完整可运行示例:

using TigerOpenAPI.Common;
using TigerOpenAPI.Trade;
using TigerOpenAPI.Trade.Response;
using TigerOpenAPI.Trade.Model;

TigerConfig config = new TigerConfig()
{
    ConfigFilePath = "/path/to/tiger_openapi_config.properties"
};
TradeClient tradeClient = new TradeClient(config);

// 查询持仓
TigerRequest<PositionsResponse> request = new TigerRequest<PositionsResponse>()
{
    ApiMethodName = TradeApiService.POSITIONS,
    ModelValue = new PositionsModel() { Account = config.DefaultAccount }
};
PositionsResponse response = await tradeClient.ExecuteAsync(request);
Console.WriteLine(response);

合约查询

contract 查询合约信息

说明

查询单个合约的详细信息,包括名称、货币、最小交易单位等。

参数

参数名类型是否必填描述
Symbolstring合约代码,如 "AAPL""00700"
SecTypestring合约类型:"STK"(股票)/ "OPT"(期权)/ "FUT"(期货)/ "WAR"(权证)/ "IOPT"(牛熊证)

返回

ContractResponse,包含合约详情,含 SymbolNameCurrencyExchangeLotSize 等字段。

示例

// 查询美股合约
ContractItem contract = ContractItem.BuildStockContract("AAPL", Currency.USD.ToString());

TigerRequest<ContractResponse> request = new TigerRequest<ContractResponse>()
{
    ApiMethodName = TradeApiService.CONTRACT,
    ModelValue = new ContractModel() { ContractInfo = contract }
};
ContractResponse response = await tradeClient.ExecuteAsync(request);

// 查询港股合约
ContractItem hkContract = ContractItem.BuildStockContract("00700", Currency.HKD.ToString());

quoteContract 查询衍生品合约

说明

查询期权或期货等衍生品的合约明细,包含行权价、到期日、合约乘数等衍生品特有字段。

示例

// 美股期权合约
ContractItem optContract = ContractItem.BuildOptionContract("AAPL", "20250117", 150.0D, "CALL");

// 港股权证合约
ContractItem warContract = ContractItem.BuildWarrantContract("13745", "20211217", 719.38D, Right.CALL.ToString());

订单操作

Order 对象说明

下单时通过 ContractItemPlaceOrderModel 构造订单对象:

字段类型描述
Accountstring账户 ID
ContractInfoContractItem合约信息对象
ActionActionType买卖方向:ActionType.BUY(买入)/ ActionType.SELL(卖出)
OrderTypeOrderType订单类型:OrderType.MKT(市价)/ OrderType.LMT(限价)/ OrderType.STP(止损)/ OrderType.STP_LMT(止损限价)/ OrderType.TRAIL(追踪止损)
TotalQuantitydouble委托数量
LimitPricedouble限价价格(LMT / STP_LMT 必填)
AuxPricedouble触发价格(STP / STP_LMT / TRAIL 必填)
TimeInForceTimeInForce有效期:TimeInForce.DAY(当日)/ TimeInForce.GTC(撤单前有效)
OutsideRthbool是否允许盘前盘后交易(仅美股)

placeOrder 下单

tradeClient.ExecuteAsync(request) — 提交订单到交易所

说明

提交订单到交易所。下单成功后返回订单 ID,可用于后续查询和操作。

示例

// 限价买入 AAPL
ContractItem contract = ContractItem.BuildStockContract("AAPL", Currency.USD.ToString());
PlaceOrderModel orderModel = PlaceOrderModel.buildLimitOrder(
    config.DefaultAccount, contract, ActionType.BUY, 10, 150.0D);

TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
    ApiMethodName = TradeApiService.PLACE_ORDER,
    ModelValue = orderModel
};
PlaceOrderResponse response = await tradeClient.ExecuteAsync(request);
Console.WriteLine("订单ID: " + response.OrderId);

// 市价卖出
PlaceOrderModel mktOrder = PlaceOrderModel.buildMarketOrder(
    config.DefaultAccount, contract, ActionType.SELL, 10);

// 盘前/盘后交易(扩展时段)
PlaceOrderModel extOrder = PlaceOrderModel.buildLimitOrder(
    config.DefaultAccount, contract, ActionType.BUY, 5, 148.0D);
extOrder.OutsideRth = true;
extOrder.TimeInForce = TimeInForce.DAY;

数据示例

返回数据:

{
  "orderId": 12345678,
  "status": "Submitted",
  "symbol": "AAPL"
}

previewOrder 预览订单

说明

在实际下单前预估订单的费用、影响和可行性,不会真正提交到交易所。

示例

ContractItem contract = ContractItem.BuildStockContract("AAPL", Currency.USD.ToString());
PlaceOrderModel orderModel = PlaceOrderModel.buildLimitOrder(
    config.DefaultAccount, contract, ActionType.BUY, 10, 150.0D);

TigerRequest<PreviewOrderResponse> request = new TigerRequest<PreviewOrderResponse>()
{
    ApiMethodName = TradeApiService.PREVIEW_ORDER,
    ModelValue = orderModel
};
PreviewOrderResponse response = await tradeClient.ExecuteAsync(request);
Console.WriteLine("预估费用: " + response.Commission);

数据示例

返回数据:

{
  "commission": 1.0,
  "stampDuty": 0.0,
  "levy": 0.0,
  "marginRequired": 0.0,
  "buyingPowerEffect": -1500.0
}

特殊订单类型

止损单(STP)

PlaceOrderModel stpOrder = PlaceOrderModel.buildStopOrder(
    config.DefaultAccount, contract, ActionType.SELL, 10, 145.0D);

止损限价单(STP_LMT)

PlaceOrderModel stpLmtOrder = PlaceOrderModel.buildStopLimitOrder(
    config.DefaultAccount, contract, ActionType.SELL, 10, 145.0D, 144.0D);

追踪止损单(TRAIL)

PlaceOrderModel trailOrder = new PlaceOrderModel()
{
    Account = config.DefaultAccount,
    ContractInfo = contract,
    Action = ActionType.SELL,
    OrderType = OrderType.TRAIL,
    TotalQuantity = 10,
    AuxPrice = 5.0D  // 追踪金额
};

竞价单(AUCTION)

// 竞价市价单 (AM)
PlaceOrderModel amOrder = new PlaceOrderModel()
{
    Account = config.DefaultAccount,
    ContractInfo = contract,
    Action = ActionType.BUY,
    OrderType = OrderType.AUCTION_MKT,
    TotalQuantity = 10
};

// 竞价限价单 (AL)
PlaceOrderModel alOrder = new PlaceOrderModel()
{
    Account = config.DefaultAccount,
    ContractInfo = contract,
    Action = ActionType.BUY,
    OrderType = OrderType.AUCTION_LIMIT,
    TotalQuantity = 10,
    LimitPrice = 150.0D
};

冰山单(ICEBERG)

仅支持美股 STK,盘中下单,不支持预挂单。

ContractItem contract = ContractItem.BuildStockContract("AAPL", Currency.USD.ToString());

// 基本参数(默认 LIMIT_PRICE 模式)
PlaceOrderModel icebergOrder = PlaceOrderModel.BuildIcebergOrder(
    config.DefaultAccount, contract, ActionType.BUY, 1000, 180.0, 100);

// 完整参数
// priceType 可选值:ICEBERG_PRICE_TYPE_LIMIT / ICEBERG_PRICE_TYPE_ASK / ICEBERG_PRICE_TYPE_BID / ICEBERG_PRICE_TYPE_LATEST
PlaceOrderModel icebergFull = PlaceOrderModel.BuildIcebergOrder(
    config.DefaultAccount, contract, ActionType.BUY, 1000, 180.0,
    100, 50, 30,  // displaySize, minDisplaySize, checkIntervals
    PlaceOrderModel.ICEBERG_PRICE_TYPE_LIMIT,  // priceType
    startTime, endTime);

期权下单

ContractItem optContract = ContractItem.BuildOptionContract("AAPL", "20250117", 150.0D, "CALL");
PlaceOrderModel optOrder = PlaceOrderModel.buildLimitOrder(
    config.DefaultAccount, optContract, ActionType.BUY, 1, 9.50D);

期货下单

// 期货合约代码格式:品种代码 + 年月(YYMM),如 ES2506 = E-mini S&P 500 2025年6月合约
ContractItem futContract = ContractItem.BuildFutureContract("ES2506", Currency.USD.ToString());
PlaceOrderModel futOrder = PlaceOrderModel.buildLimitOrder(
    config.DefaultAccount, futContract, ActionType.BUY, 1, 5900.0D);

modifyOrder 修改订单

说明

修改已提交但未完全成交的订单,可修改价格、数量等参数。仅支持状态为待成交(pending)的订单。

参数

参数名类型是否必填描述
Idlong要修改的订单 ID
LimitPricedouble新的限价价格
TotalQuantitydouble新的委托数量

示例

// 将订单 12345 的限价价格从 150 改为 148
ModifyOrderModel modifyModel = new ModifyOrderModel()
{
    Account = config.DefaultAccount,
    Id = 12345,
    LimitPrice = 148.0D,
    TotalQuantity = 10
};

TigerRequest<ModifyOrderResponse> request = new TigerRequest<ModifyOrderResponse>()
{
    ApiMethodName = TradeApiService.MODIFY_ORDER,
    ModelValue = modifyModel
};
ModifyOrderResponse response = await tradeClient.ExecuteAsync(request);

冰山单改单: 支持修改 TotalQuantityLimitPriceDisplaySizeMinDisplaySizeCheckIntervalsStartTimeEndTime。不支持修改 PriceType


cancelOrder 取消订单

说明

撤销指定订单。只能撤销状态为待成交(pending)的订单,已成交订单无法撤销。

参数

参数名类型是否必填描述
Idlong要撤销的订单 ID

示例

CancelOrderModel cancelModel = new CancelOrderModel()
{
    Account = config.DefaultAccount,
    Id = 12345
};

TigerRequest<CancelOrderResponse> request = new TigerRequest<CancelOrderResponse>()
{
    ApiMethodName = TradeApiService.CANCEL_ORDER,
    ModelValue = cancelModel
};
CancelOrderResponse response = await tradeClient.ExecuteAsync(request);

订单查询

orders 查询全部订单

说明

查询当前账户的全部历史订单,包含各种状态。

参数

参数名类型是否必填描述
Accountstring账户 ID
SecTypestring合约类型过滤
MarketMarket市场过滤
Symbolstring合约代码过滤
StartTimelong开始时间戳(毫秒)
EndTimelong结束时间戳(毫秒)
Limitint返回数量限制,最大 100

返回

OrderBatchResponse,包含订单列表,每条含 IdSymbolActionStatusTotalQuantityFilledQuantityLimitPriceAvgFillPriceCreateTime 等字段。

示例

TigerRequest<OrderBatchResponse> request = new TigerRequest<OrderBatchResponse>()
{
    ApiMethodName = TradeApiService.ORDERS,
    ModelValue = new QueryOrderModel() { Account = config.DefaultAccount }
};
OrderBatchResponse response = await tradeClient.ExecuteAsync(request);

数据示例

返回数据:

[
  {
    "id": 12345678,
    "symbol": "AAPL",
    "action": "BUY",
    "status": "Filled",
    "totalQuantity": 10,
    "filledQuantity": 10,
    "limitPrice": 150.0,
    "avgFillPrice": 149.95,
    "createTime": 1735042800000
  }
]

activeOrders 查询待成交订单

说明

查询当前挂单中(未完全成交)的订单列表。

示例

TigerRequest<OrderBatchResponse> request = new TigerRequest<OrderBatchResponse>()
{
    ApiMethodName = TradeApiService.ACTIVE_ORDERS,
    ModelValue = new QueryOrderModel() { Account = config.DefaultAccount }
};
OrderBatchResponse response = await tradeClient.ExecuteAsync(request);

filledOrders 查询已成交订单

说明

查询所有已完全成交的订单列表。

示例

TigerRequest<OrderBatchResponse> request = new TigerRequest<OrderBatchResponse>()
{
    ApiMethodName = TradeApiService.FILLED_ORDERS,
    ModelValue = new QueryOrderModel() { Account = config.DefaultAccount }
};
OrderBatchResponse response = await tradeClient.ExecuteAsync(request);

inactiveOrders 查询已撤销订单

说明

查询已撤销或已过期的订单列表。

示例

TigerRequest<OrderBatchResponse> request = new TigerRequest<OrderBatchResponse>()
{
    ApiMethodName = TradeApiService.INACTIVE_ORDERS,
    ModelValue = new QueryOrderModel() { Account = config.DefaultAccount }
};
OrderBatchResponse response = await tradeClient.ExecuteAsync(request);

orderTransactions 查询成交明细

说明

查询指定订单的逐笔成交明细,一个订单可能分多笔成交。

参数

参数名类型是否必填描述
Idlong订单 ID

示例

TigerRequest<OrderTransactionsResponse> request = new TigerRequest<OrderTransactionsResponse>()
{
    ApiMethodName = TradeApiService.ORDER_TRANSACTIONS,
    ModelValue = new OrderTransactionsModel() { Account = config.DefaultAccount, Symbol = "AAPL" }
};
OrderTransactionsResponse response = await tradeClient.ExecuteAsync(request);

数据示例

返回数据:

[
  {
    "id": 12345,
    "filledQuantity": 5,
    "filledPrice": 149.90,
    "commission": 0.5,
    "filledTime": 1735042810000
  },
  {
    "id": 12345,
    "filledQuantity": 5,
    "filledPrice": 150.00,
    "commission": 0.5,
    "filledTime": 1735042820000
  }
]

持仓与资产

positions 查询持仓

说明

查询当前账户的所有持仓信息,包括股票、期权、期货等各类合约。

参数

参数名类型是否必填描述
Accountstring账户 ID
SecTypestring合约类型过滤
MarketMarket市场过滤
Symbolstring合约代码过滤

返回

PositionsResponse,包含持仓列表,每条含 SymbolQuantityAverageCostMarketValueUnrealizedPnlRealizedPnl 等字段。

示例

TigerRequest<PositionsResponse> request = new TigerRequest<PositionsResponse>()
{
    ApiMethodName = TradeApiService.POSITIONS,
    ModelValue = new PositionsModel() { Account = config.DefaultAccount }
};
PositionsResponse response = await tradeClient.ExecuteAsync(request);

数据示例

返回数据:

[
  {
    "symbol": "AAPL",
    "quantity": 100,
    "averageCost": 145.50,
    "marketValue": 22752.0,
    "unrealizedPnl": 2202.0,
    "realizedPnl": 500.0
  }
]

assets 查询资产

说明

查询账户的资产概览,包括账户净值、现金余额、保证金使用情况等。

参数

参数名类型是否必填描述
Accountstring账户 ID

返回

TigerDictResponse,包含 NetLiquidation(账户净值)、CashBalanceBuyingPowerGrossPositionValueUnrealizedPnlRealizedPnl 等字段。

示例

TigerRequest<TigerDictResponse> request = new TigerRequest<TigerDictResponse>()
{
    ApiMethodName = TradeApiService.ASSETS,
    ModelValue = new GlobalAssetsModel() { Account = config.DefaultAccount }
};
TigerDictResponse response = await tradeClient.ExecuteAsync(request);

数据示例

返回数据:

{
  "account": "123456789",
  "netLiquidation": 250000.0,
  "cashBalance": 50000.0,
  "buyingPower": 100000.0,
  "grossPositionValue": 200000.0,
  "unrealizedPnl": 5000.0,
  "realizedPnl": 3000.0
}

primeAssets 查询综合账户资产

说明

查询综合账户(Prime 账户)的资产信息,包含各子账户的汇总数据。

示例

TigerRequest<PrimeAssetResponse> request = new TigerRequest<PrimeAssetResponse>()
{
    ApiMethodName = TradeApiService.PRIME_ASSETS,
    ModelValue = new PrimeAssetsModel() { Account = config.DefaultAccount }
};
PrimeAssetResponse response = await tradeClient.ExecuteAsync(request);

accountList 查询账户列表

说明

查询当前用户下的所有账户列表,包括普通账户、模拟账户等。

示例

TigerRequest<AccountsResponse> request = new TigerRequest<AccountsResponse>()
{
    ApiMethodName = TradeApiService.MANAGED_ACCOUNTS
};
AccountsResponse response = await tradeClient.ExecuteAsync(request);
Console.WriteLine("账户列表: " + string.Join(", ", response.Accounts));

assetAnalysis 查询历史资产分析

说明

查询账户在一段时间内的历史净值走势和收益分析数据。

参数

参数名类型是否必填描述
Accountstring账户 ID
StartDatestring开始日期,格式 'YYYY-MM-DD'
EndDatestring结束日期,格式 'YYYY-MM-DD'
Periodstring时间粒度:"1D" / "1W" / "1M"

示例

TigerRequest<PrimeAnalyticsAssetResponse> request = new TigerRequest<PrimeAnalyticsAssetResponse>()
{
    ApiMethodName = TradeApiService.ANALYTICS_ASSET,
    ModelValue = new PrimeAnalyticsAssetModel()
    {
        Account = config.DefaultAccount,
        StartDate = "2025-01-01",
        EndDate = "2025-03-31"
    }
};
PrimeAnalyticsAssetResponse response = await tradeClient.ExecuteAsync(request);

资金与资产管理

transferFund 查询出入金记录

说明

查询交易账户的出入金(存取款)记录。

参数

参数名类型是否必填描述
Accountstring交易账户 ID
SegTypeSegmentType账户类型:SegmentType.SEC(证券)/ SegmentType.FUT(期货)
StartDatestring开始日期,格式 "YYYY-MM-DD"
EndDatestring结束日期,格式 "YYYY-MM-DD"
Currencystring货币过滤,如 "USD"
Pageint页码
Limitint每页数量

返回

DepositWithdrawResponseList<DepositWithdrawItem>

字段类型描述
Idlong记录 ID
Typestring类型
Currencystring货币
Amountdecimal金额
BusinessDatestring业务日期
CompletedStatusstring状态
CreatedAtlong创建时间戳(毫秒)

示例

TigerRequest<DepositWithdrawResponse> request = new TigerRequest<DepositWithdrawResponse>()
{
    ApiMethodName = TradeApiService.TRANSFER_FUND,
    ModelValue = new DepositWithdrawModel { Account = config.DefaultAccount, SegType = SegmentType.SEC }
};
DepositWithdrawResponse response = await tradeClient.ExecuteAsync(request);

fundDetails 查询资金流水明细

说明

查询交易账户的资金流水明细(资本账本),支持分页查询。

参数

参数名类型是否必填描述
Accountstring交易账户 ID
SegTypesList<string>账户类型列表
FundTypestring资金流水类型过滤
Currencystring货币过滤
StartDatestring开始日期
EndDatestring结束日期
Startlong分页起始偏移
Limitlong每页数量

返回

FundDetailsResponseFundDetailsPageItemList<FundDetailsItem>

字段类型描述
Pageint当前页
Limitlong每页数量
PageCountint总页数
ItemCountlong总记录数
ItemsList<FundDetailsItem>明细列表

FundDetailsItem 字段:IdCurrencyTypeDescContractNameSegTypeAmountBusinessDateUpdatedAt

示例

TigerRequest<FundDetailsResponse> request = new TigerRequest<FundDetailsResponse>()
{
    ApiMethodName = TradeApiService.FUND_DETAILS,
    ModelValue = new FundDetailsModel(config.DefaultAccount, new List<string> { "SEC" })
};
FundDetailsResponse response = await tradeClient.ExecuteAsync(request);

aggregateAssets 查询汇总资产

说明

查询交易账户的汇总资产概览,包括账户净值、保证金、可用现金等。

参数

参数名类型是否必填描述
Accountstring交易账户 ID
SegTypestring账户类型:"SEC" / "FUT"
BaseCurrencystring换算基准货币

返回

AggregateAssetResponseAggregateAssetItem

字段类型描述
Currencystring货币
CashBalancedecimal现金余额
NetLiquidationdecimal账户净值
InitMargindecimal初始保证金
MaintainMargindecimal维持保证金
AvailableCashdecimal可用现金
ExcessEquitydecimal超额净值
BuyingPowerdecimal购买力
GrossPositionValuedecimal持仓市值

示例

TigerRequest<AggregateAssetResponse> request = new TigerRequest<AggregateAssetResponse>()
{
    ApiMethodName = TradeApiService.AGGREGATE_ASSETS,
    ModelValue = new AggregateAssetModel(config.DefaultAccount, "SEC")
};
AggregateAssetResponse response = await tradeClient.ExecuteAsync(request);

持仓划转

positionTransfer 发起持仓划转

说明

在两个账户之间发起内部持仓划转。

参数

参数名类型是否必填描述
FromAccountstring源账户 ID
ToAccountstring目标账户 ID
Marketstring市场
ItemsList<PositionTransferDetail>要划转的持仓列表

PositionTransferDetail 字段:SymbolSecTypeExpiryStrikeRightQuantity

返回

PositionTransferResponsePositionTransferItem

字段类型描述
Idlong划转 ID
Statusstring状态
Directionstring方向
CreatedAtlong创建时间戳(毫秒)

示例

var items = new List<PositionTransferDetail>
{
    new PositionTransferDetail { Symbol = "AAPL", SecType = "STK", Quantity = 100 }
};
TigerRequest<PositionTransferResponse> request = new TigerRequest<PositionTransferResponse>()
{
    ApiMethodName = TradeApiService.POSITION_TRANSFER,
    ModelValue = new PositionTransferModel(config.DefaultAccount, "account_b", "US", items)
};
PositionTransferResponse response = await tradeClient.ExecuteAsync(request);

positionTransferRecords 查询持仓划转记录

说明

查询账户的内部持仓划转历史记录。

参数

参数名类型是否必填描述
Accountstring交易账户 ID
SinceDatestring开始日期,格式 "YYYY-MM-DD"
ToDatestring结束日期,格式 "YYYY-MM-DD"
Statusstring状态过滤
Marketstring市场过滤
Symbolstring合约代码过滤

返回

PositionTransferRecordsResponseList<PositionTransferRecordItem>

字段:IdAccountIdCounterpartyAccountIdMethodDirectionStatusMemoCreatedAtUpdatedAt

示例

TigerRequest<PositionTransferRecordsResponse> request = new TigerRequest<PositionTransferRecordsResponse>()
{
    ApiMethodName = TradeApiService.POSITION_TRANSFER_RECORDS,
    ModelValue = new PositionTransferRecordsModel(config.DefaultAccount, "2025-01-01", "2025-04-01")
};
PositionTransferRecordsResponse response = await tradeClient.ExecuteAsync(request);

positionTransferDetail 查询持仓划转详情

说明

查询单次持仓划转的详情,包含每个标的的划转状态。

参数

参数名类型是否必填描述
Idlong划转 ID
Accountstring交易账户 ID

返回

PositionTransferDetailResponsePositionTransferDetailItemList<PositionTransferStockDetail>

PositionTransferStockDetail 字段:SymbolMarketQuantityStatusMessageUpdatedAt

示例

TigerRequest<PositionTransferDetailResponse> request = new TigerRequest<PositionTransferDetailResponse>()
{
    ApiMethodName = TradeApiService.POSITION_TRANSFER_DETAIL,
    ModelValue = new PositionTransferDetailModel(transferId, config.DefaultAccount)
};
PositionTransferDetailResponse response = await tradeClient.ExecuteAsync(request);

positionTransferExternalRecords 查询外部持仓划转记录

说明

查询账户的外部券商(ACATS)持仓转入/转出记录。

参数

参数名类型是否必填描述
Accountstring交易账户 ID
SinceDatestring开始日期
ToDatestring结束日期
Statusstring状态过滤

返回

PositionTransferExternalRecordsResponseList<PositionTransferExternalRecordItem>

主要字段:IdStatusInstitutionNameDtcNumberTransferMethodSideMarketFullPortfolioAllFinishedCreatedAt

示例

TigerRequest<PositionTransferExternalRecordsResponse> request = new TigerRequest<PositionTransferExternalRecordsResponse>()
{
    ApiMethodName = TradeApiService.POSITION_TRANSFER_EXTERNAL_RECORDS,
    ModelValue = new PositionTransferRecordsModel(config.DefaultAccount, "2025-01-01", "2025-04-01")
};
PositionTransferExternalRecordsResponse response = await tradeClient.ExecuteAsync(request);

期权行权

v0.4.2 起,SDK 提供 5 个期权行权接口,均通过 TradeClient.ExecuteAsync() 调用。

行权类型

说明
"Exercise"提前行权 — 在到期日前提前执行期权
"Expire"提前放弃行权 — 在到期日前主动放弃行权

optionExerciseCheck 行权检验

预估行权或放弃行权后正股持仓变化,可在提交前确认结果。

请求模型

字段类型说明
ContractIdlong期权合约 ID
ExerciseTypestring"Exercise" / "Expire"
Quantitydouble行权数量(> 0)
ExecutingDatestring行权执行日期 yyyy-MM-dd(Exercise 建议填)
IsForcebool是否强制行权(Exercise 建议填)
ItmRateint价内率阈值 0–10(Expire 专用)
SecretKeystring机构账户交易员密钥

返回(OptionExerciseCheckResponse)

OptionExerciseCheckItem 字段:

字段类型说明
AvailableQuantitydouble可行权数量
Positiondouble当前期权持仓
StkPositiondouble正股当前持仓
StkPositionChangedouble行权后正股持仓变化量
StkPositionBeforedouble行权前正股持仓
StkPositionAfterdouble行权后正股持仓
Symbolstring正股代码

示例

TigerRequest<OptionExerciseCheckResponse> request = new TigerRequest<OptionExerciseCheckResponse>()
{
    ApiMethodName = TradeApiService.OPTION_EXERCISE_CHECK,
    ModelValue = new OptionExerciseCheckModel(
        contractId: 1234567890L,
        exerciseType: "Exercise",
        quantity: 1.0,
        executingDate: "2025-06-20",
        isForce: false,
        account: config.DefaultAccount
    )
};
OptionExerciseCheckResponse response = await tradeClient.ExecuteAsync(request);
OptionExerciseCheckItem item = response.Item;
Console.WriteLine($"symbol={item.Symbol} availableQty={item.AvailableQuantity}");
Console.WriteLine($"stkBefore={item.StkPositionBefore} stkAfter={item.StkPositionAfter}");

optionExercisePosition 查询可行权持仓

查询当前账户下可提交行权或放弃行权申请的期权持仓列表。

请求模型

字段类型说明
ExerciseTypestring"Exercise" / "Expire"
SecretKeystring机构账户交易员密钥

返回(OptionExercisePositionResponse)

分页字段:PageNumPageSizeItemCountPageCount

OptionExercisePositionItem 字段:

字段类型说明
ContractIdlong期权合约 ID
Symbolstring期权合约代码
StkSymbolstring正股代码
ExpireDatestring到期日 yyyy-MM-dd
Strikestring行权价
CallPutstringCALL / PUT
Marketstring市场
AccountIdlong账户 ID
Positiondouble持仓数量
AvailableQuantitydouble可行权数量

示例

TigerRequest<OptionExercisePositionResponse> request = new TigerRequest<OptionExercisePositionResponse>()
{
    ApiMethodName = TradeApiService.OPTION_EXERCISE_POSITION,
    ModelValue = new OptionExercisePositionModel(
        exerciseType: "Exercise",
        account: config.DefaultAccount
    )
};
OptionExercisePositionResponse response = await tradeClient.ExecuteAsync(request);
Console.WriteLine($"itemCount={response.ItemCount} pageCount={response.PageCount}");
foreach (OptionExercisePositionItem pos in response.Items)
{
    Console.WriteLine($"contractId={pos.ContractId} symbol={pos.Symbol} availableQty={pos.AvailableQuantity}");
}

optionExerciseSubmit 提交行权申请

提交提前行权或提前放弃行权申请。

⚠️

注意

  • 提交前建议先调用 optionExerciseCheck 确认持仓变化
  • ExecutingDateIsForce 仅在 Exercise 类型时有效
  • ItmRate 仅在 Expire 类型时有效

请求模型

字段类型说明
ContractIdlong期权合约 ID
ExerciseTypestring"Exercise" / "Expire"
Quantitydouble行权数量(> 0)
ExecutingDatestring行权执行日期(Exercise 必填)
IsForcebool是否强制行权(Exercise 必填)
ItmRateint价内率阈值 0–10(Expire 专用)
SecretKeystring机构账户交易员密钥

返回

OptionExerciseSubmitResponse,包含 Success (bool) 字段表示提交是否成功。

示例

// 提前行权
TigerRequest<OptionExerciseSubmitResponse> request = new TigerRequest<OptionExerciseSubmitResponse>()
{
    ApiMethodName = TradeApiService.OPTION_EXERCISE_SUBMIT,
    ModelValue = new OptionExerciseSubmitModel(
        contractId: 1234567890L,
        exerciseType: "Exercise",
        quantity: 1.0,
        executingDate: "2025-06-20",
        isForce: false,
        account: config.DefaultAccount
    )
};
OptionExerciseSubmitResponse response = await tradeClient.ExecuteAsync(request);
Console.WriteLine(response.Success ? "提交成功" : "提交失败");

// 提前放弃行权
TigerRequest<OptionExerciseSubmitResponse> expireRequest = new TigerRequest<OptionExerciseSubmitResponse>()
{
    ApiMethodName = TradeApiService.OPTION_EXERCISE_SUBMIT,
    ModelValue = new OptionExerciseSubmitModel(
        contractId: 1234567890L,
        exerciseType: "Expire",
        quantity: 1.0,
        account: config.DefaultAccount
    )
};

optionExerciseRecord 查询行权记录

分页查询已提交的行权申请记录。

请求模型

字段类型说明
Pageint页码,从 1 开始,默认 1
Sizeint每页数量,1–100,默认 20
Statusstring状态过滤:New / Cancel / Success / Fail
ExerciseTypestring行权类型过滤:Exercise / Expire
Symbolstring正股代码过滤
OrderBystring排序字段:symbol / expire_date / strike / is_call
SecretKeystring机构账户交易员密钥

返回(OptionExerciseRecordResponse)

分页字段:PageNumPageSizeItemCountPageCount

OptionExerciseRecordItem 字段:

字段类型说明
Idlong行权申请记录 ID
ContractIdlong期权合约 ID
Symbolstring期权合约代码
StkSymbolstring正股代码
ExpireDatestring到期日
Strikestring行权价
CallPutstringCALL / PUT
ExerciseTypestringExercise / Expire
RequestQuantitydouble申请数量
Quantitydouble实际行权数量
StatusstringNew / Cancel / Success / Fail
ExecutingDatestring行权执行日期
ItmRateint价内率
IsForcebool是否强制行权
Reasonstring拒绝原因(如有)
AccountIdlong账户 ID

示例

TigerRequest<OptionExerciseRecordResponse> request = new TigerRequest<OptionExerciseRecordResponse>()
{
    ApiMethodName = TradeApiService.OPTION_EXERCISE_RECORD,
    ModelValue = new OptionExerciseRecordModel(
        page: 1,
        size: 20,
        account: config.DefaultAccount
    )
};
OptionExerciseRecordResponse response = await tradeClient.ExecuteAsync(request);
Console.WriteLine($"itemCount={response.ItemCount} pageCount={response.PageCount}");
foreach (OptionExerciseRecordItem r in response.Items)
{
    Console.WriteLine($"id={r.Id} type={r.ExerciseType} status={r.Status}");
}

optionExerciseCancel 撤销行权申请

撤销尚未执行的行权申请。

请求模型

字段类型说明
Idlong行权申请记录 ID(从查询行权记录接口获取)
SecretKeystring机构账户交易员密钥

返回

OptionExerciseCancelResponse,包含 Success (bool) 字段。

示例

TigerRequest<OptionExerciseCancelResponse> request = new TigerRequest<OptionExerciseCancelResponse>()
{
    ApiMethodName = TradeApiService.OPTION_EXERCISE_CANCEL,
    ModelValue = new OptionExerciseCancelModel(
        id: recordId,
        account: config.DefaultAccount
    )
};
OptionExerciseCancelResponse response = await tradeClient.ExecuteAsync(request);
Console.WriteLine(response.Success ? "撤销成功" : "撤销失败");