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

Q:Python调天软取数范例03:财务数据的提取    

简述
1、在进行交互取数前,需做相关的配置,其操作请查看文档:FAQ:2019-05-08-应用专题-第三方交互07:天软平台和PYTHON的交互
2、天软返回的数据为gkb编码,在python3及以上版本中,对汉字或字符串的返回需要进行转码操作。天软这里提供两种转码案例:
第一:调用专题文档中(上面天软平台和Python的交互文档中)提供的tsbytestostr转码范例函数进行转码。本文范例用此方式。
第二:#gbk转unicode处理方法Batch_Encoding请参考FAQ:Q:与python3交互中字符串转gbk的问题
  • 本页范例的文档版本可下载:附件:Python调天软取数应用范例.pdf
    范例中相关天软函数附件:附件:第三方交互取数建模.tslfunc
    python转码范例函数:附件:tsbytestostr.py

    范例01:取个股指定日的每股收益

    方法一:取个股的指定日的每股收益-执行天软语句串
    import sys
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    tsstr="""
    setsysparam(pn_stock(),'SZ000001');
    setsysparam(pn_date(),20190507T);
    newreport:=NewReportDateOfEndT2(20190507T); //获取指定日最新可以取得到的报告期
    return reportofall(9900000,newreport);
    """
    data= ts.RemoteExecute(tsstr,{})
    print(data[1])

    方法二:取个股的指定日的每股收益-调用天软函数->在天软中封装取数模型GetData_04(StockArr,begt,endt)
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    data= ts.RemoteCallFunc('GetData_04',['SZ000001',ts.EncodeDate(2019,5,7),ts.EncodeDate(2019,5,7)],{})
    print(tsbytestostr.tsbytestostr(data[1]))

    范例02:取组合指定日的每股收益-执行天软语句串

    方法一:取组合的指定日的每股收益-执行天软语句串
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    tsstr="""
     //每股收益 = 净利润/总股本
      stockarr:=array('SZ000001','SZ000002','SH600000','SH600004');
      day:=20190507T;
      setsysparam(pn_date(),day);
      r:=array();
      for i:=0 to length(stockarr)-1 do
      begin
       stk:=stockarr[i];
       setsysparam(pn_stock(),stk);
       newreport:=NewReportDateOfEndT2(day); //获取指定日最新可以取得到的报告期
       v1:=report(46078,newreport);   //获取指定报告期的归属于母公司所有者净利润
       v2:=StockTotalShares(day); //获取指定日的总股本
       r[i]['代码']:=stk;
       r[i]['日期']:=datetostr(day);
       r[i]['每股收益(计算)']:=RatioValue(v1,v2);
       r[i]['每股收益']:=reportofall(9900000,newreport);
      end
      return r;
    """
    data= ts.RemoteExecute(tsstr,{})
    print(tsbytestostr.tsbytestostr(data[1]))

    方法二:取组合的指定日的每股收益-调用天软函数->在天软中封装取数模型GetData_04(StockArr,begt,endt)
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    data= ts.RemoteCallFunc('GetData_04',['SZ000001;SZ000002;SH600000;SH600004',ts.EncodeDate(2019,5,7),ts.EncodeDate(2019,5,7)],{})
    print(tsbytestostr.tsbytestostr(data[1]))

    范例03:取个股一段时间的每股收益

    方法一:取个股一段时间的每股收益-执行天软语句串
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    tsstr="""
      //每股收益 = 净利润/总股本
      setsysparam(pn_stock(),'SZ000001');
      datearr:=stockTradeDayQk(20190425T,20190507T);
      r:=array();
      for i:=0 to length(datearr)-1 do
      begin
       day:=datearr[i];
       setsysparam(pn_date(),day);
       newreport:=NewReportDateOfEndT2(day); //获取指定日最新可以取得到的报告期
       v1:=report(46078,newreport);   //获取指定报告期的归属于母公司所有者净利润
       v2:=StockTotalShares(day); //获取指定日的总股本
       r[i]['日期']:=datetostr(day);
       r[i]['每股收益(计算)']:=RatioValue(v1,v2);
       r[i]['每股收益']:=reportofall(9900000,newreport);
      end
      return r;
    """
    data= ts.RemoteExecute(tsstr,{})
    print(tsbytestostr.tsbytestostr(data[1]))

    方法二:取个股一段时间的每股收益-调用天软函数->在天软中封装取数模型GetData_04(StockArr,begt,endt)
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    data= ts.RemoteCallFunc('GetData_04',['SZ000001',ts.EncodeDate(2019,4,25),ts.EncodeDate(2019,5,7)],{})
    print(tsbytestostr.tsbytestostr(data[1]))

    范例04:取组合一段时间的每股收益

    方法一:取组合一段时间的每股收益-执行天软语句串
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    tsstr="""
     //每股收益 = 净利润/总股本
      stockarr:=array('SZ000001','SZ000002','SH600000','SH600004'); //将证券代码串转换为数组
      datearr:=spec(MarketTradeDayQk(20190425t,20190507t),'SH000001');//生成时间序列
      n:=0;
      r:=array();
      for i:=0 to length(stockarr)-1 do
      begin
       stk:=stockarr[i];
       setsysparam(pn_stock(),stk);
       for j:=0 to length(datearr)-1 do
       begin
        day:=datearr[j];
        setsysparam(pn_date(),day);
        newreport:=NewReportDateOfEndT2(day); //获取指定日最新可以取得到的报告期
        v1:=report(46078,newreport);   //获取指定报告期的归属于母公司所有者净利润
        v2:=StockTotalShares(day); //获取指定日的总股本
        r[n]['代码']:=stk;
        r[n]['日期']:=datetostr(day);
        r[n]['每股收益(计算)']:=RatioValue(v1,v2);
        r[n]['每股收益']:=reportofall(9900000,newreport);
        n++;
       end
      end
      return r;
    """
    data= ts.RemoteExecute(tsstr,{})
    print(tsbytestostr.tsbytestostr(data[1]))

    方法二:取组合一段时间的每股收益-调用天软函数->在天软中封装取数模型GetData_04(StockArr,begt,endt)
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    data= ts.RemoteCallFunc('GetData_04',['SZ000001;SZ000002;SH600000;SH600004',ts.EncodeDate(2019,4,25),ts.EncodeDate(2019,5,7)],{})
    print(tsbytestostr.tsbytestostr(data[1]))

    范例05:取个股的合并资产负债表数据

    方法一:取个股的合并资产负债表数据-执行天软语句串
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    tsstr="""
      stk:='SZ000001';
      end_:=20190331;
      setsysparam(pn_stock(),stk);
      return select * from infoarray(44) of stk where ['截止日']=end_ end;
    """
    data= ts.RemoteExecute(tsstr,{})
    print(tsbytestostr.tsbytestostr(data[1]))

    方法二:取个股的合并资产负债表数据-调用天软函数->在天软中封装取数模型GetData_05(Stock,ifAll):第二个参数为选择为:调整前/调整后/全部的选择
    import sys
    import tsbytestostr #字符串批量转码
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    data= ts.RemoteCallFunc('GetData_05',['SZ000001',1],{})
    print(tsbytestostr.tsbytestostr(data[1]))