Skip to content

Latest commit

History

1,032 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

TigerOpen Java SDK

Maven CentralLicenseJava

老虎证券 OpenAPI Java SDK — 行情、交易、账户、推送一站式接入
Tiger Brokers OpenAPI Java SDK — Market data, trading, account & push in one package

中文 | English


中文文档

目录

简介

TigerOpen Java SDK 是老虎证券开放平台的官方 Java SDK,为个人开发者和机构客户提供完整的证券交易接口服务:

  • 行情数据 — 股票/期权/期货实时行情、K 线、逐笔成交、盘口深度
  • 交易服务 — 下单、改单、撤单,支持市价/限价/止损/跟踪止损/算法订单 (TWAP/VWAP)
  • 账户管理 — 资产查询、持仓管理、成交记录
  • 实时推送 — WebSocket 行情推送、订单状态、持仓与资产变动

开通老虎证券账户并入金后即可免费使用 OpenAPI。

支持市场

市场股票/ETF期权期货窝轮/牛熊证
美国
香港
新加坡
澳大利亚

安装

Java 8+

Maven(推荐)

pom.xml 中添加依赖:

<dependency>
<groupId>io.github.tigerbrokers</groupId>
<artifactId>openapi-java-sdk</artifactId>
<version>2.5.0</version>
</dependency>

如无法下载,可添加仓库源:

<repositories>
<repository>
<id>sonatype-public</id>
<name>sonatype-public</name>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
</repositories>

Gradle

dependencies {
implementation 'io.github.tigerbrokers:openapi-java-sdk:2.5.0'
}

从源码构建

git clone https://github.com/tigerfintech/openapi-java-sdk.git
cd openapi-java-sdk
mvn clean install

快速开始

1. 注册开发者

前往 开发者信息页 注册并获取:

  • tiger_id — 开发者 ID
  • private_key — RSA 私钥(Java SDK 仅支持 PKCS#8 格式,即 BEGIN PRIVATE KEY
  • account — 交易账户号

机构用户请访问 机构账户中心 完成开通流程,还需获取 secret_key

2. 配置

下载 tiger_openapi_config.properties 并放到本地目录:

private_key_pk8=your_pkcs8_private_key
tiger_id=your_tiger_id
account=your_account
license=TBHK
env=PROD
# 机构用户额外配置# secret_key=your_secret_key

代码初始化:

importcom.tigerbrokers.stock.openapi.client.config.ClientConfig;
importcom.tigerbrokers.stock.openapi.client.https.client.TigerHttpClient;
publicclassTigerClientConfig {
publicstaticClientConfigclientConfig = ClientConfig.DEFAULT_CONFIG;
publicstaticTigerHttpClientclient;
static {
// 配置文件所在目录clientConfig.configFilePath = "/path/to/config/dir";
// clientConfig.secretKey = "your_secret_key"; // 机构账号必填client = TigerHttpClient.getInstance().clientConfig(clientConfig);
}
}

3. 查询行情

importcom.tigerbrokers.stock.openapi.client.https.request.quote.QuoteKlineRequest;
importcom.tigerbrokers.stock.openapi.client.https.response.quote.QuoteKlineResponse;
importcom.tigerbrokers.stock.openapi.client.struct.enums.KType;
importjava.util.Arrays;
QuoteKlineRequestrequest = QuoteKlineRequest
.newRequest(Arrays.asList("AAPL"), KType.day, "2024-01-01", "2024-12-31")
.withLimit(100);
QuoteKlineResponseresponse = client.execute(request);
if (response.isSuccess()) {
System.out.println(response.getKlineItems());
} else {
System.out.println("Error: " + response.getMessage());
}

逐笔成交 cond 字段说明

trade_tick 接口和 push 层返回的 cond 字段已由 SDK 转换为可读字符串,含义如下:

美股(US)

含义
US_REGULAR_SALE常规交易(Regular Sale)
US_BUNCHED_TRADE批量交易(Bunched Trade)
US_CASH_TRADE现金交易(Cash Trade)
US_INTERMARKET_SWEEP跨市场交易(Intermarket Sweep)
US_BUNCHED_SOLD_TRADE批量卖出(Bunched Sold Trade)
US_PRICE_VARIATION_TRADE离价交易(Price Variation Trade)
US_ODD_LOT_TRADE碎股交易(Odd Lot Trade)
US_RULE_127_OR_155_TRADE纽交所第 127/155 条交易
US_SOLD_LAST延迟交易(Sold Last)
US_MARKET_CENTER_CLOSE_PRICE中央收市价(Market Center Close Price)
US_NEXT_DAY_TRADE隔日交易(Next Day Trade)
US_MARKET_CENTER_OPENING_TRADE中央开盘价交易(Market Center Opening Trade)
US_PRIOR_REFERENCE_PRICE前参考价(Prior Reference Price)
US_MARKET_CENTER_OPEN_PRICE中央开盘价(Market Center Open Price)
US_SELLER卖方(Seller)
US_FORM_T盘前盘后交易(Form T)
US_EXTENDED_TRADING_HOURS延长交易时段(Extended Trading Hours)
US_CONTINGENT_TRADE合单交易(Contingent Trade)
US_AVERAGE_PRICE_TRADE均价交易(Average Price Trade)
US_CROSS_TRADE跨市场交易(Cross Trade)
US_SOLD_OUT_OF_SEQUENCE场外售出(Sold Out of Sequence)
US_DERIVATIVELY_PRICED衍生工具定价(Derivatively Priced)
US_QUALIFIED_CONTINGENT_TRADE合单交易(Qualified Contingent Trade)

港股(HK)

含义
HK_AUTOMATCH_NORMAL自动对盘(Automatch Normal)
HK_ODD_LOT_TRADE碎股交易(Odd Lot Trade)
HK_AUCTION_TRADE竞价交易(Auction Trade)
HK_OVERSEAS_TRADE场外交易(Overseas Trade)
HK_LATE_TRADE_OFF_EXCHG开市前成交(Late Trade Off Exchange)
HK_NON_DIRECT_OFF_EXCHG_TRADE非自动对盘(Non-Direct Off Exchange Trade)
HK_DIRECT_OFF_EXCHG_TRADE同券商自动对盘(Direct Off Exchange Trade)
HK_AUTOMATIC_INTERNALIZED同券商非自动对盘(Automatic Internalized)

4. 下单交易

importcom.tigerbrokers.stock.openapi.client.https.domain.contract.item.ContractItem;
importcom.tigerbrokers.stock.openapi.client.https.request.trade.TradeOrderRequest;
importcom.tigerbrokers.stock.openapi.client.https.response.trade.TradeOrderResponse;
importcom.tigerbrokers.stock.openapi.client.struct.enums.ActionType;
ContractItemcontract = ContractItem.buildStockContract("AAPL", "USD");
TradeOrderRequestrequest = TradeOrderRequest.buildLimitOrder(contract, ActionType.BUY, 1, 150.0);
TradeOrderResponseresponse = client.execute(request);
System.out.println(response.isSuccess() ? "下单成功" : "下单失败: " + response.getMessage());

5. 实时推送

实现 ApiComposeCallback 接口定义回调:

importcom.tigerbrokers.stock.openapi.client.config.ClientConfig;
importcom.tigerbrokers.stock.openapi.client.socket.WebSocketClient;
importcom.tigerbrokers.stock.openapi.client.socket.data.pb.QuoteBasicData;
importcom.tigerbrokers.stock.openapi.client.socket.ApiComposeCallback;
importjava.util.HashSet;
// 实现回调接口ApiComposeCallbackcallback = newDefaultApiComposeCallback() {
@OverridepublicvoidquoteChange(QuoteBasicDatadata) {
System.out.println("行情变动: " + data.getSymbol() + " " + data.getLatestPrice());
}
};
ClientConfigconfig = ClientConfig.DEFAULT_CONFIG;
config.configFilePath = "/path/to/config/dir";
WebSocketClientwsClient = WebSocketClient.getInstance()
.clientConfig(config)
.apiComposeCallback(callback);
wsClient.connect();
// 订阅股票行情HashSet<String> symbols = newHashSet<>();
symbols.add("AAPL");
symbols.add("TSLA");
wsClient.subscribeQuote(symbols);

示例代码

更多示例代码请参考 src/test/java/ 目录。

文档与支持

License

MIT License


English Documentation

Table of Contents

Introduction

TigerOpen Java SDK is the official Java SDK for Tiger Brokers' Open Platform, providing developers and institutional clients with comprehensive securities trading interfaces:

  • Market Data — Real-time quotes, candlesticks, tick data, order book depth for stocks, options & futures
  • Trading — Place, modify, cancel orders; supports market/limit/stop/trailing-stop/algo orders (TWAP/VWAP)
  • Account Management — Asset queries, position tracking, transaction history
  • Real-time Push — WebSocket streaming for quotes, order status, position & asset changes

OpenAPI is free to use after opening and funding a Tiger Brokers account.

Supported Markets

MarketStocks/ETFsOptionsFuturesWarrants/CBBCs
US
Hong Kong
Singapore
Australia

Installation

Java 8+

Maven (Recommended)

Add to pom.xml:

<dependency>
<groupId>io.github.tigerbrokers</groupId>
<artifactId>openapi-java-sdk</artifactId>
<version>2.5.0</version>
</dependency>

Gradle

dependencies {
implementation 'io.github.tigerbrokers:openapi-java-sdk:2.5.0'
}

Build from Source

git clone https://github.com/tigerfintech/openapi-java-sdk.git
cd openapi-java-sdk
mvn clean install

Quick Start

1. Register as a Developer

Go to the Developer Portal to obtain:

  • tiger_id — Developer ID
  • private_key — RSA private key (Java SDK requires PKCS#8 format, i.e. BEGIN PRIVATE KEY)
  • account — Trading account number

Institutional users: visit the Institution Center to complete onboarding and obtain a secret_key.

2. Configuration

Download tiger_openapi_config.properties and place it in a local directory:

private_key_pk8=your_pkcs8_private_key
tiger_id=your_tiger_id
account=your_account
license=TBHK
env=PROD
# Institutional users only# secret_key=your_secret_key

Initialize the client:

importcom.tigerbrokers.stock.openapi.client.config.ClientConfig;
importcom.tigerbrokers.stock.openapi.client.https.client.TigerHttpClient;
publicclassTigerClientConfig {
publicstaticClientConfigclientConfig = ClientConfig.DEFAULT_CONFIG;
publicstaticTigerHttpClientclient;
static {
clientConfig.configFilePath = "/path/to/config/dir";
// clientConfig.secretKey = "your_secret_key"; // required for institutional accountsclient = TigerHttpClient.getInstance().clientConfig(clientConfig);
}
}

3. Query Market Data

importcom.tigerbrokers.stock.openapi.client.https.request.quote.QuoteKlineRequest;
importcom.tigerbrokers.stock.openapi.client.https.response.quote.QuoteKlineResponse;
importcom.tigerbrokers.stock.openapi.client.struct.enums.KType;
importjava.util.Arrays;
QuoteKlineRequestrequest = QuoteKlineRequest
.newRequest(Arrays.asList("AAPL"), KType.day, "2024-01-01", "2024-12-31")
.withLimit(100);
QuoteKlineResponseresponse = client.execute(request);
if (response.isSuccess()) {
System.out.println(response.getKlineItems());
} else {
System.out.println("Error: " + response.getMessage());
}

4. Place Orders

importcom.tigerbrokers.stock.openapi.client.https.domain.contract.item.ContractItem;
importcom.tigerbrokers.stock.openapi.client.https.request.trade.TradeOrderRequest;
importcom.tigerbrokers.stock.openapi.client.https.response.trade.TradeOrderResponse;
importcom.tigerbrokers.stock.openapi.client.struct.enums.ActionType;
ContractItemcontract = ContractItem.buildStockContract("AAPL", "USD");
TradeOrderRequestrequest = TradeOrderRequest.buildLimitOrder(contract, ActionType.BUY, 1, 150.0);
TradeOrderResponseresponse = client.execute(request);
System.out.println(response.isSuccess() ? "Order placed" : "Failed: " + response.getMessage());

5. Real-time Push

Implement the ApiComposeCallback interface to handle events:

importcom.tigerbrokers.stock.openapi.client.config.ClientConfig;
importcom.tigerbrokers.stock.openapi.client.socket.WebSocketClient;
importcom.tigerbrokers.stock.openapi.client.socket.data.pb.QuoteBasicData;
importjava.util.HashSet;
ApiComposeCallbackcallback = newDefaultApiComposeCallback() {
@OverridepublicvoidquoteChange(QuoteBasicDatadata) {
System.out.println("Quote: " + data.getSymbol() + " @ " + data.getLatestPrice());
}
};
ClientConfigconfig = ClientConfig.DEFAULT_CONFIG;
config.configFilePath = "/path/to/config/dir";
WebSocketClientwsClient = WebSocketClient.getInstance()
.clientConfig(config)
.apiComposeCallback(callback);
wsClient.connect();
HashSet<String> symbols = newHashSet<>();
symbols.add("AAPL");
symbols.add("TSLA");
wsClient.subscribeQuote(symbols);

Examples

More examples are available in the src/test/java/ directory.

Documentation & Support

License

MIT License

About

No description, website, or topics provided.

Resources

Stars

14 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages