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())
执行结果:
