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

Q:python调用天软,返回none或返回错误结果    

  • A:
    可能原因有:
      1、天软客户端安装路径没有添加到系统环境变量中(特别要检查这项)
      2、配置完后python没有重启
      3、python脚本中采用了非gbk编码且包含中文字符
      4、python与天软位数不一致
      5、RemoteExecute和RemoteCallFunc调用TS函数时,参数传递错误或者缺少参数
      6、python和TS的运行权限不一致
    错误信息图片:

    解决办法:
    1、添加天软客户端安装目录到系统环境变量中
      具体步骤可参考:FAQ:Q:将TSL安装目录添加到系统环境变量中

    2、配置完成后python需要完全重启
     注意:是完全重新启动python才能生效

    3、python脚本中采用了非gbk编码且包含中文字符
      天软平台是gbk编码格式,执行串中不能存在中文及中文字符串。
      可将串在python中打印,然后复制到天软客户端进行执行测试,若客户端返回正常则串正常,否则会有相关报错信息,对应改动串即可。

    4、python与天软位数不一致
     python与天软客户端必须保持位数一致,比如python是64位的,则天软客户端也需要安装64位的,天软客户端各版本的安装包:FAQ:产品与下载
     若python是32位的,则天软客户端也应该装32位的,否则也会造成异常。

    5、RemoteExecute和RemoteCallFunc调用TS函数时,参数传递错误或者缺少参数
      参数类型的错误
      如:ts.RemoteCallFunc('TradeDetails',['2016-01-18','2016-01-18',0],{})
      参数类型为TDate类型,但没有使用字符串类型模块提供的EncodeDate转换日期类型。
      解决方法:使用TSLPy3.EncodeDate(2016,1,18)作为参数输入。
      范例:取个股交易明细
    import sys
    sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
    import TSLPy3 as ts
    import tsbytestostr as tr #把函数放在天软安装目录下后可以import
    t=ts.EncodeDate(2019,4,12)
    data=ts.RemoteCallFunc("TradeDetails",[t,t,0],{"StockID":"SZ000002"})
    result=tr.tsbytestostr(data)[1]
    print(result)

      缺少系统参数
      如:未在第三个参数中设置系统参数
      ts.RemoteCallFunc('TradeDetails', [ts.EncodeDate(2016,1,18),ts.EncodeDate(2016,1,18), 0],{})
      解决方法:添加所需的系统参数。
      例如:
       单个系统参数:{"StockID":"SH000001"}
       多个系统参数:{"StockID":"SH000001","Cycle":"日线"}
     
    系统参数名称  含义  例子
    StockID 当前股票代码"SH000001"
    CurrentDate当前日期TSLPy2.EncodeDate(2015,9,25)
    Cycle  周期"日线"
    bRate  复权方式0
    RateDay 复权基准日TSLPy2.EncodeDate(2015,9,25)
    Precision 显示精度4

      范例:取个股指定T日收盘价-调用天软函数
    import sys
    sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
    import TSLPy3 as ts
    t=ts.EncodeDate(2019,4,12)
    data=ts.RemoteCallFunc("close",[],{"StockID":"SZ000002","CurrentDate":t,"Cycle":"日线"})
    print(data)


    6、python和TS的运行权限不一致
    A:python与天软客户端安装在不同的盘中,可能会导致权限不一致的问题。
    可尝试全部用管理员权限启动或全部都不用管理员权限启动后再交互。
    B:python脚本下使用正常,但在spyder软件下使用返回none。
    可尝试用管理员权限启动spyder软件再进行交互。