FAQ > 金融建模 > 第三方交互 > Python

Q:Python调pyTSL接口取数范例02:基本面数据的提取    

简述

1.在进行交互取数前,需要做相关配置,操作请查看文档:FAQ:天软pyTSL接口
2.天软数据字典:FAQ:天软数据字典

  • A:根据pyTSL提供的两个取数接口(exec,call)从以下三个维度提供实现范例,用户可根据需求参考相关范例:
    1.取证券基本属性信息(一般只有唯一记录)
    2.取证券指定日基本信息(与日期有关存在多个记录)
    3.取证券基本信息表(整表数据)
    实现一:取证券基本属性信息
    参考模型:FAQ:Base
    范例01:exec接口取数
    比如:获取股票SZ000002的上市日
    import sys
    import pyTSL as ts
    c = ts.Client("user", "password", "tsl.tinysoft.com.cn", 443)#user 为天软账号, password 为账号密码
    lg=c.login()
    if lg != 1:
      print("登陆天软服务器失败:",c.last_error())
      sys.exit()
    else:
      print("登陆天软服务器成功")
    tsl = '''
    SetSysParam(pn_stock(),'SZ000002');
    return base(12017);
    '''
    r = c.exec(tsl)
    if r.error() !=0:
      print(r.message())
    else:
      print(r.value())

    执行结果:

    范例02:call接口取数
    比如:获取可转债SH110030的正股代码
    import sys
    import pyTSL as ts
    c = ts.Client("user", "password", "tsl.tinysoft.com.cn", 443)#user 为天软账号, password 为账号密码
    lg=c.login()
    if lg != 1:
      print("登陆天软服务器失败:",c.last_error())
      sys.exit()
    else:
      print("登陆天软服务器成功")
    tsl = '''
    function get_data(stock);
    begin
     setsysparam(pn_stock(),stock);
     return base(502038);
    end
    '''
    r = c.call('get_data',"SH110030",code=tsl)
    if r.error() !=0:
      print(r.message())
    else:
      print(r.value())

    执行结果:

    实现二:取证券指定日基本信息
    参考模型:FAQ:Report
    范例03:exec接口取数
    比如:获取基金OF000001在20250114日的单位净值
    import sys
    import pyTSL as ts
    c = ts.Client("user", "password", "tsl.tinysoft.com.cn", 443)#user 为天软账号, password 为账号密码
    lg=c.login()
    if lg != 1:
      print("登陆天软服务器失败:",c.last_error())
      sys.exit()
    else:
      print("登陆天软服务器成功")
    tsl = '''
      setsysparam(pn_stock(),'OF000001');
      return report(328003,20250114);
    '''
    r = c.exec(tsl)
    if r.error() !=0:
      print(r.message())
    else:
      print(r.value())

    执行结果:

    范例04:call接口取数
    比如:获取股票SZ000002在2022年的分红红利比数据
    import sys
    import pyTSL as ts
    c = ts.Client("user", "password", "tsl.tinysoft.com.cn", 443)#user 为天软账号, password 为账号密码
    lg=c.login()
    if lg != 1:
      print("登陆天软服务器失败:",c.last_error())
      sys.exit()
    else:
      print("登陆天软服务器成功")
    tsl = '''
    function get_data(stock,rdate);
    begin
     setsysparam(pn_stock(),stock);
     return report(18007,rdate);
    end
    '''
    #调用接口执行交互代码
    r = c.call('get_data','SZ000002',20221231,code=tsl)
    if r.error() !=0:
      print(r.message())
    else:
      print(r.value())

    执行结果:

    实现三:取证券基本信息表
    参考模型:FAQ:INFOTABLE
    范例05:exec接口取数
    比如:获取SZ000002截止20250115所有的分红送股数据
    import sys
    import pyTSL as ts
    c = ts.Client("user", "password", "tsl.tinysoft.com.cn", 443)#user 为天软账号, password 为账号密码
    lg=c.login()
    if lg != 1:
      print("登陆天软服务器失败:",c.last_error())
      sys.exit()
    else:
      print("登陆天软服务器成功")
    tsl = '''
    stock:="SZ000002";
    rdate:=20250115;
    return select * from infotable 18 of stock where ["截止日"]<=rdate end;
    '''
    #调用接口执行交互代码
    r = c.exec(tsl)
    if r.error() !=0:
      print(r.message())
    else:
      print(r.dataframe())

    执行结果:

    范例06:call接口取数
    比如:获取IF期货截止20250115主力合约的调整记录
    import sys
    import pyTSL as ts
    c = ts.Client("user", "password", "tsl.tinysoft.com.cn", 443)#user 为天软账号, password 为账号密码
    lg=c.login()
    if lg != 1:
      print("登陆天软服务器失败:",c.last_error())
      sys.exit()
    else:
      print("登陆天软服务器成功")
    tsl = '''
    function get_data(zlid,rdate);
    begin
    return select * from infotable 700 of zlid where ["调整日期"]<=rdate end;
    end
    '''
    #调用接口执行交互代码
    r = c.call('get_data','IF00',20250115,code=tsl)
    if r.error() !=0:
      print(r.message())
    else:
      print(r.dataframe())

    执行结果: