A:目前,深交所ETF行情中有提供实时申赎数据,上交所没有。
数据情况:
ETF代码加了后缀ETF来做实时申赎的行情接收,提供了以下数据字段:
bc1 -> 实时申购数量, bc2 -> 申购笔数
sc1 -> 实时赎回数量, sc2 -> 赎回笔数
【数据来源】深交所
【数据开始时间】深交所大部分从2023年12底开始(最早在2023年12月11日)。
【取数方式】交易明细表(Tradetable),无其它周期数据。
【数据频率】交易明细表中更新频率3秒一个快照,由于只有数据变动时才记录,因此一般会低于这个频率。
【取数代码】
基金交易代码(二级市场代码)+"ETF",如
"SZ159001ETF"
【字段说明】实时申购赎回数量与笔数在交易明细表中都是
累计量,即记录的是开盘到当前时间点的总量。
【取数示例】
示例01:取指定日指定ETF当日申赎数量与笔数的变动情况
fundid:="SZ159001";
endt:=20260109T;
ssID:=fundid$"ETF";//在原有的基金交易代码上加ETF后缀
return select ["StockID"],["StockName"],datetimetostr(["date"]) as "date",
["bc1"] as "申购数量",["bc2"] as "申购笔数",["sc1"] as "赎回数量",["sc2"] as "赎回笔数"
from tradetable datekey endt to endt+16/24 of ssID end;
返回结果:
示例02:取指定ETF在指定时点的申赎数量与笔数
fundid:="SZ159001";
endt:=20260109.102450T;//指定具体时点
setsysparam(pn_stock(),fundid$"ETF");//在原有的基金交易代码上加ETF后缀
setsysparam(PN_Cycle(),cy_detail());//设置周期为交易明细
setsysparam(pn_date(),endt);
return array("申购数量":BuyVol1(),"申购笔数":BuyVol2(),"赎回数量":SaleVol1(),"赎回笔数":SaleVol2());
返回结果:(下面图中左边数组为示例返回结果,右边为对应明细表中数据作为参考)
示例03:取指定日深交所所有ETF在指定时点的截面情况
endt:=20260109.102450T;//指定具体时点
JYfunds:= getbkall("深证ETF");
setsysparam(pn_cycle(),cy_day());
JYfunds:= sselect thisrow from JYfunds where spec(istradeday(dateof(endt)),thisrow) end; //-去掉不交易的券
t:=array();
k:=0;
setsysparam(PN_Cycle(),cy_detail());//设置周期为交易明细
setsysparam(pn_date(),endt);
for i,fundid in JYfunds do
begin
echo fundid;
setsysparam(pn_stock(),fundid$"ETF");//在原有的基金交易代码上加ETF后缀
try
t[k++]:= array("StockID":fundid$"ETF","stockName":stockName(fundid),
"申购数量":BuyVol1(),"申购笔数":BuyVol2(),"赎回数量":SaleVol1(),"赎回笔数":SaleVol2());
except
echo fundid,"无该数据";
end;
end
return t;
返回结果:
交易明细表中源始数据示例:
