A:天软提供了国内股票市场比较全面的数据,本文提供如批量获取常见的交易提示数据。
常见交易提示指标接口:
获取个股指定日交易提示
实现模型:GetStockTradePromptEndt
Function GetStockTradePromptEndt(stockid,endt);
Begin
{
说明:获取个股指定日交易提示信息
交易提示:"新股上市","分红送股","增发上市","停牌","ST","涨停","跌停",
"退市整理期","解禁","大宗交易","龙虎榜","未上市","已退市",
"最近30天发布了诉讼仲裁公告","最近30天发布了终止上市提示公告",
"最近30天发布了风险提示公告","最近30天发布了交易异常波动公告"
参数:
stockid:string 股票代码
endt:datetime 指定日期
返回:一维数组,交易提示信息
}
ov:=BackupSystemParameters2();
setsysparam(pn_stock(),stockid);
tip:="";
intt:=datetoint(endt);
for i,info in StockTradePrompt() do
begin
con:=eval(&info['条件']);
if con then
if ifstring(con) then tip+=con$";";
else tip+=info['提示']$";";
end
if tip then tip:=tip[:length(tip)-1];
if ansipos("已退市",tip) then tip:="已退市";
return array("stockid":stockid,"date":datetostr(endt),"交易提示":tip);
end
function StockTradePrompt();
begin
col0:='提示';
col1:='条件';
return
array((col0:"新股上市",col1:"intt=base(12017)"),
(col0:"分红送股",col1:"istable(StockPFInfo(endt,endt))"),
(col0:"增发上市",col1:"vselect ['上市日'] from infotable 22 of stockid where ['上市日']=intt end"),
(col0:"停牌",col1:"StockSNIsSuspend(endt)"),
(col0:"ST",col1:"IsST_3(EndT)"),
(col0:"涨停",col1:"StockIsZt(EndT)"),
(col0:"跌停",col1:"StockIsDt(EndT)"),
(col0:"退市整理期",col1:"IsStockGoDelistingPeriod(endt)"),
(col0:"解禁",col1:"istable(stock_GetRestrictedBanData(stockid,EndT))"),
(col0:"大宗交易",col1:"vselect ['截止日'] from infotable 124 of stockid where ['截止日']=intt end"),
(col0:"龙虎榜",col1:"istable(StockTBGetInfo(array(stockid),endt,endt,0,2))"),
(col0:"未上市",col1:"base(12017)>intt"),
(col0:"已退市",col1:"StockDelistingDate() and StockDelistingDate()<=endt"),
(col0:"终止上市公告",col1:"GetStockTerminationEndt(endt,30)"),
(col0:"诉讼仲裁公告",col1:"GetStockLawsuitAndArbitrationEndt(endt,30)"),
(col0:"交易异常波动公告",col1:"GetStockAbnormalFluctuationEndt(endt,30)"),
(col0:"风险提示公告",col1:"GetStockRiskWarningEndt(endt,30)"),
);
end
Function GetStockLawsuitAndArbitrationEndt(endt,N);
Begin
{
说明:获取个股指定日近期是否发布诉讼及仲裁公告
判断指定日是否发布公告,如没有向前N个日期寻找是否发布诉讼仲裁公告
参数:
endt:datetime 指定日期
N: Int 向前推移的天数,默认为0不推移
返回:string,诉讼及仲裁提示
}
stockid:=DefaultStockID();
data:=select * from infotable 122 of stockid
where ["公布日"]>=datetoint(IncDay(endt,-N)) and
["公布日"]<=datetoint(endt) and
ContainsText(['公告类型(二级)'],'诉讼、仲裁') and
not ContainsText(['公告标题'],'进展')
order by ["公布日"] desc end;
if not istable(data) then return 0;
v:=data[0,"公布日"]$'发布了诉讼、仲裁公告';
return v;
End;
function GetStockTerminationEndt(endt,N);
Begin
{
说明:获取个股指定日近期是否发布终止上市提示公告
判断指定日是否发布公告,如没有向前N个日期寻找是否发布终止上市提示公告
参数:
endt:datetime 指定日期
N: Int 向前推移的天数,默认为0不推移
返回:string,终止上市提示
}
stockid:=DefaultStockID();
data:=select * from infotable 122 of stockid
where ["公布日"]>=datetoint(IncDay(endt,-N)) and
["公布日"]<=datetoint(endt) and
ContainsText(['公告类型(二级)'],'暂停、终止上市') and
ContainsText(['公告标题'],'终止上市')
order by ["公布日"] desc end;
if not istable(data) then return 0;
v:=data[0,"公布日"]$'发布了终止上市提示公告';
return v;
End;
Function GetStockRiskWarningEndt(endt,N);
Begin
{
说明:获取个股指定日近期是否发布风险提示公告
判断指定日是否发布公告,如没有向前N个日期寻找是否发布风险提示公告
参数:
endt:datetime 指定日期
N: Int 向前推移的天数,默认为0不推移
返回:string,风险公告提示
}
stockid:=DefaultStockID();
data:=select * from infotable 122 of stockid
where ["公布日"]>=datetoint(IncDay(endt,-N)) and
["公布日"]<=datetoint(endt) and
ContainsText(['公告类型(二级)'],'风险提示公告')
order by ["公布日"] desc end;
if not istable(data) then return 0;
v:=data[0,"公布日"]$'发布了风险提示公告';
return v;
End;
Function GetStockAbnormalFluctuationEndt(endt,N);
Begin
{
说明:获取个股指定日近期是否发布交易异常波动公告
判断指定日是否发布公告,如没有向前N个日期寻找是否发布交易异常波动公告
参数:
endt:datetime 指定日期
N: Int 向前推移的天数,默认为0不推移
返回:string,交易异常波动提示
}
stockid:=DefaultStockID();
data:=select * from infotable 122 of stockid
where ["公布日"]>=datetoint(IncDay(endt,-N)) and
["公布日"]<=datetoint(endt) and
ContainsText(['公告类型(二级)'],'交易异常波动')
order by ["公布日"] desc end;
if not istable(data) then return 0;
v:=data[0,"公布日"]$'发布了交易异常波动公告';
return v;
End;
执行范例
//获取SZ002373在20140410日的交易提示信息
return GetStockTradePromptEndt('SZ002373',20140410T);
//返回:
获取个股区间交易提示信息
实现模型:GetStockRangeTradePrompt
Function GetStockRangeTradePrompt(stockid,begt,endt);
Begin
{
说明:获取个股区间交易提示信息
参数:
stockid:string 股票代码
begt:datetime 开始日期
endt:datetime 截止日期
返回:二维数组,交易提示信息
}
ov:=BackupSystemParameters2();
SetSysParam(pn_stock(),stockid);
SetSysParam(PN_Cycle(),cy_day());
tarr:=marketTradeDayQk(begt,endt);
rt:=array();
for i,t in tarr do
rt&=``GetStockTradePromptEndt(stockid,t);
return rt;
End;
执行范例
//获取SZ002373在20140410-20140430日的交易提示信息
return GetStockRangeTradePrompt('SZ002373',20140410T,20140430T);
执行结果:
获取板块成分股最近N日交易提示信息
实现模型:GetBKRangeTradePrompt
Function GetBKRangeTradePrompt(bkName,N);
Begin
{
说明:获取板块成分股最近N日交易提示信息
参数:
bkName:string 板块名称
N:Int 最近N日
返回:二维数组,交易提示信息
}
ov:=BackupSystemParameters2();
setsysparam(PN_Stock(),"SH000001");
setsysparam(PN_Cycle(),cy_day());
stocks:=GetBK(bkName);
EndT:=sp_time();
BegT:=ref(sp_time(),N)+1;
rt:=array();
for i,stockid in stocks do
rt&=GetStockRangeTradePrompt(stockid,begt,endt);
return rt;
End;
执行范例
//获取科创板成分股在20140124日有交易提示的信息数据
setsysparam(pn_date(),20240124t);
t:=GetBKRangeTradePrompt("科创板",1);
return select * from t where ["交易提示"] end;
部分结果:
函数包文件
附件:TradePrompt.tslfunc