准备工作

大约 8 分钟

环境要求

  • 操作系统要求:
    • Windows
    • MacOS
    • Linux
    • Solaris
  • 编程语言版本要求:Python 3.4及以上

安装Python

为获得最好的支持,减少兼容性问题,建议安装最新版本的Python。早于Python 3.4的版本可能不能正常运行。您可以在控制台中输入python3 -V来进行版本检查或验证安装

安装最新版本的Python

  1. 访问Python官方网站下载页面: https://www.python.org/downloads/open in new window

  2. 选择对应的操作系统,下载安装包并按提示安装

您还可以选择使用Anaconda等Python的发行版,可以直接访问Anaconda官方网站个人版下载页面:

https://www.anaconda.com/products/individualopen in new window

进行下载,下载完成后请运行安装包并按提示完成安装

安装Tiger Open API Python SDK

方式1:使用pip安装(推荐)

在终端(Terminal)或命令提示符(cmd)中输入以下命令:

pip3 install tigeropen

后续如需升级版本,可使用如下命令:

pip3 install tigeropen --upgrade

即可完成安装.

备注:
如果通过默认的pip官方源安装较慢,可选择指定其他速度较快的镜像源,比如:

pip install tigeropen -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip install tigeropen -i https://pypi.tuna.tsinghua.edu.cn/ --trusted-host pypi.tuna.tsinghua.edu.cn

方式2:Github

SDK项目的源代码同时在github上发布,项目的github地址为:

https://github.com/tigerfintech/openapi-python-sdkopen in new window

安装方法:

  1. 将项目clone到本地

  2. 运行目录下的setup.py: python3 setup.py install

方式3: Anaconda

conda install tigeropen

安装IDE

我们推荐使用pycharm作为集成开发环境

官方下载地址:

https://www.jetbrains.com/pycharm/download/open in new window

注册开发者信息

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

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

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

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

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

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

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

开发者注册

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

开发者信息

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

用户可根据不同SDK的调用需求保存相应类型的私钥,Java 与 Python SDK 使用的私钥格式不同,Java 使用的私钥为 PKCS#8 格式,Python 使用PKCS#1格式。若使用SDK遇到问题时,注意先检查私钥的格式是否正确。

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 props_path 配置的目录下。Token

token的有效期为15天,如果失效后需要到开发者信息页面重新生成并导出新的token文件。在失效前,可以通过刷新token的API接口续期。sdk默认实现:每24小时刷新一次token,刷新成功后会同时更新本地tiger_openapi_token.properties文件。如需自行刷新token,请配置client_config.token_refresh_duration = 0关闭自动刷新。

额外配置,非必须:

信息是否必填说明
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等)可以在开发者信息页面查看。

共有两种配置方式:

方式一

以查询行情为例,所有行情接口的操作都通过QuoteClient对象的成员方法实现,所以调用相关行情接口之前需要先初始化QuoteClient,具体实现方式如下:

需要先生成client_config对象,对应以下示例的 client_config = get_client_config() ,然后把该client_config对象传入QuoteClient,来初始化QuoteClient,再调用QuoteClient具体的方法即可。TradeClientPushClient 的初始化方式与此类似。

CAUTION

以下示例中的read_private_key('填写私钥PEM文件的路径') 对应的PEM文件需要自行生成。先把开发者页面中的 PKCS#1 格式的私钥复制到本地文件中,再把该文件的完整路径填入这里即可(包含文件名),例如路径:/data0/config/private_key.pem,在 private_key.pem中保存私钥即可。

from tigeropen.common.consts import (Language,        # 语言
                                Market,           # 市场
                                BarPeriod,        # k线周期
                                QuoteRight)       # 复权类型
from tigeropen.tiger_open_config import TigerOpenClientConfig
from tigeropen.common.util.signature_utils import read_private_key
from tigeropen.quote.quote_client import QuoteClient

def get_client_config():
    """
    https://quant.itigerup.com/#developer 开发者信息获取
    """
    client_config = TigerOpenClientConfig() 
    # 港股牌照需用 props_path 参数指定token路径,如 props_path='/Users/xxx/xxx/', 如不指定则取当前路径
    # client_config = TigerOpenClientConfig(props_path='.')
    client_config.private_key = read_private_key('填写私钥PEM文件的路径')
    client_config.tiger_id = '替换为tigerid'
    client_config.account = '替换为账户,建议使用模拟账户'
    client_config.language = Language.zh_CN  #可选,不填默认为英语'
    # client_config.timezone = 'US/Eastern' # 可选时区设置
    return client_config

# 调用上方定义的函数生成用户配置ClientConfig对象
client_config = get_client_config()

# 随后传入配置参数对象来初始化QuoteClient
quote_client = QuoteClient(client_config)

# 获取 00700 标的对应的行情数据
stock_price = quote_client.get_stock_briefs(['00700'])

方式二

使用配置文件。 在开发者网站导出配置文件 tiger_openapi_config.properties, 放入合适的系统路径,如 /Users/demo/props/ 然后将该路径填入TigerOpenClientConfig的 props_path 参数下(也可将配置文件放入程序的当前启动目录,sdk默认会取当前路径)。 使用这种方式,则不需要再代码中配置 tiger_id, account, private_key 等信息了。

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

from tigeropen.common.consts import (Language,        # 语言
                                Market,           # 市场
                                BarPeriod,        # k线周期
                                QuoteRight)       # 复权类型
from tigeropen.tiger_open_config import TigerOpenClientConfig
from tigeropen.common.util.signature_utils import read_private_key
from tigeropen.quote.quote_client import QuoteClient

def get_client_config():
    """
    https://quant.itigerup.com/#developer 开发者信息获取
    """
    # 港股牌照需用 props_path 参数指定token路径,如 '/Users/xxx/xxx/', 如不指定则取当前路径
    # 必须使用关键字参数指定 props_path
    client_config = TigerOpenClientConfig(props_path='/Users/demo/props/')
    return client_config

# 调用上方定义的函数生成用户配置ClientConfig对象
client_config = get_client_config()

ClientConfig 常用配置项介绍

各配置项可在 client_config = TigerOpenClientConfig() 实例化之后,通过client_config属性设置,如 client_config.timeout = 60

# 开发者信息(推荐使用 props_path 的方式配置开发者信息)
client_config.tiger_id = 1
client_config.account = '123456'
client_config.license = 'TBSG'
client_config.private_key = read_private_key('私钥路径')  # 需 from tigeropen.common.util.signature_utils import read_private_key
# 私钥也可填字符内容
client_config.private_key = 'MIICWwIBAAKBgQCSW+.....私钥内容'

# 日志级别及路径
client_config.log_level = logging.DEBUG  # 需 import logging
client_config.log_path = '/tmp/tigerapi.log'

# 语言
client_config.language = 'zh_CN'
# 时区(如果配置了时区,涉及有时间字符串参数的接口,将会按当作该时区的时间。SDK默认不设置时区,服务端会当北京时间处理)
client_config.timezone = 'US/Eastern'

# 接口超时时间
client_config.timeout = 15
# 超时重试设置
# 最长重试时间,单位秒
client_config.retry_max_time = 60
# 最多重试次数
client_config.retry_max_tries = 5

# 2FA token 刷新间隔, 单位秒。设置为0则不自动刷新
client_config.token_refresh_duration = 24 * 60 * 60
上次编辑于: