A:
根据pyTSL提供的三个取数接口(exec,call,query)从以下四个维度提供实现范例,用户可根据需求参考相关范例:
1.取个股指定时点的行情数据
2.取个股一段时间内的行情数据
3.取股票列表指定日行情数据
4.取股票列表一段时间内的行情数据
实现一:取个股指定时点的行情数据
范例01:exec接口取数
比如:提取万科A在2020-08-25日10点30分的价格及分钟线成交量
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'); //证券代码
setsysparam(pn_cycle(),cy_1m()); //周期-分钟线
endt:=20200825.1030T;
setsysparam(pn_date(),endt); //当前时间-当高频时需要注意添加时间
c:=close(); //收盘价
v:=vol();//分钟线成交量
return array(('日期时间':datetimetostr(endt),'收盘价':c,'成交量':v));
'''
#调用接口执行交互代码
r = c.exec(tsl)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
范例02:call接口取数范例
比如:提取万科A在2020-08-25日10点30分的价格及分钟线成交量
from datetime import datetime
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(endt);
begin
setsysparam(pn_stock(),'SZ000002'); //证券代码
setsysparam(pn_cycle(),cy_1m()); //周期-分钟线
setsysparam(pn_date(),endt); //当前时间-当高频时需要注意添加时间
c:=close(); //收盘价
v:=vol();//分钟线成交量
return array(('日期时间':datetimetostr(endt),'收盘价':c,'成交量':v));
end
'''
#调用接口执行交互代码
r = c.call('get_data',datetime(2020,8,25,10,30),code=tsl)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
范例03:query接口取数范例
比如:提取万科A在2020-08-25日10点30分的价格及分钟线成交量
from datetime import datetime
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("登陆天软服务器成功")
#调用接口执行交互代码
r = c.query(stock='SZ000002',
begin_time=datetime(2020,8,25,10,30),
end_time=datetime(2020,8,25,10,30),
cycle='1分钟线',
fields='date,close,vol'
)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
实现二:取个股一段时间内的行情数据
范例04:exec接口取数
比如:提取万科A在20250101-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 = '''
begt:=20250101t;
endt:=20250114t;
stock:='SZ000002';
setsysparam(pn_cycle(),cy_day()); //周期-日线
t:= select ['StockID'],['StockName'],datetimetostr(['date']) as 'date',['close'],
['vol'],['amount'],['buy1'],['bc1'],['sale1'],['sc1']
from Markettable datekey begt to endt of stock end;
return t;
'''
#调用接口执行交互代码
r = c.exec(tsl)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
范例05:call接口取数范例
比如:提取万科A在20250101-20250114每日的价格及成交量数据
from datetime import datetime
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,begt,endt);
begin
setsysparam(pn_cycle(),cy_day()); //周期-日线
t:= select ['StockID'],['StockName'],datetimetostr(['date']) as 'date',['close'],
['vol'],['amount'],['buy1'],['bc1'],['sale1'],['sc1']
from Markettable datekey begt to endt of stock end;
return t;
end
'''
#调用接口执行交互代码
r = c.call('get_data','SZ000002',datetime(2025,1,1),datetime(2025,1,14),code=tsl)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
范例06:query接口取数范例
比如:提取万科A在20250101-20250114每日的价格及成交量数据
from datetime import datetime
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("登陆天软服务器成功")
#调用接口执行交互代码
r = c.query(stock='SZ000002',
begin_time=datetime(2025,1,1),
end_time=datetime(2025,1,14),
cycle='日线',
fields='StockID,StockName,date,close,vol,amount,buy1,bc1,sale1,sc1'
)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
实现三:取股票列表指定日行情数据
比如:提取上证50成分股在20250114日的分钟线行情数据
范例07:exec接口取数
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 = '''
endt:=20250114t;
stocks:=getbkbydate("SH000016",endt);//上证50指定日成分股
setsysparam(pn_cycle(),cy_1m());//周期-分钟线
t:= select ['StockID'],['StockName'],datetimetostr(['date']) as 'date',['close'],
['vol'],['amount'],['buy1'],['bc1'],['sale1'],['sc1']
from Markettable datekey endt to endt+18/24 of stocks end;
return t;
'''
#调用接口执行交互代码
r = c.exec(tsl)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
范例08:call接口取数范例
比如:提取上证50成分股在20250114日的分钟线行情数据
from datetime import datetime
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("登陆天软服务器成功")
endt=datetime(2025,1,14)
#获取上证50指定日成分股
stocks = c.exec('return getbkbydate("SH000016",strtodatetime("{}"));'.format(endt)).value()
tsl = '''
function get_data(stocks,endt);
begin
setsysparam(pn_cycle(),cy_1m());//周期-分钟线
t:= select ['StockID'],['StockName'],datetimetostr(['date']) as 'date',['close'],
['vol'],['amount'],['buy1'],['bc1'],['sale1'],['sc1']
from Markettable datekey endt to endt+18/24 of stocks end;
return t;
end
'''
#调用接口执行交互代码
r = c.call('get_data',stocks,endt,code=tsl)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
范例09:query接口取数范例
比如:提取上证50成分股在20250114日的分钟线行情数据
from datetime import datetime
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("登陆天软服务器成功")
endt=datetime(2025,1,14)
#获取上证50指定日成分股
stocks = c.exec('return getbkbydate("SH000016",strtodatetime("{}"));'.format(endt)).value()
#调用接口执行交互代码
r = c.query(stock=stocks,
begin_time=endt,
end_time=datetime(2025,1,14,18,00),
cycle='1分钟线',
fields='StockID,StockName,date,close,vol,amount,buy1,bc1,sale1,sc1'
)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
实现四:取股票列表一段时间内的行情数据
范例10:exec接口取数
比如:提取上证50成分股在20250101-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 = '''
begt:=20250101t;
endt:=20250114t;
stocks:=GetBKByBegTEndT("SH000016",begt,endt)[:,"代码"];//上证50区间成分股代码
setsysparam(pn_cycle(),cy_day());//周期-日线
t:= select ['StockID'],['StockName'],datetimetostr(['date']) as 'date',['close'],
['vol'],['amount'],['buy1'],['bc1'],['sale1'],['sc1']
from Markettable datekey begt to endt of stocks end;
return t;
'''
#调用接口执行交互代码
r = c.exec(tsl)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
范例11:call接口取数范例
比如:提取上证50成分股在20250101-20250114每日的行情数据
from datetime import datetime
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("登陆天软服务器成功")
begt=datetime(2025,1,1)
endt=datetime(2025,1,14)
#获取上证50指定日期区间成分股
stocks = c.exec('return GetBKByBegTEndT("SH000016",strtodatetime("{}"),strtodatetime("{}"))[:,"代码"];'.format(begt,endt)).value()
tsl = '''
function get_data(stocks,begt,endt);
begin
setsysparam(pn_cycle(),cy_day());//周期-日线
t:= select ['StockID'],['StockName'],datetimetostr(['date']) as 'date',['close'],
['vol'],['amount'],['buy1'],['bc1'],['sale1'],['sc1']
from Markettable datekey begt to endt of stocks end;
return t;
end
'''
#调用接口执行交互代码
r = c.call('get_data',stocks,begt,endt,code=tsl)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果:
范例12:query接口取数范例
比如:提取上证50成分股在20250101-20250114每日的行情数据
from datetime import datetime
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("登陆天软服务器成功")
begt=datetime(2025,1,1)
endt=datetime(2025,1,14)
#获取上证50指定日期区间成分股
stocks = c.exec('return GetBKByBegTEndT("SH000016",strtodatetime("{}"),strtodatetime("{}"))[:,"代码"];'.format(begt,endt)).value()
#调用接口执行交互代码
r = c.query(stock=stocks,
begin_time=begt,
end_time=endt,
cycle='日线',
fields='StockID,StockName,date,close,vol,amount,buy1,bc1,sale1,sc1'
)
if r.error() !=0:
print(r.message())
else:
print(r.dataframe())
执行结果: