Skip to content

tigerfintech/openapi-java-sdk

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,016 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TigerOpen Java SDK

Maven Central License Java

老虎证券 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

代码初始化:

import com.tigerbrokers.stock.openapi.client.config.ClientConfig;
import com.tigerbrokers.stock.openapi.client.https.client.TigerHttpClient;

public class TigerClientConfig {
    public static ClientConfig clientConfig = ClientConfig.DEFAULT_CONFIG;
    public static TigerHttpClient client;

    static {
        // 配置文件所在目录
        clientConfig.configFilePath = "/path/to/config/dir";
        // clientConfig.secretKey = "your_secret_key"; // 机构账号必填
        client = TigerHttpClient.getInstance().clientConfig(clientConfig);
    }
}

3. 查询行情

import com.tigerbrokers.stock.openapi.client.https.request.quote.QuoteKlineRequest;
import com.tigerbrokers.stock.openapi.client.https.response.quote.QuoteKlineResponse;
import com.tigerbrokers.stock.openapi.client.struct.enums.KType;
import java.util.Arrays;

QuoteKlineRequest request = QuoteKlineRequest
    .newRequest(Arrays.asList("AAPL"), KType.day, "2024-01-01", "2024-12-31")
    .withLimit(100);

QuoteKlineResponse response = client.execute(request);
if (response.isSuccess()) {
    System.out.println(response.getKlineItems());
} else {
    System.out.println("Error: " + response.getMessage());
}

4. 下单交易

import com.tigerbrokers.stock.openapi.client.https.domain.contract.item.ContractItem;
import com.tigerbrokers.stock.openapi.client.https.request.trade.TradeOrderRequest;
import com.tigerbrokers.stock.openapi.client.https.response.trade.TradeOrderResponse;
import com.tigerbrokers.stock.openapi.client.struct.enums.ActionType;

ContractItem contract = ContractItem.buildStockContract("AAPL", "USD");
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder(contract, ActionType.BUY, 1, 150.0);

TradeOrderResponse response = client.execute(request);
System.out.println(response.isSuccess() ? "下单成功" : "下单失败: " + response.getMessage());

5. 实时推送

实现 ApiComposeCallback 接口定义回调:

import com.tigerbrokers.stock.openapi.client.config.ClientConfig;
import com.tigerbrokers.stock.openapi.client.socket.WebSocketClient;
import com.tigerbrokers.stock.openapi.client.socket.data.pb.QuoteBasicData;
import com.tigerbrokers.stock.openapi.client.socket.ApiComposeCallback;
import java.util.HashSet;

// 实现回调接口
ApiComposeCallback callback = new DefaultApiComposeCallback() {
    @Override
    public void quoteChange(QuoteBasicData data) {
        System.out.println("行情变动: " + data.getSymbol() + " " + data.getLatestPrice());
    }
};

ClientConfig config = ClientConfig.DEFAULT_CONFIG;
config.configFilePath = "/path/to/config/dir";

WebSocketClient wsClient = WebSocketClient.getInstance()
    .clientConfig(config)
    .apiComposeCallback(callback);

wsClient.connect();

// 订阅股票行情
HashSet<String> symbols = new HashSet<>();
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

Market Stocks/ETFs Options Futures Warrants/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:

import com.tigerbrokers.stock.openapi.client.config.ClientConfig;
import com.tigerbrokers.stock.openapi.client.https.client.TigerHttpClient;

public class TigerClientConfig {
    public static ClientConfig clientConfig = ClientConfig.DEFAULT_CONFIG;
    public static TigerHttpClient client;

    static {
        clientConfig.configFilePath = "/path/to/config/dir";
        // clientConfig.secretKey = "your_secret_key"; // required for institutional accounts
        client = TigerHttpClient.getInstance().clientConfig(clientConfig);
    }
}

3. Query Market Data

import com.tigerbrokers.stock.openapi.client.https.request.quote.QuoteKlineRequest;
import com.tigerbrokers.stock.openapi.client.https.response.quote.QuoteKlineResponse;
import com.tigerbrokers.stock.openapi.client.struct.enums.KType;
import java.util.Arrays;

QuoteKlineRequest request = QuoteKlineRequest
    .newRequest(Arrays.asList("AAPL"), KType.day, "2024-01-01", "2024-12-31")
    .withLimit(100);

QuoteKlineResponse response = client.execute(request);
if (response.isSuccess()) {
    System.out.println(response.getKlineItems());
} else {
    System.out.println("Error: " + response.getMessage());
}

4. Place Orders

import com.tigerbrokers.stock.openapi.client.https.domain.contract.item.ContractItem;
import com.tigerbrokers.stock.openapi.client.https.request.trade.TradeOrderRequest;
import com.tigerbrokers.stock.openapi.client.https.response.trade.TradeOrderResponse;
import com.tigerbrokers.stock.openapi.client.struct.enums.ActionType;

ContractItem contract = ContractItem.buildStockContract("AAPL", "USD");
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder(contract, ActionType.BUY, 1, 150.0);

TradeOrderResponse response = client.execute(request);
System.out.println(response.isSuccess() ? "Order placed" : "Failed: " + response.getMessage());

5. Real-time Push

Implement the ApiComposeCallback interface to handle events:

import com.tigerbrokers.stock.openapi.client.config.ClientConfig;
import com.tigerbrokers.stock.openapi.client.socket.WebSocketClient;
import com.tigerbrokers.stock.openapi.client.socket.data.pb.QuoteBasicData;
import java.util.HashSet;

ApiComposeCallback callback = new DefaultApiComposeCallback() {
    @Override
    public void quoteChange(QuoteBasicData data) {
        System.out.println("Quote: " + data.getSymbol() + " @ " + data.getLatestPrice());
    }
};

ClientConfig config = ClientConfig.DEFAULT_CONFIG;
config.configFilePath = "/path/to/config/dir";

WebSocketClient wsClient = WebSocketClient.getInstance()
    .clientConfig(config)
    .apiComposeCallback(callback);

wsClient.connect();

HashSet<String> symbols = new HashSet<>();
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

13 stars

Watchers

4 watching

Forks

Packages

 
 
 

Contributors

Languages