准备工作

大约 6 分钟

环境要求

  • 操作系统要求:

    • Windows
    • MacOS
    • Linux
    • Solaris
  • 编程语言版本要求:C# 8.0 及以上, .NET 6.0 或者 .NET Core 3.1及以上

安装.NET

为获得最好的支持,减少兼容性问题,推荐安装 Visual Studio 2022 + .NET 6.0

安装最新版本的.NET:

  1. 访问官方网站下载页面: https://dotnet.microsoft.com/download/dotnet-coreopen in new window
  2. 注意需根据操作系统选择对应的安装包,下载安装包并按提示安装。确认版本号:dotnet --version

获取Tiger Open API C# SDK

方式1:使用Nuget代码仓库

在命令行中使用dotnet命令下载或者升级sdk版本

$ dotnet add package TigerOpenAPI --version 1.1.0

方式2:Github代码仓库

SDK项目的源代码在Github代码仓库上发布

项目的github地址为:

https://github.com/tigerfintech/openapi-cs-sdk/open in new window

您可选择从代码仓库中Clone/下载源代码并手动打包发布,其中TigerOpenAPIopen in new window为SDK源码,Sampleopen in new window为接口使用示例代码

安装IDE

我们推荐使用微软的Visual Studio作为集成开发环境

官方下载地址: https://visualstudio.microsoft.com/open in new window

注册开发者信息

使用API之前请首先开通权限, 个人用户访问API官网登记开发者身份open in new window,机构用户访问 机构账户中心open in new window推荐使用Chrome浏览器打开

注意:开通Open API需要在老虎开户并入金,同时会要求开发人员和用户签署API授权协议

随后需要在此页面中完成开发者信息的登记,请填入并提交您的信息。

注册成功后您可在此页面中获取以下信息:

  • tigerId: 开放平台为每一位开发者分配的唯一ID,用来标识一个开发者,所有API接口的调用都会用到tigerId。
  • account: 用户的资金账号,在请求交易相关接口时需要用到资金账号。具体分为环球账号、综合账号与模拟账号,
    • 环球资金账号(Global):以大写字母U开头,如:U12300123,
    • 综合资金账号(Prime):为一串较短的数字(5到10位),如:51230321,
    • 模拟资金账号(Paper):17位数字,如:20191106192858300,

注册开发者信息成功后只会返回已成功入金的资金账号和模拟账号。如果用户的环球账号和综合账号都已成功入金,则都会返回。

开发者注册页面: 通过手机号和验证码注册即可。

开发者注册

开发者信息页面: 其中Tiger ID,实盘账户,模拟盘账号,牌照等信息需要在OpenAPI中用到。

开发者信息

注意:需要把下图中的私钥部分保存到本地并妥善保管以防泄露,如发现泄露请及时更新。 私钥不会在老虎服务端保存,用户在刷新页面前需要保存好。页面刷新后该私钥会自动消失,如私钥未保存好,可以通过重新生成按钮进行替换。

重新生成后,下载tiger_openapi_config.properties文件到本地。把tiger_openapi_config.properties文件拷贝到ClientConfig.DEFAULT_CONFIG.configFilePath配置的目录下。

RSA密钥

tiger_openapi_config.properties文件内容格式如下,account为默认账号,可以在实盘资金账号和模拟盘账号之间替换。

private_key_pk1=MIICXgIBAAKBgQCodM4fM5cz+tj8SUuxxSbSMFxNHM23hftjAuXr9THweyFtTmA/mxwo9HYEhYjxCgYAJt78xbzw7aiKu+pI45O8il8ns6UL3mT59QlCKu0+FZmF2g54teyqoiol71xcM096D3ss0oJzKGt+btvlBzdcrXM6+pZqbK14ASWGE4uBEQIDAQABAoGAX5iBjFVTngzhbDIQAZ73C9qj1qLc3yPqZ+KyJbgskeLeMlCC8DWOwnMQMjqxXtAoXZexfVKdiT/lIG3JY3m6URzfYwJt5VUD9LeIcyPxuj7Eg2vxlZwJ6slT7DQ6LJCbUe1PUDlKKXYe/wEUNJ3dEJ/eFEhR8vNyFlW8DJj+az0CQQDhQwYUZIcq+9WDcSen5Sm5oS765aMAyWcOdkpokau+fZ/H9NwT0U+jaEHyswZMJBTDJ42iS8HV0MuGdtLJ7JzHAkEAv3Fq1AHHJ1Tyxtf/VWHBRfx304NFlDX87Ji7uyv1t+05ZYVT0U8Q5CUPdBA3QexMBKd1i6BXUH/xOY5aX+UrZwJBAKR7ej79wK0kQh2+TESOUs9W4KUXdNSoO3YV7fM5Gvz3Yepx4xkdZ1dcU3tSObDzT63IfeUaCCmGUnaW4QfMnBUCQQCMOsK6mrbLe7D9sBgK7bkJz73iA+UChG1IzTOuDaxGVpDVaU0VI2pHA1KHfJ1NP44LVrKGXSO4Bo+mzjwqxA3/AkEApA8roUKXtKTqC2rb8hs5AscMpHFUl7ZbVeKX14gAg9QPWxkh8BcB1dljAsrp7irEtq4VezD2Cf40b52Fcx+pvA==
private_key_pk8=MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAKh0zh8zlzP62PxJS7HFJtIwXE0czbeF+2MC5ev1MfB7IW1OYD+bHCj0dgSFiPEKBgAm3vzFvPDtqIq76kjjk7yKXyezpQveZPn1CUIq7T4VmYXaDni17KqiKiXvXFwzT3oPeyzSgnMoa35u2+UHN1ytczr6lmpsrXgBJYYTi4ERAgMBAAECgYBfmIGMVVOeDOFsMhABnvcL2qPWotzfI+pn4rIluCyR4t4yUILwNY7CcxAyOrFe0Chdl7F9Up2JP+UgbcljebpRHN9jAm3lVQP0t4hzI/G6PsSDa/GVnAnqyVPsNDoskJtR7U9QOUopdh7/ARQ0nd0Qn94USFHy83IWVbwMmP5rPQJBAOFDBhRkhyr71YNxJ6flKbmhLvrlowDJZw52SmiRq759n8f03BPRT6NoQfKzBkwkFMMnjaJLwdXQy4Z20snsnMcCQQC/cWrUAccnVPLG1/9VYcFF/HfTg0WUNfzsmLu7K/W37TllhVPRTxDkJQ90EDdB7EwEp3WLoFdQf/E5jlpf5StnAkEApHt6Pv3ArSRCHb5MRI5Sz1bgpRd01Kg7dhXt8zka/Pdh6nHjGR1nV1xTe1I5sPNPrch95RoIKYZSdpbhB8ycFQJBAIw6wrqatst7sP2wGArtuQnPveID5QKEbUjNM64NrEZWkNVpTRUjakcDUod8nU0/jgtWsoZdI7gGj6bOPCrEDf8CQQCkDyuhQpe0pOoLatvyGzkCxwykcVSXtltV4pfXiACD1A9bGSHwFwHV2WMCyunuKsS2rhV7MPYJ/jRvnYVzH6m8
tiger_id=20150001
account=12345678
license=TBHK
env=PROD

Token(可选)

TBHK牌照(其他牌照用户可以忽略),需要生成token,token失效后需重新生成,并下载tiger_openapi_token.properties文件到本地。把tiger_openapi_token.properties文件拷贝到ClientConfig.DEFAULT_CONFIG.configFilePath配置的目录下。Token

token的有效期为15天,如果失效后需要到开发者信息页面重新生成并导出新的token文件。在失效前,可以通过刷新token的API接口续期。sdk默认实现:每5天刷新一次token,刷新成功后会同时更新本地tiger_openapi_token.properties文件,可配置自动刷新周期的天数(RefreshTokenIntervalDays)和具体时间(RefreshTokenTime)。如需自行刷新token,请配置tigerConfig.isAutoRefreshToken = false。

额外配置,非必须:

信息是否必填说明
IP白名单只有在白名单内的IP才可以访问API接口,多个IP间以 “;” 分隔,非必填
回调URL用户应用程序的回调地址,可以用于接收订单、持仓、资产的变更消息。非必填,用户也可以直接通过SDK提供的订阅接口接收回调消息

购买行情(可选)

我们免费提供延迟行情接口,但实时行情需要另外购买。Open API的行情权限独立与APP与PC端,如果您已经购买了APP或PC行情,也需要另外购买Open API的行情权限以获得实时数据。具体购买方法如下:

个人客户

有两种购买方式:

1、登录个人中心open in new window购买行情

行情购买

2、在手机端APP Tiger Trade APP - 我的 - 行情权限 - OpenAPI权限 中进行购买

机构客户

机构中心-行情权限 中进行购买

行情购买

API 相关配置

在正式请求接口前,需要完成API接口调用的相关配置。具体配置信息(包括tigerId,account,license,privateKey等配置,优先使用tiger_openapi_config.properties文件的值)可以在开发者信息页面查看。

对于港股牌照,tiger_openapi_token.properties 是必须的,此文件也需放入ConfigFilePath指定的路径下。

public class Demo
{
  static QuoteClient quoteClient;
  static TradeClient tradeClient;
  static Demo() {
    // 设置日志文件目录. log file name: tiger_openapi.2023-02-22.log
    TigerConfig.LogDir = "/data0/logs/tiger-openapi-cs";
    // ApiLogger.DebugEnabled = true; //调试时开启debug级别日志

    // tiger config
    TigerConfig config = new TigerConfig()
    {
      // The tiger_openapi_config.properties file is stored in your local directory.
      ConfigFilePath = "/data0/tiger_config", // your local directory
      Language = Language.en_US,   // (optional) default is en_US
      TimeZone = CustomTimeZone.HK_ZONE  // (optional) default is HK_ZONE
      // IsSslSocket = true,         // default is true
      // AutoGrabPermission = true,   // (optional) default is true
      // FailRetryCounts = 2, // (optional) fail retry count, range:[1, 5],  default is 2
      // AutoRefreshToken = true,  // default is true, only support 'TBHK' license
      // RefreshTokenIntervalDays = 5,  // default is 5; refresh the token every 5 days
      // RefreshTokenTime = "12:30:00",  // default is empty, 格式为:HH:mm:ss
      // SecretKey = "xxxxxx"// 机构用户私钥
    };
    quoteClient = new QuoteClient(config);
    tradeClient = new TradeClient(config);
  }
}

配置说明:

  • TigerConfig.ConfigFilePath: tiger_openapi_config.properties文件和tiger_openapi_token.properties文件存放目录
  • TigerConfig.TigerId:开发者ID(tiger_openapi_config.properties文件配置优先)
  • TigerConfig.DefaultAccount:资金账号,可以填综合账号或者模拟账号(tiger_openapi_config.properties文件配置优先)
  • TigerConfig.PrivateKey:注册开发者信息时在页面上生成的RSA私钥(tiger_openapi_config.properties文件配置优先)
  • TigerConfig.SecretKey:是机构交易员密钥,如果是机构用户,需要配置该信息
  • TigerConfig.IsSslSocket:长连接是否使用SSL
  • TigerConfig.AutoGrabPermission:是否启动时为本设备抢占一次行情
  • TigerConfig.AutoRefreshToken:是否自动刷新token
  • TigerConfig.FailRetryCounts:API请求失败重试次数,最多不超过5次
  • TigerConfig.TimeZone:默认时区,请求参数时使用
  • TigerConfig.Language:默认语言,请求参数时使用

如上示例中的TigerConfig 和 QuoteClient、 TradeClient变量都可以配置成全局静态变量,放到单独的配置类中,在需要使用的地方直接引用即可。既可以方便调用,同时也可以降低开销。

上次编辑于: