A:天软行情数据中,提供了复权与不复权的行情数据,
复权因子可以通过取复权与不复权之后的价格进行计算得到,本文主要介绍通过这种方式计算的复权因子模型用法。
按交易所发送的除权后的昨收(系统昨收)与实际昨收计算复权比例进行累乘得到的复权因子,取数方式参考:FAQ:
Q:怎么取股票复权因子。
复权因子模型:
stock_Adjust_ForwardPriceFactor_Cal
定义:stock_Adjust_ForwardPriceFactor_Cal(Endt,Rateday:date,Rate:int):real
说明:从endt收盘买入到Rateday收盘值多少钱,
以endt为复权基准日,取begt的复权价/不复权价作为复权因子。
当取后复权因子时,endt<rateday,一般endt可为上市日;
当取前复权因子时,endt>rateday,一般endt可为最新交易日;
注:endt<上市日时,复权因子为1。
支持证券:股票、ETF、LOF、可转债 ,其中ETF与LOF用交易代码取数。
参数:
endt:日期,指定日
rateday:日期,复权基准日,参考:
pn_RateDay
rate:整数,复权方式,参考:
pn_Rate
返回:real,指定日价格复权因子。
范例:
范例01:获取个股指定日后复权比例复权因子
//获取SZ300775在20260430的后复权比例复权因子
setsysparam(pn_stock(),"SZ300775");
endt:=firstday();
rateday:=20260430t;
rate:=1; //比例复权
return stock_Adjust_ForwardPriceFactor_Cal(endt,rateday,rate);
//0.9721
范例02:获取个股指定日期区间的前复权比例复权因子
//获取SZ300775在自上市-20260609的前复权比例复权因子
setsysparam(pn_stock(),"SZ300775");
begt:=firstday();
endt:=20260609t;
rate:=1; //比例复权
setsysparam(pn_date(),endt);
n:=StockTradeDays(begt,endt);
return nday(n,"日期",datetostr(sp_time()),
"复权因子",stock_Adjust_ForwardPriceFactor_Cal(endt,sp_time(),rate));
部分结果:
范例03:获取多个股票指定日的后复权复杂复权因子
//获取科创50股票在20260430的后复权复杂复权因子
rateday:=20260430t;
stocks:=getbkbydate("SH000688",rateday);//指定日成份股列表
r:=array();
rate:=2; //复杂复权
strt:=datetostr(rateday);
for i,stock in stocks do
begin
setsysparam(pn_stock(),stock);
endt:=firstday();
r[i,"代码"]:=stock;
r[i,"名称"]:=stockname(stock);
r[i,"日期"]:=strt;
r[i,"复权因子"]:=stock_Adjust_ForwardPriceFactor_Cal(endt,rateday,rate);
end
return r;
部分结果:
范例04:获取多个股票指定区间的前复权复杂复权因子
//获取科创50股票在20240101-20260430的前复权复杂复权因子
begt:=20240101t;
endt:=20260430t;
days:=MarketTradeDayQk(begt,endt);
stocks:=getbkbydate("SH000688",endt);//指定日成份股列表
rate:=2; //复杂复权
r:=array();
for i,stock in stocks do
begin
setsysparam(pn_stock(),stock);
name:=stockname(stock);
for j,day in days do
begin
r[x,"代码"]:=stock;
r[x,"名称"]:=name;
r[x,"日期"]:=datetostr(day);
r[x,"复权因子"]:=stock_Adjust_ForwardPriceFactor_Cal(endt,day,rate);
x++;
end
end
return r;
部分结果: