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

Q:Python调天软取数范例01:行情数据的提取    

【简述】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
    t=ts.EncodeDate(2019,4,12)
    #取个股t日收盘价-执行语句串
    data=ts.RemoteExecute("return close();",{"StockID":"SZ000002","CurrentDate":t,"Cycle":"日线"})
    print(data)

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

    范例02:取个股截面数据:执行天软语句串

    import sys
    sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
    import TSLPy3 as ts
    import tsbytestostr #字符串批量转码
    #取个股截面数据-执行语句串
    s="return ``array('stockid':DefaultStockID(),'date':datetostr(sp_time()),'close':close(),'vol':vol,'amount':amount());"
    t=ts.EncodeDate(2019,4,12)
    data=ts.RemoteExecute(s,{"StockID":"SZ000002","CurrentDate":t,"Cycle":"日线"})
    print(tsbytestostr.tsbytestostr(data[1]))

    范例03:取个股时间序列数据

    方法一:取个股时间序列数据-执行语句串s1:nday用法
    import sys
    sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
    import tsbytestostr #字符串批量转码
    import TSLPy3 as ts
    from batch_encoding import Batch_Encoding
    s1="""
        setsysparam(pn_stock(),'SZ000002');//股票
        setsysparam(pn_cycle(),cy_day());//周期
        setsysparam(pn_date(),20190418T);//截止时间点
        n:=tradedays(20190410T,20190418T);//时间段内交易日数
        return nday(n,'date',datetostr(sp_time()),'close',close(),'vol',vol(),'amount',amount());
    """
    data=ts.RemoteExecute(s1,{})
    print(tsbytestostr.tsbytestostr(data[1]))

    方法二:取个股时间序列数据-执行语句串s2:markettable
    import sys
    sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
    import tsbytestostr #字符串批量转码
    import TSLPy3 as ts
    s2="return select ['date'],['close'],['vol'],['amount'] from markettable datekey 20190410T to 20190418T of 'SZ000002' end;"
    data=ts.RemoteExecute(s2,{"Cycle":"日线"})
    print(tsbytestostr.tsbytestostr(data[1]))

    方法三:取个股时间序列数据-调用天软函数->在天软中封装取数模型GetData_01(StockStr,begT,endT,cy)
    import sys
    sys.path.append('C:\Program Files\Tinysoft\Analyse.NET')
    import tsbytestostr #字符串批量转码
    import TSLPy3 as ts
    StockStr='SH000001'
    begT=ts.EncodeDate(2019,4,10)
    endT=ts.EncodeDate(2019,4,18)
    cy='日线'
    data=ts.RemoteCallFunc("GetData_01",[StockStr,begT,endT,cy],{})
    print(tsbytestostr.tsbytestostr(data[1]))

    范例04:取组合截面数据

    方法一:取组合截面数据-执行天软语句串
    import sys
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    tsstr="""
    setsysparam(pn_cycle(),cy_day());
    a:=array('SZ000001','SH600000','SH603967','SZ000333');
    t:=select ['StockID'],datetostr(['date']) as 'date',['open'],['high'],['low'],['close'] from markettable datekey 20190507T to 20190507T+0.999 of a end;
    return t;
    """
    data= ts.RemoteExecute(tsstr,{})
    print(data[1])

    方法二:取组合截面数据-调用天软函数->在天软中封装取数模型GetData_02(StockStr,EndTime,cy,rate,rateday)
    import sys
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    data= ts.RemoteCallFunc('GetData_02',['SZ000001,SH600000,SH603967,SZ000333',ts.EncodeDate(2019,5,7),"日线",0,-1],{})
    print(data[1])

    范例05:取组合时间序列数据

    方法一:取组合时间序列数据-执行天软语句串s1:Nday
    import sys
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    tsstr="""
    SetSysParam(pn_date(),20190507T);  //设置当前时间
    SetSysParam(pn_cycle(),cy_day());  //设置系统周期
    t:=array();
    a:=array('SZ000001','SH600000','SH603967','SZ000333');
    for i:=0 to length(a)-1 do
    begin
        setsysparam(pn_stock(),a[i]);
        t&=Nday(5,'date',datetostr(sp_time()),  //&的作用相当于union--将数组纵向合并
               'open',open(),
               'high',high(),
               'low',low(),
               'close',close());
    end
    return t;
    """
    data= ts.RemoteExecute(tsstr,{})
    print(data[1])

    方法二:取组合时间序列数据-执行天软语句串s2:Markettable
    import sys
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    tsstr="""
    SetSysParam(pn_cycle(),cy_day());  //设置系统周期
    a:=array('SZ000001','SH600000','SH603967','SZ000333');
    t:=select ['StockID'],datetostr(['date']) as 'date',['open'],['high'],['low'],['close'] from markettable datekey 20190429T to 20190507T+0.999 of  a end;
    return t;
    """
    data= ts.RemoteExecute(tsstr,{})
    print(data[1])

    方法三:取组合时间序列数据-调用天软函数->在天软中封装取数模型GetData_03(StockStr,begt,endt,cy,rate,rateday)
    import sys
    sys.path.append("C:/program files/Tinysoft/Analyse.NET")
    import TSLPy3 as ts
    data= ts.RemoteCallFunc('GetData_03',['SZ000001,SH600000,SH603967,SZ000333',ts.EncodeDate(2019,4,29),ts.EncodeDate(2019,5,7),"日线",0,-1],{})
    print(data[1])