交易操作

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<PositionResponse> request = new TigerRequest<PositionResponse>()
{
    ApiMethodName = TradeApiService.POSITIONS,
    ModelValue = new PositionModel() { Account = config.DefaultAccount }
};
PositionResponse 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
};

期权下单

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

期货下单

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);

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

返回

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

示例

TigerRequest<OrdersResponse> request = new TigerRequest<OrdersResponse>()
{
    ApiMethodName = TradeApiService.ORDERS,
    ModelValue = new OrdersModel() { Account = config.DefaultAccount }
};
OrdersResponse 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<OrdersResponse> request = new TigerRequest<OrdersResponse>()
{
    ApiMethodName = TradeApiService.ACTIVE_ORDERS,
    ModelValue = new OrdersModel() { Account = config.DefaultAccount }
};
OrdersResponse response = await tradeClient.ExecuteAsync(request);

filledOrders 查询已成交订单

说明

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

示例

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

inactiveOrders 查询已撤销订单

说明

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

示例

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

orderTransactions 查询成交明细

说明

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

参数

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

示例

TigerRequest<TransactionsResponse> request = new TigerRequest<TransactionsResponse>()
{
    ApiMethodName = TradeApiService.ORDER_TRANSACTIONS,
    ModelValue = new TransactionModel() { Id = 12345 }
};
TransactionsResponse 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合约代码过滤

返回

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

示例

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

数据示例

返回数据:

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

assets 查询资产

说明

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

参数

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

返回

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

示例

TigerRequest<AssetResponse> request = new TigerRequest<AssetResponse>()
{
    ApiMethodName = TradeApiService.ASSETS,
    ModelValue = new AssetModel() { Account = config.DefaultAccount }
};
AssetResponse 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 AssetModel() { 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开始日期,格式 'YYYYMMDD'
EndDatestring结束日期,格式 'YYYYMMDD'
Periodstring时间粒度:"1D" / "1W" / "1M"

示例

TigerRequest<AnalysisResponse> request = new TigerRequest<AnalysisResponse>()
{
    ApiMethodName = TradeApiService.ASSET_ANALYSIS,
    ModelValue = new AnalysisModel()
    {
        Account = config.DefaultAccount,
        StartDate = "20250101",
        EndDate = "20250331",
        Period = "1D"
    }
};
AnalysisResponse 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);