playbook/docs/tsl/syntax_book/function/03_datawarehouse.md

122 KiB
Raw Blame History

数据仓库函数

内容

  • 系统参数名称函数
  • 多市场支撑函数
  • 时间相关函数
  • 判定函数
  • 盘中相关
  • 盘后相关(在当日可用于盘中)
  • 时间序列统计
  • 成交明细数据函数
  • 交易明细字段标识函数
  • 查询和轮询函数
  • 市场和板块函数
  • 取行情数据序列函数
  • 引用指定函数
  • 系统参数设置和获取函数
  • 复权类型函数
  • 复权基准日函数
  • 周期函数
  • 财务函数
  • 选股与取数
  • 向导函数
  • 条件判定

系统参数名称函数

内容
  • cyclefilter
  • pn_Stock
  • pn_Date
  • pn_Rate
  • pn_RateDay
  • pn_nDay
  • pn_Cycle
  • pn_Precision
  • pn_NilTrans
  • Pn_I64Trans
  • pn_ViewPoint
  • pn_FreeCycle
  • pn_ReportMode
  • Pn_Emptymode
  • pn_ChangedDateMode
  • pn_ReportType
  • pn_NoRaiseNoData
  • pn_CalcCTRLWord
cyclefilter

主要用于过滤假期的分时数据。

参数值说明:

0 没有过滤器,可用于取消设置的参数

1 过滤掉期货放假期间的夜盘

3 新增集合竞价周期点

范例1

//结果集将只有20161010的数据没有假期的夜盘数据。

setsysparam("cyclefilter", 1);

setsysparam(pn_cycle(), cy_15m());

return select * from markettable datekey 20161007T to 20161010.1600T of "ag1612" end;

范例2

//结果将会新增20161010T08:59:00的集合竞价数据

//期货夜盘有两个集合竞价时点正常夜盘是20:59:00放假无夜盘是8:59:00

setsysparam("cyclefilter", 3);

setsysparam(pn_cycle(), cy_15m());

return select * ,datetimetostr(["date"]) as "date"

 from markettable datekey 20161007T to 20161010.1600T of "ag1612" end;

返回:

pn_Stock

范例

范例1

//设置当前证券为万科A


 setsysparam(pn_stock(),'SZ000002');


 return getsysparam(pn_stock());//获取当前的证券代码


//返回字符串SZ000002

范例2

//取指定证券SH60000在指定日2019-02-18这一天的收盘价


setsysparam(pn_stock(),'SH600000');


setsysparam(pn_date(),20190218T);//设置当前时间


return close();//取收盘价


//返回10.84

参考SetSysParam GetSysParam pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode

pn_Date

范例

范例1

//设置当前时间为2019-2-18


setsysparam(pn_date(),20190218T);


return sp_time();//或return getsysparam(pn_date());//获取当前时间


//返回43514即2019-02-18

范例2

//取指定证券SH60000在指定日2019-02-18这一天的收盘价


setsysparam(pn_stock(),'SH600000');


setsysparam(pn_date(),20190218T);//设置当前时间


return close();//取收盘价


//返回10.84

参考SetSysParam GetSysParam pn_Stock pn_Rate pn_RateDay pn_nDay pn_Cycle pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode

pn_Rate

范例

//以第一个交易日为基准进行复杂复权后的截止20110909万科A的收盘价时间序列

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(), inttodate(20110909));

setsysparam(pn_rate(),rt_complex());//复权方式:复杂复权

setsysparam(pn_rateday(),rd_firstday());//复权基准日:第一个交易日

return nday(30,'date',datetostr(sp_time()),

         'close',close());

结果(部分)

参考SetSysParam GetSysParam pn_Stock pn_Date pn_RateDay pn_nDay pn_Cycle pn_Precision 复权基准日函数 pn_ViewPoint pn_FreeCycle pn_ReportMode

pn_RateDay

范例

//设置2018-08-20为复权基准日小于这个日期的前复权大于这个日的后复权。


setsysparam(pn_stock(),'SZ000002');


setsysparam(pn_date(), 20180905T);


setsysparam(pn_rate(),1);//复权方式:比例复权


setsysparam(pn_rateday(),20180820T);//复权基准日


return nday(30,'date',datetostr(sp_time()),'close',close());

参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_nDay pn_Cycle pn_Precision 复权类型函数 pn_ViewPoint pn_FreeCycle pn_ReportMode

pn_nDay

范例

setsysparam(pn_stock(),'SZ000001');

setsysparam(pn_date(),inttodate(20140115));

setsysparam(pn_nday(),250);

return nday2('time',datetostr(sp_time()),'close',close());

结果:

参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_Cycle pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode

pn_Cycle

范例

范例1

//取万科A在2019-02-18 11:25:00时的五分钟线成交量


 setsysparam(pn_stock(),'SZ000002');


 setsysparam(pn_date(), 20190218.1125T);


 setsysparam(pn_cycle(),cy_5m());


 return vol();


//返回1389725

范例2

//取上证指数一段时间内的5分钟线数据


 setsysparam(pn_cycle(),cy_5m());


 return select ['date'],['close'],['vol'] from markettable datekey 20190218.1030T to 20190218.1120T of 'SH000001' end;


//返回结果:

参考周期函数 SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Precision pn_ViewPoint pn_FreeCycle pn_ReportMode 自由周期

pn_Precision

范例

范例1设置与生效

setsysparam(PN_Precision(),3);//设置有效


 ov:=BackupSystemParameters2();


 setsysparam(PN_Precision(),2); //设置无效在return 之前被恢复到备份之前的状态


 return rand(2,3);


//返回结果保留3位小数

范例2

//提取万科A2019-2-19日的5分钟线收盘价并保留2位小数结果输出


setsysparam(PN_Precision(),2);//有效


 setsysparam(pn_cycle(),cy_30m());


 return select datetimetostr(['date']) as 'date',['close']


 from markettable datekey 20190219T to 20190219.16T of 'SZ000002' end;


//返回结果:

参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_ViewPoint pn_FreeCycle pn_ReportMode

pn_NilTrans

范例

matlab调用

//matlab代码

ts=actxserver('TSExpert.CoExec')

ts.SetSysParam('NilTrans',9)

ts.RemoteExecute('return array((1,2,nil,4),(2,nil,3,nil));')

//返回:

参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_ViewPoint pn_FreeCycle pn_ReportMode

Pn_I64Trans

参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_ViewPoint pn_FreeCycle pn_ReportMode

pn_ViewPoint

范例在分钟线下指定仿真时间为10点29分42秒求仿真下10点30分的分钟线价量

setsysparam(pn_stock(),"SH600519");

   setsysparam(pn_cycle(),cy_1m());

   setsysparam(pn_ViewPoint(),20240702.102942T); //仿真时间为10:29:42

   setsysparam(pn_date(),20240702.1030T);//取分钟线十点半时的价量

   return array(close(),vol());

结果:

参见专题非整周期行情数据提取陷阱和时点真实行情数据回溯参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_FreeCycle pn_ReportMode

pn_FreeCycle

参考SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_ReportMode 自由周期

pn_ReportMode

范例

SetSysParam(PN_Stock(),'SH600170');

// pn_ReportMode()=-1,返回调整前、调整后

SetSysParam(pn_ReportMode(),-1);

return Select ['StockID'],['StockName'],['截止日'],['公布日'],['营业收入'],['归属于母公司所有者净利润']

from infotable 46

of 'SH600170'

where ['截止日']>=20171231 end;

//返回结果


StockID

StockName

截止日

公布日

营业收入

归属于母公司所有者净利润

SH600170

上海建工

20171231

20180328

142,082,638,561.83

2,584,465,203.87

SH600170

上海建工

20171231

20190329

142,082,638,561.83

2,584,465,203.87

SH600170

上海建工

20180331

20180428

31,075,378,878.24

532,834,340.41

SH600170

上海建工

20180331

20190430

31,075,378,878.24

532,834,340.41

SH600170

上海建工

20180630

20180829

78,290,436,984.83

1,289,780,254.93

SH600170

上海建工

20180930

20181031

115,410,360,329.49

1,811,096,340.58

SH600170

上海建工

20181231

20190329

170,545,783,102.81

2,779,866,799.83

SH600170

上海建工

20190331

20190430

47,099,976,904.12

1,317,287,587.90

参考财务数据调整的处理专题 财务函数 SetSysParam GetSysParam pn_Stock pn_Date pn_Rate pn_RateDay pn_nDay pn_Cycle pn_FreeCycle pn_ReportMode

Pn_Emptymode

范例

//取万科A在2019年的三季报与年报的股东权益合计笔者执行日期为20191224日年报还未出

  setsysparam(pn_emptymode(),5);//空记录设置为浮点NAN

  setsysparam(pn_stock(),'SZ000002');

  t1:= reportofall(44111,20190930);

  t2:= reportofall(44111,20191231);

  return array(t1,t2);

返回:

244,851,895,300.25
NAN
pn_ChangedDateMode

范例

提取万科A的在20190404日的总股本数据

  endt:=20190404T;

  setsysparam(pn_stock(),'SZ000002');

  v1:=StockTotalShares(endt);//考虑变动日及公布日

  setsysparam(PN_ChangedDateMode(),1);

  v2:=StockTotalShares(endt);//仅考虑变动日

  return array(v1,v2);

  //结果array(11039152001.0,11302143001.0)
pn_ReportType

pn_ReportType取值说明:

取值含义涉及报表应用范围是否与pn_stock/pn_date相关
0默认提取最新公布的报告期正式财报应用最广泛与pn_stock、pn_date相关
1优先级:正式财报>业绩快报>业绩预测正式财报、业绩快报、业绩预测适用于实时财务数据提取与pn_stock、pn_date相关
2优先级:正式财报>业绩快报正式财报、业绩快报适用于实时财务数据提取与pn_stock、pn_date相关
3优先级:正式财报>业绩预测正式财报、业绩预测适用于实时财务数据提取与pn_stock、pn_date相关
90按正式财报发布规则提取正式财报定期更新,所有股票规则相同与pn_stock、pn_date无关
>=19000101指定报告期,若指定报告期未发布,取最新发布报告期正式财报指定报告期与pn_stock相关与pn_date无关

相关专题文档

实时财务数据相关2025-11-21-量化数据-因子研究09关于利用实时财务信息的财务数据提取说明更新版

正式财报发布规则说明

发布规则:

财报类型公布日期
一季报4月底全部公布4月最后一天开盘前已全部公布
中报8月底全部公布8月最后一天开盘前已全部公布
三季报10月底全部公布10月最后一天开盘前已全部公布
年报次年4月底全部公布次年4月最后一天开盘前已全部公布

按财报发布规则获取最新报告期与最新年度报告期案例:

截止日最新报告期最新年度报告期
2023-01-01~2023-04-292022093020211231
2023-04-30~2023-08-302023033120221231
2023-08-31~2023-10-302023063020221231
2023-10-31~2023-12-312023093020221231

范例:

范例1pn_ReportType()=0

EndT:=20230121T;

ov:=BackupSystemParameters2();

SetSysParam(pn_stock(),'SH688699');

SetSysParam(pn_date(),EndT);

SetSysParam(pn_ReportType(),0); //财报最新报告期,等价于不设置该系统参数

RDate:=NewReportDateOfEndT2(EndT);

return RDate;


//返回结果20220930 财报2022年三季报已公布年报未公布

范例2pn_ReportType()=1

EndT:=20230121T;

ov:=BackupSystemParameters2();

SetSysParam(pn_stock(),'SH688699');

SetSysParam(pn_date(),EndT);

SetSysParam(pn_ReportType(),1); //财报>快报>预测

RDate:=NewReportDateOfEndT2(EndT);

return RDate;


//返回结果20221231 财报和快报2022年年报未公布预测已公布

范例3pn_ReportType()=2

EndT:=20230121T;

ov:=BackupSystemParameters2();

SetSysParam(pn_stock(),'SH688699');

SetSysParam(pn_date(),EndT);

SetSysParam(pn_ReportType(),2); //财报>快报

RDate:=NewReportDateOfEndT2(EndT);

return RDate;


//返回结果20220930财报和快报2022年年报未公布财报2022年三季报已公布

范例4pn_ReportType()=3

EndT:=20230121T;

ov:=BackupSystemParameters2();

SetSysParam(pn_stock(),'SH688699');

SetSysParam(pn_date(),EndT);

SetSysParam(pn_ReportType(),3); //财报>预测

RDate:=NewReportDateOfEndT2(EndT);

return RDate;


//返回结果20221231财报2022年年报未公布预测已公布

范例5pn_ReportType()=90发布规则提取

EndT:=20230121T;

ov:=BackupSystemParameters2();

SetSysParam(pn_ReportType(),90); //财报按财报发布规则

RDate:=NewReportDateOfEndT2(EndT);

return RDate;


//返回结果20220930 按财报公布规则20230121t,2022年年报未公布在4月底才公布2022年三季报已在2022年10月公布了

范例6pn_ReportType()=20221231指定报告期

EndT:=20230121T;

ov:=BackupSystemParameters2();

SetSysParam(pn_stock(),'SH688699');

SetSysParam(pn_ReportType(),20221231); //财报指定报告期已公布

RDate:=NewReportDateOfEndT2(EndT);

return RDate;


//返回结果20220930 20230121T指定报告期2022年年报未公布2022年三季报已公布
pn_NoRaiseNoData

范例

范例1获取当前禁用无数据异常模式

setsysparam(pn_noraisenodata(),1);

return getsysparam(pn_noraisenodata());

返回1

范例2当指定证券无数据时不报错通过close()取价格返回0

setsysparam(pn_noraisenodata(),1);

return spec(close(),"abc");

返回0

范例3当指定证券无数据时不报错通过Rd取盘口时返回nil

setsysparam(pn_noraisenodata(),1);

return spec(rd(-1),"abc");

返回nil

pn_CalcCTRLWord

说明:

设置系统参数"CalcCTRLWord"可以控制程序中若有nil参与计算以及浮点除0时进行警告或者程序抛出异常。

设置语法setsysparam(pn_CalcCTRLWord(),v);

此为全局变量对设置后的所有程序有效默认为0不启动。

系统参数值说明:

异常值运算报错与警告:警告是指在运行信息中运行时打印提醒信息,报错即出现该类运算时直接报错,终止当前程序。

该参数值类型为二进制ps:天软中0b开头表示二进制数

从低位到高位位值为1则为启动为0则为不启动默认都不启动则默认值为0

第一位浮点除0警告

第二位浮点除0报错

第三位Nil计算警告

第四位Nil计算报错

第五位Nil大小比较警告

第六位Nil大小比较报错

第七位Nil等于不等于警告

第八位Nil等于不等于报错

第九位Nil.与[]操作返回nil并警告

第十位Nil.与[]操作返回nil不报错也不警告

使用范例01只提醒不报错

Echo #127;//清除掉客户端ECHO窗口中的内容

//启动浮点除0警告Nil计算警告Nil大小比较警告Nil等于不等于警告

setsysparam("CalcCTRLWord",0b01010101); //等同setsysparam("CalcCTRLWord",85);

return array(0/0,

     1/0,

     Nil*2,

     Nil>0,

     1+1);


//程序不报错,不终止,且有返回值,打印提醒信息为:

float division by zero at:noname86(TSCheckModel) line: 5

float division by zero at:noname86(TSCheckModel) line: 6

NIL calculation at:noname86(TSCheckModel) line: 7

NIL Numerical great/less comparison at:noname86(TSCheckModel) line: 8

使用范例02报错+提醒

Echo #127;

setsysparam("CalcCTRLWord",0b11111111); //报错+提醒

return array(0/0,

     1/0,

     Nil*2,

     Nil>0,

     1+1);

程序报错提示第5行出现除0操作

使用范例03Nil的.与[]操作不报错

setsysparam(pn_CalcCTRLWord(),0x100); //默认是会报错的,设置后不报错只提醒

  t:=nil;

  return array(t.a,t[1]);

程序不报错返回数组array(nil,nil),会打印信息如

NIL invoke at:NoName339(xxx) line: 6

NIL [] get at:NoName339(xxx) line: 6

报错类型有以下六类,分别对应如下:

1、float division by zero 出现除0运算

2、NIL calculation存在Nil运算

3、NIL Numerical great/less comparison存在Nil大小比较运算

4、NIL Numerical eq/neq comparison存在Nil等于或不等于运算

5、NIL invoke:存在Nil.操作

6、NIL [] get:存在Nil[n]操作

多市场支撑函数

天软平台支持多市场数据的接入,每个市场都是独立开盘和收盘,用户可以获得所在市场的相关信息。

内容
  • MarketID
  • MarketInfo
  • MarketOpenCloseTime
  • DefaultTimeZone
  • TSPeriod
MarketID
MarketInfo

范例

//获取SH60000所属市场的市场相关信息

return MarketInfo(MarketID("SH600000"));

返回结果:

交易的分段信息结构details字段的内容如下

34200对应的时间是9:30分41400对应的时间是11:30分。46800对应的是130054000对应的是1500。

注意在details中的相应的minutes字段该分钟数不是当前区间内的分钟数而是截止到当前区间为止包含的分钟数。

MarketOpenCloseTime
DefaultTimeZone
TSPeriod

范例

范例一:取万科A在2023年6月28日的一分钟线交易时间序列

stockid:="SZ000002";

cycle:=cy_1m();

dt:=20230628T;

return tsperiod(stockid,cycle,dt);

//结果:

范例二:取期货合约i2307在2023年6月28日的一分钟线交易时间序列,包含夜盘

stockid:="i2307";

cycle:=cy_1m();

dt:=20230628T;

return tsperiod(stockid,cycle,dt);

//结果:

范例三:传入自由周期,取万科A在2023年6月28日的8秒线交易时间序列

stockid:="SZ000002";

cycle:=8;

dt:=20230628T;

return tsperiod(stockid,cycle,dt);

//结果:

范例四:传入自由周期以及基准时间点,取万科A在2023年6月28日的8秒线交易时间序列

stockid:="SZ000002";

cycle:=8;

dt:=20230628.133015T;

return tsperiod(stockid,cycle,dt);

//结果:

时间相关函数

内容
  • sp_time
  • tradeDays
  • FirstDay
  • LastDay
sp_time

范例

范例一设置的日期为交易日时sp_time()的结果

//系统证券代码对应的交易时间

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(),inttodate(20140103));//2014-01-03是一个交易日

a := sp_time();

return a;

// 返回41642 (2014-01-03);

范例二设置的日期为非交易日时sp_time(0)和sp_time(1)的结果对比

//如果设置日期是一个非交易日2014-01-05周日sp_time被设定为离指定日最新的一个交易日

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(),inttodate(20140105));

b := sp_time();

c:=sp_time(1);

return array(b,c);

//返回array(41642,41644),即(2014-01-03和2014-01-05);

范例三对比sp_time(2)与sp_time(0)、sp_time(1)返回日期的差异

//如果要返回设定的日期例如2014-01-05)1月5日是周日不受交易日的影响。

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(),inttodate(20140105));

d := sp_time(1);//返回41644 (2014-01-05);

e:=Nday(1,”t”,sp_time(),”t1”,sp_time(1),”t2”,sp_time(2));

//e中的t列和t1列一致而t2列可以访问到2014-01-05的日期值41644

范例四sp_time 在NDay中的使用

//sp_time 在NDay中的使用

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(),inttodate(20140105));

c := nday(10,'date',datetostr(sp_time()),'close',close());

结果:

参考SpecDate GetSysParam SetSysParam

tradeDays

范例

范例一:

setsysparam(pn_stock(),'SZ000002');

beg_date := inttodate(20100101);

end_date := inttodate(20101231);


//end_date 必须大于beg_date

return tradedays(beg_date,end_date);//返回240

范例二:

  StockID := "SZ000002";

  BegT := inttodate(20130101);

  EndT := inttodate(20130122);

  setsysparam(pn_stock(),StockID);

  setsysparam(pn_cycle(),cy_1m());

  return tradedays(BegT,EndT);


//结果240


//万科A在2012年12月26日至2013年1月18日停牌以上只取到2013-01-21 00:00:00 至2013-01-22 00:00:00之间的交易日数据即240个分钟周期

参考TDateTime

FirstDay

范例

setsysparam(pn_stock(),'SZ000002');

//获得系统品种的第一个交易日

Return firstday();//33240(1991-01-02);


//获得指定参数品种的第一个交易日

Return firstday('SH600086');

//结果35587(1997-06-06);

参考TDateTime

LastDay

范例

//获取某只股票的最后一个交易日。

setsysparam(pn_stock(),'SZ000002');

return lastday();//40794 (2011-09-08)

return lastday('SH600001');

//结果40162(2009-12-15)该股已经下市

参考TDateTime

判定函数

内容
  • IsStock
  • IsTradeDay
  • TestStock
  • IsValidCode
  • ValidFullCode
  • IsCashFlowInfoId
  • IsMainReportId
  • AnalyseStockArr
  • IsBalanceInfoId
  • IsInterestInfoId
  • IsFundBalanceSheetInfoId
  • IsFundInterestInfoId
  • IsStockFinancialItem
  • IsFinancialInfoID
IsStock

范例

//判定一个代码是否为有效的股票代码。

Return IsStock('SZ000001');

//返回1

Return IsStock('SZ100002'); //返回0
IsTradeDay

范例

//判定系统品种在指定时间是否有交易。

setsysparam(pn_stock(),'SZ000002');

return IsTradeDay(inttodate(20110828));//返回0

return IsTradeDay(inttodate(20110826));//返回1
TestStock

范例

//判定是否存在该股票的历史或者实时数据。

Return TestStock('SZ000002'); //返回1
IsValidCode

范例

//判定指定的品种代码是否为合法有效。

return IsValidCode('600036'); //返回1

return IsValidCode('SH600036'); //返回1

return IsValidCode('s600036');//返回0
//获得完整的代码。

return isValidCode('SZ000002',ID);//'SZ000002'是有效的代码ID为'SZ000002'

return IsValidCode('S600',ID);//'S600'不是有效的代码ID为0

参考isstock

ValidFullCode

范例

//返回一个有效股票代码的完整代码。

stock_id:='000002';

_id:= ValidFullCode(stock_id);

Return _id;

//返回:'SZ000002'
IsCashFlowInfoId

范例

return IsCashFlowInfoId(48003);


//返回1
IsMainReportId

范例

return IsMainReportId(46002);


//返回1
AnalyseStockArr

范例

return AnalyseStockArr('上证50','IF01;IF02');

返回:

IsBalanceInfoId

范例

return IsBalanceInfoId(44003);

//返回1
IsInterestInfoId

范例

return IsInterestInfoId(46003);

//返回1
IsFundBalanceSheetInfoId

范例

return IsFundBalanceSheetInfoId(312002);

//返回1
IsFundInterestInfoId

范例

return IsFundInterestInfoId(314002);

//返回1
IsStockFinancialItem

范例

return IsStockFinancialItem(62003);


//返回1
IsFinancialInfoID
  • IsStock
  • IsTradeDay
  • TestStock
  • IsValidCode
  • ValidFullCode
  • IsCashFlowInfoId
  • IsMainReportId
  • AnalyseStockArr
  • IsBalanceInfoId
  • IsInterestInfoId
  • IsFundBalanceSheetInfoId
  • IsFundInterestInfoId
  • IsStockFinancialItem
  • IsFinancialInfoID

盘中相关

内容
  • Rd
Rd

范例

范例01取个股盘口行情

setsysparam(pn_stock(),'SZ000002');

  rds := array(datetimetostr(sp_time()),

        rd(0),//股票代码

        rd(1),//股票名称

        rd(2),//开盘价

        rd(3) //昨收

     );

  return rds;

返回结果:

范例02取多个股票盘口行情

stocks:=getbk('A股');//所有A股个股

ret:=array();

for i:=0 to length(stocks)-1 do

begin

 setsysparam(Pn_stock(),stocks[i]);

 ret[i,'StockID']:=stocks[i];

 ret[i,'StockName']:=StockName(stocks[i]);

 ret[i,'盘口时间']:=datetimetostr(rd(-1));

 ret[i,'价格']:=rd(6);

 ret[i,'成交量']:=rd(8);//可以类似新增其它指标

end

return ret;

范例03与行情函数的对比

//默认与现在指标函数对比

  SetSysParam(pn_stock(),'SZ000002');

  SetSysParam(pn_cycle(),cy_detail());

  return array(rd(6),close());//两者返回的结果相同

//与指定日函数取数对比

  SetSysParam(pn_stock(),'SZ000002');

  SetSysParam(pn_cycle(),cy_detail());

  SetSysParam(pn_date(),inttodate(20121212));

  return array(rd(6),close());//两者返回的结果不同,rd(6)返回的是最新价格,而close()返回的是20121212这天万科A的收盘价。

差别在与rd只是得到实盘的价格数据close()可以通过设置系统时间得到历史某个时点的价格。

//默认当前时间对比

  SetSysParam(pn_stock(),'SZ000002');

  SetSysParam(pn_cycle(),cy_detail());

  return array(rd(-1),sp_time());//两者返回的结果相同

//指定日当前时间对比

  SetSysParam(pn_stock(),'SZ000002');

  SetSysParam(pn_cycle(),cy_detail());

  SetSysParam(pn_date(),inttodate(20121212));

  return array(rd(-1),sp_time());//两者返回的结果不同。

第一个程序都是取到万科A最新的成交时间。在第二个程序中rd(-1)取到的是当前万科A的最新成交时间,但是sp_time()取到的是2012/12/12 00:00:00这个时刻前万科A最新的成交时间。

综上rd得到的就是程序运行这个时间点的行情的最新值,系统参数的设置对rd不起作用。

盘后相关(在当日可用于盘中)

内容
  • Low
  • SseSyl2
  • Sys_PrevClose
  • Open
  • Close
  • BuyVol3
  • Vol
  • Buy2
  • TradeCount
  • 行情数据说明
  • BuyVol2
  • Buy1
  • Amount
  • BuyVol1
  • High
  • SseSyl1
  • Buy3
  • SectionOpen
  • Sale2
  • SaleVol3
  • Sale5
  • SectionVol
  • Buy4
  • SaleVol4
  • SectionLow
  • SectionHigh
  • BuyVol5
  • SectionPrevClose
  • VolRate
  • Sale3
  • SectionAmount
  • Buy5
  • SaleVol1
  • Sale1
  • SectionTradeCount
  • SaleVol5
  • BuyVol4
  • SaleVol2
  • Sale4
  • InitialtiveBuyVol
  • SectionalInitialtiveSaleVol
  • SubmitBuyVol
  • SectionalInitialtiveBuyAmount
  • Advance
  • Prev_Settlement
  • SectionTradeWay
  • SubmitSaleVol
  • Decline
  • SectionalSubmitBSR
  • InitialtiveSaleAmount
  • OpenInterest
  • SectionalInitialtiveBuyVol
  • SectionOpenInterest
  • InitialtiveBuyAmount
  • SectionalSubmitBuyVol
  • SectionalSubmitSaleVol
  • InitialtiveSaleVol
  • SectionalInitialtiveSaleAmount
  • SubmitBSR
  • Settlement
  • IsEqual
  • Flat
  • IsDown
  • IsUp
Low

范例

//返回平安银行最低价

setsysparam(pn_stock(),"SZ000001");

setsysparam(pn_date(),inttodate(20140122));

return low();//返回11.35

参考High Close Open Vol Amount Sys_PrevClose

SseSyl2

范例

//返回股指期货IF1401在2014年1月15日的昨结算价

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_date(),inttodate(20140115));

return SseSyl2 ();//返回2213.6
Sys_PrevClose

范例

//返回平安银行系统昨收

setsysparam(pn_stock(),"SZ000001");

setsysparam(pn_date(),inttodate(20140122));

return Sys_PrevClose ();//返回11.36

参考High Close Open Vol Low Amount

Open

范例

//取平安银行在2025年4月29日的开盘价

   setsysparam(pn_stock(),"SZ000001");

   setsysparam(pn_date(),20250429T);

   setsysparam(pn_cycle(),cy_day());

   return open();//结果11
//获取万科A 2014年1月22日当天的复权开盘价复权方式为比例复权复权基准日是上市日。


setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(),strtodate('2014-01-22'));

  setsysparam(pn_rate(),1);

  setsysparam(pn_rateday(),-1);

  return open(); //结果615.24
//获取万科A 2014年1月22日14:00:001分钟线的复权开盘价复权方式为比例复权复权基准日是上市日。


setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_cycle(),cy_1m());

  setsysparam(pn_date(),strtodatetime('2014-01-22 14:00:00'));

  setsysparam(pn_rate(),1);

  setsysparam(pn_rateday(),-1);

  return open(); //结果648.38

参考Close High Low Vol Amount Sys_PrevClose SectionOpen

Close

范例

范例一:

//不设置股票、时间、周期、复权,默认取上证指数的最近交易日的日线不复权数据

//执行日期2014年1月27日取当天的数据

return close();

//结果2033.3

范例二:

//设置当前股票为万科A当前时间为2014-01-15

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_date(),inttodate(20140115));

return close();

//结果7.17

范例三:

//设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线该数据取的是09:59:01至10:00:00区间的最后一笔的价格

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime('2014-01-15 10:00:00'));

return close();

//结果7.18

范例四:

//设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线比例复权复权基准日为上市日

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_rate(),1);

setsysparam(pn_rateday(),-1);

setsysparam(pn_date(),strtodatetime("2014-01-15 10:00:00"));

c:=close();

return c;

//结果610.14

范例五:

//应用于nday取一段时间的收盘10日均价20日均价

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_cycle(),cy_day());

setsysparam(pn_date(),strtodate("2014-01-15"));

r:=nday(100,'time',datetostr(sp_time()),'close',close(),'ma10',ma(close(),10),'ma20',ma(close(),20));

return r;

结果:

参考Open High Low Vol Amount Sys_PrevClose

BuyVol3

范例参见BuyVol1。

Vol

范例

范例一:

//不设置股票、时间、周期、复权,默认取上证指数的最近交易日的日线不复权数据

//执行日期2014年1月27日取当天的数据

return vol();

//结果8881542144

范例二:

//设置当前股票为万科A当前时间为2014-01-15

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_date(),inttodate(20140115));

return vol();

//结果49175340

范例三:

//设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线该数据取的是09:59:01至10:00:00区间加总的数据

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime('2014-01-15 10:00:00'));

return vol();

//结果307063

范例四:

//设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线比例复权复权基准日为上市日

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_rate(),1);

setsysparam(pn_rateday(),-1);

setsysparam(pn_date(),strtodatetime("2014-01-15 10:00:00"));

v:=vol();

return v;

//结果3613.47

参考High Close Open Amount Low Sys_PrevClose

Buy2

范例参见Buy1。

TradeCount

范例

//返回平安银行实际成交笔数

setsysparam(pn_stock(),"SZ000001");

setsysparam(pn_date(),inttodate(20140122));

return TradeCount ();//返回28778
行情数据说明

行情数据一般与股票pn_stock、周期pn_cycle、当前时间pn_date、复权pn_rate、复权基准日pn_rateday相关。取行情数据相关函数一般需要先设置当前股票、周期、时间、复权、基准日等系统参数否则取默认值。默认当前股票为上证指数SH000001、当前周期为日线cy_day()、当前时间为今天today()、不复权、复权基准日为最后交易日。

周期说明:

分钟线的时间分割从上一时间的01秒开始到指定周期点的00秒结束。比如1分钟线取10:00:00的时间区间[09:59:01,10:00:00]。

其中close、buy1、buyvol1、buy2、buyvol2、buy3、buyvol3、buy4、buyvol4、buy2、buyvol5、sale1、salevol1、sale2、salevol2、sale3、salevol3、sale4、salevol4、sale5、salevol5、VolRate、InitiativeBuyAmount、InitiativeBuyVol、InitiativeSaleAmount、InitiativeSaleVol以及当日时点累计数据取的都是该周期内最后一笔的数据。

high、low、open、vol、Amount、TradeCount、SubmitBuyVol、SubmitSaleVol等取区间统计数据。

时间说明:

如果取分时数据时间设置时需要加上时间部分如setsysparam(pn_date(),strtodatetime("2014-01-02 10:00:00"));

如果不指定时间部分如setsysparam(pn_date(),strtodate ("2014-01-02"))则默认取当天0点0分的数据即会取到前一个交易日的最后一个分时周期的数据。

BuyVol2

范例参见BuyVol1。

Buy1

范例

//返回平安银行买一价

setsysparam(pn_stock(),"SZ000001");

setsysparam(pn_date(),inttodate(20140122));

return Buy1();//返回11.78,当天收盘时的买一价
Amount

范例

范例一:

//设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线该数据取的是09:59:01至10:00:00区间加总的数据

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime('2014-01-15 10:00:00'));

return Amount();

//结果2204439.5

范例二:

//设置当前股票为万科A当前时间为2014-01-15 10:00:00周期为1分钟线比例复权复权基准日为上市日

//跟复权无关,复权之后与范例一中不复权的结果相同

setsysparam(pn_stock(),"SZ000002");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_rate(),1);

setsysparam(pn_rateday(),-1);

setsysparam(pn_date(),strtodatetime("2014-01-15 10:00:00"));

A:=Amount();

return A;

//结果2204439.5

参考High Close Open Vol Low Sys_PrevClose

BuyVol1

范例

//返回平安银行买一量

setsysparam(pn_stock(),"SZ000001");

setsysparam(pn_date(),inttodate(20140122));

return BuyVol1 ();//返回480265,当天收盘时的买一量
High

范例

//返回平安银行最高价

setsysparam(pn_stock(),"SZ000001");

setsysparam(pn_date(),inttodate(20140122));

return High();

//返回11.86

参考Close Open Low Vol Amount Sys_PrevClose

SseSyl1

范例

//返回股指期货IF1401在2014年1月15日的结算价

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_date(),inttodate(20140115));

return SseSyl1 ();//返回2210.4
Buy3

范例参见Buy1。

SectionOpen

范例

通过范例一和范例二可以比较SectionOpen和open的区别

范例一:

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime("2014-01-15 10:00:00"));

SO:=SectionOpen();

O:=open();

return array(SO,O);

//返回array(2220.2,2212.2)

范例二:

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime("2014-01-15 14:00:00"));

SO:=SectionOpen();

O:=open();

return array(SO,O);

//返回array(2220.2,2206.6)

参考High close Open Vol Amount Sys_PrevClose

Sale2

范例参见Buy1。

SaleVol3

范例参见BuyVol1。

Sale5

范例参见Buy1。

SectionVol

范例

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime("2014-01-15 14:00:00"));

SV:=SectionVol ();

return SV;

//返回372927截止至14:00:00止1月15日的成交量

参考High close Open Amount Low Sys_PrevClose

Buy4

范例参见Buy1。

SaleVol4

范例参见BuyVol1。

SectionLow

范例

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime("2014-01-15 14:00:00"));

SL:=SectionLow ();

return SL;

//返回2196截止至14:00:00止1月15日的最低价

参考High close Open Vol Amount Sys_PrevClose

SectionHigh

范例

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime("2014-01-15 14:00:00"));

SH:=SectionHigh ();

return SH;

//返回2221.8截止至14:00:00止1月15日的最高价

参考High close Open Vol Amount Sys_PrevClose

BuyVol5

范例参见BuyVol1。

SectionPrevClose

范例参见SectionOpen。参考High close Open Vol Low Amount

VolRate

范例参见Close。

Sale3

范例参见Buy1。

SectionAmount

范例

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime("2014-01-15 14:00:00"));

SA:=SectionAmount ();

return SA;

//返回247128702720截止至14:00:00止1月15日的成交金额

参考High close Open Vol Low Sys_PrevClose

Buy5

范例参见Buy1。

SaleVol1

范例参见BuyVol1。

Sale1

范例参见Buy1。

SectionTradeCount

范例

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime("2014-01-15 14:00:00"));

STC:=SectionTradeCount ();

return STC;

//返回73643截止至14:00:00止1月15日的成交比数
SaleVol5

范例参见BuyVol1。

BuyVol4

范例参见BuyVol1。

SaleVol2

范例参见BuyVol1。

Sale4

范例参见Buy1。

InitialtiveBuyVol

范例参见Close。参考High Close Open Vol Low Sys_PrevClose

SectionalInitialtiveSaleVol

范例参见Close。参考High close Open Vol Low Sys_PrevClose

SubmitBuyVol

范例参见Vol。参考High Close Open Vol Low Sys_PrevClose

SectionalInitialtiveBuyAmount

范例参见Close参考High close Open Vol Low Sys_PrevClose

Advance

范例

//获得上证A股板块的涨跌情况

setsysparam(pn_stock(),'SH000001');

  setsysparam(pn_date(),inttodate(20110908));

  market_ad := array('上涨家数':advance(),

           '下跌家数':decline(),

           '平盘家数':flat()

  );

  return market_ad;

结果:

参考Decline Flat

Prev_Settlement

范例

//返回沪深300股指期货当月合约在20110907的前结算价

SetSysParam(PN_Stock(),'IF01');

SetSysParam(PN_Date(),inttodate(20110907));

SetSysParam(PN_Cycle(),cy_day());

return Prev_Settlement();

//返回2011年9月7日的前结算价2726.6
SectionTradeWay
SubmitSaleVol

范例参见Vol。参考High close Open Vol Low Sys_PrevClose

Decline

范例参见Advance参考Advance Flat

SectionalSubmitBSR

范例参见Close参考High close Open Vol Low Sys_PrevClose

InitialtiveSaleAmount

范例参见Close。参考High Close Open Vol Low Sys_PrevClose

OpenInterest

范例

setsysparam(pn_stock(),"IF1401");

setsysparam(pn_cycle(),cy_1m());

setsysparam(pn_date(),strtodatetime("2014-01-15 10:00:00"));

OI:=OpenInterest();

return OI;

//结果18
SectionalInitialtiveBuyVol

范例参见Close。参考High Close Open Vol Low Sys_PrevClose

SectionOpenInterest

范例参见Close。

InitialtiveBuyAmount

范例参见close。参考High close Open Vol Low Sys_PrevClose

SectionalSubmitBuyVol

范例参见Close。参考High close Open Vol Low Sys_PrevClose

SectionalSubmitSaleVol

范例参见Close。参考High close Open Vol Low Sys_PrevClose

InitialtiveSaleVol

范例参见close。参考High close Open Vol Low Sys_PrevClose

SectionalInitialtiveSaleAmount

范例参见Close。参考High close Open Vol Low Sys_PrevClose

SubmitBSR

范例参见Close。参考High Close Open Vol Low Sys_PrevClose

Settlement

范例参见Close。

IsEqual

范例参见IsUp参考IsUp IsDown

Flat

范例参见Advance参考Advance Decline

IsDown

范例参见IsUp。参考IsUp IsEqual

IsUp

范例

//万科在指定区间内的上涨下跌情况;

  setsysparam(pn_stock(),'SZ000002');

  end_date := inttodate(20110909);

  beg_date := IncWeek(end_date,-1); //end_date 前推一个

  r := array();

  i := 0;

  for d := end_date downto beg_date do

  begin

   if not istradeday(d) then continue;

   setsysparam(pn_date(),d);

r[i]['date'] := datetostr(d);

   if IsUp() then r[i]['ud_state'] := '涨';

   else if IsDown() then r[i]['ud_state'] := '跌';

   else if IsEqual() then r[i]['ud_state'] := '平';

   i++;

  end;

  return r;

返回结果如下图:

参考IsDown IsEqual

时间序列统计

此处的时间序列统计是直接对天软数据仓库中的时间序列数据的统计。如果需要对其他类型的数据进行统计可以使用统计函数或者TS-SQL的时间序列统计功能。

内容
  • HHV
  • LLV
  • MA
  • EMA
  • SMA
  • Count
  • SumN
  • SP_STD
  • SP_STDP
  • SP_VAR
  • SP_VARP
  • SP_AVEDEV
  • SP_DEVSQ
  • Cross
  • sp_large
  • sp_small
  • sp_percentile
  • sp_percentrank
  • sp_quartile
  • sp_rank
  • sp_trimmean
  • sp_frequency
  • sp_geomean
  • sp_harmean
  • sp_median
  • sp_mode
  • sp_product
  • sp_totalvariance
  • sp_norm
  • sp_skewness
  • sp_kurtosis
  • sp_skewness2
  • sp_kurtosis2
  • 双序列统计
  • 时间序列统计缓存标志与性能加速
HHV

范例

//获取万科A(SZ000002)截止2011-09-09日14个交易日内的最高最低的收盘价以及

//发生日期。

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(),inttodate(20110909));

  N := 14;

r :=array('h_value':hhv(close(),N),

         'h_date':datetostr(GetSysParam('hhvtime')),

         'l_value':llv(close(),N),

         'l_date':datetostr(GetSysparam('llvtime'))

        );

  return r;

结果:

参考LLV

LLV

范例参见HHV

参考HHV

MA

范例

范例一:

//获得万科A(SZ000002)在2011-09-09日的10日均价

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(),inttodate(20110909));

  N := 10;

  return ma(close(),N);


//返回8.103

范例二:

//获取万科A一段时间的10日均价


setsysparam(pn_stock(),"SZ000002");


setsysparam(pn_date(),strtodate("2014-01-15"));


t:=nday(100,'time',sp_time(),'close',close(),'ma10',ma(close(),10),'ma20',ma(close(),20));


return t;

结果:

EMA

算法函数EMA算法说明

Y=EMA(X,N) 则Y=[2*X+(N-1)*Y']/(N+1),

其中Y'表示上一周期Y值它的初值为X的第一个数据一般推到上市日当天

手算可参考:

附件:ema手算.xlsx

范例

//获得万科A(SZ000002)在2011-09-09日的10日平滑移动均价

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(),inttodate(20110909));

  N := 10;

  return ema(close(),N);


// 结果8.1158
SMA

算法若Y=SMA(X,N,M)则Y=[M*X+(N-M)*Y']/N,其中Y'表示上一周期Y值,N必须大于M。范例

//获得万科A(SZ000002)在2011-09-09日的10日平滑移动均价,3为权重

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(),inttodate(20110909));

  N := 10;

M :=3;

  return sma(close(),N,M);//返回8.0914
Count

范例

//上证指数在最近100天内的上涨天数

  setsysparam(pn_stock(),'SH000001');

  setsysparam(pn_date(),inttodate(20140122));

  return count(isup(),100);


//返回47。
SumN

范例

//获得万科A(SZ000002)在2011-09-09日的5日总成交量

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(),inttodate(20110909));

  return sumn(VOL(),5); // 返回152502152
SP_STD

范例

//计算万科A截止20110909前30个交易日股价的统计信息

  setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(), inttodate(20110909));

  _stat := array();

  _stat := array('标准差':sp_std(close(),30),

         '总体标准差':sp_stdp(close(),30),

         '方差':sp_var(close(),30),

         '总体方差':sp_varp(close(),30),

         '平均绝对偏差':sp_avedev(close(),30),

         '偏差平方和':sp_devsq(close(),30));

  return _stat;

结果:

参考时间序列统计

SP_STDP

范例

//计算万科截止20110909前30个交易日股票的总体标准差

  setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(), inttodate(20110909));

  return sp_stdp(close(),30);//返回0.1456

参考时间序列统计

SP_VAR

范例

//计算万科截止20110909前30个交易日股票的样本方差

  setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(), inttodate(20110909));

  return sp_var(close(),30);//返回0.0219

参考时间序列统计

SP_VARP

范例参见SP_VAR参考时间序列统计

SP_AVEDEV

范例参见SP_VAR参考时间序列统计

SP_DEVSQ

范例参见SP_VAR参考时间序列统计

Cross

范例

//万科在指定区间内的均线穿越情况;

  setsysparam(pn_stock(),'SZ000002');

  end_date := inttodate(20110829);

  beg_date := IncWeek(end_date,-1); //end_date 前推一个

  r := array();

  i := 0;

  for d := end_date downto beg_date do

  begin

   if not istradeday(d) then continue;

   setsysparam(pn_date(),d);

r[i]['date'] := datetostr(d);

   case cross(close(),ma(close(),5)) of

   1:begin

     r[i]['cross_state'] := '突破5日均线';

    end

   -1:begin

     r[i]['cross_state'] := '跌破5日均线';

    end

   0:begin

     r[i]['cross_state'] := '';

    end

   end;

   i++;

  end;

  return r;

返回结果:

sp_large

算法

备注指定表达式与系统当前时间相关M的取值数据小于N.范例

万科A在2018/10/30最近10个日线交易日内分时数据成交量的最大值

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"分钟线最大成交量",Specall(SP_Large(Vol(),1,240),Array(Pn_Cycle():Cy_1m(),pn_date():SP_time()+0.99)));
sp_small

范例

万科A在2018/10/30最近12月中月末最后5个日线交易日的最小值价格序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

Setsysparam(pn_Cycle(),cy_Month());

return Nday(12,"日期",SP_time(),"月末5日最小价格",Specall(SP_Small(Close(),1,5),Array(Pn_Cycle():Cy_day())));
sp_percentile

范例

万科A在2018/10/30最近10个日线交易日中每天分钟线收盘价格第0.8百分比对应的价格数据序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

Return Nday(10,"日期",SP_time(),"价格",SpecAll(SP_percentile(close(),0.8,240),Array(pn_Cycle():Cy_1m(),pn_date():SP_time()+0.99)));
sp_percentrank

范例万科A在2018/10/30日最近10个交易的收盘价在每天分时价格的百分比排名

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

Return Nday(10,"日期",SP_time(),"百分比",SpecAll(SP_percentRank(close(),close(),240),Array(pn_Cycle():Cy_1m(),pn_date():SP_time()+0.99)));
sp_quartile

范例万科A在2018/10/30日最近10个交易日的收盘价在每天第2个四分位的价格序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"价格",Specall(SP_quartile(Close(),2,4800),Array(Pn_Cycle():Cy_3s(),pn_date():SP_time()+0.99)));
sp_rank

范例万科A在2018/10/30最近10个交易日的收盘价在每日分时价格序列中的排名

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

Return Nday(10,"日期",SP_time(),"排名",SpecAll(SP_Rank(close(),close(),240),Array(pn_Cycle():Cy_1m(),pn_date():SP_time()+0.99)));
sp_trimmean

范例万科A在2018/10/30最近10个交易日每天交易价格去除掉首尾比例占10%后的平均价格序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"平均价格",Specall(SP_trimmean(Close(),0.8,4800),Array(Pn_Cycle():Cy_3s(),pn_date():SP_time()+0.99)));
sp_frequency

范例万科A在2018/10/30最近20个交易日每天涨幅在-7,-3,0,3,7的分布情况

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return sp_frequency(Stockzf3(),Array(-7,-3,0,3,7),20);
sp_geomean

范例万科A在2018/10/30最近10个交易日每天60分钟线的几何平均价格序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),

"几何平均价格",Specall(SP_geomean(Close(),4),

Array(Pn_Cycle():Cy_60m(),pn_date():SP_time()+0.99)));
sp_harmean

范例万科A在2018/10/30最近10个交易日每天交易价格的调和平均价格序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"调和平均价格",Specall(SP_Harmean(Close(),4800),Array(Pn_Cycle():Cy_3s(),pn_date():SP_time()+0.99)));
sp_median

范例万科A在2018/10/30前30个交易日中每天交易价格的中位数序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(30,"日期",SP_time(),"众数",Specall(Sp_Median(Close(),tradedays(SP_time(),SP_time()+14/24+57/24/60)),Array(pn_date():SP_Time()+14/24+57/24/60,pn_Cycle():Cy_3s())));
sp_mode

范例万科A在2018/10/30前30个交易日中每天交易价格的众数序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(30,"日期",SP_time(),"众数",Specall(Sp_Mode(Close(),tradedays(SP_time(),SP_time()+14/24+57/24/60)),Array(pn_date():SP_Time()+14/24+57/24/60,pn_Cycle():Cy_3s())));
sp_product

范例万科A在2018/10/30最近12个月中每月最后5个日线交易日累计涨幅序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

Setsysparam(pn_Cycle(),cy_Month());

return Nday(12,"日期",SP_time(),"最后一周累计涨幅",Specall((SP_product(1+stockzf3()/100,5))*100-100,array(pn_date():SP_time(),pn_Cycle():Cy_day())));
sp_totalvariance

范例万科A在2018/10/30最近10个交易日每天交易价格的总体偏差

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"偏差",Specall(SP_totalvariance(Close(),4800),array(pn_date():SP_time()+0.99,pn_Cycle():Cy_3s())));
sp_norm

范例万科A在2018/10/30最近10个交易日每天成交价格相对平均价格波动的标准差

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(10,"日期",SP_time(),"标准差",1/SQRT(4800)*Specall(sp_Norm(Close()-StockPJCJ4(SP_time()),4800),Array(pn_Cycle():Cy_3s(),pn_date():SP_time()+0.99)));
sp_skewness

范例万科A在2018/10/30最近10个交易日每天交易价格的偏度序列其中偏度的计算用的是3秒线的价格序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"偏度",Specall(SP_skewness(Close(),4800),array(pn_date():SP_time()+0.99,pn_Cycle():Cy_3s())));
sp_kurtosis

范例万科A在2018/10/30最近10个交易日每天交易价格的峰度序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"峰度",Specall(SP_kurtosis(Close(),4800),array(pn_date():SP_time()+0.99,pn_Cycle():Cy_3s())));
sp_skewness2

范例万科A在2018/10/30最近10个交易日每天交易价格的偏度序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"偏度",Specall(SP_skewness2(Close(),4800),array(pn_date():SP_time()+0.99,pn_Cycle():Cy_3s())));
sp_kurtosis2

范例

万科A在2018/10/30最近10个交易日每天交易价格的峰度序列

Setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return Nday(10,"日期",SP_time(),"峰度",Specall(SP_kurtosis2(Close(),4800),array(pn_date():SP_time()+0.99,pn_Cycle():Cy_3s())));
双序列统计
内容
  • sp_cov
  • sp_correl
  • sp_slope
  • sp_intercept
  • sp_rsq
  • sp_steyx
  • sp_slopeandintercept
sp_cov

范例2018/10/30万科与大盘最近10天每天与大盘走势的协方差序列

setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(10,"日期",SP_time(),"协方差",Specall(SP_Cov(close(),Spec(Close(),"SH000001"),4800),Array(pn_date():SP_time()+0.99,pn_Cycle():cy_3s())));
sp_correl

范例2018/10/30万科与大盘最近10天每天与大盘走势的相关系数序列

setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(10,"日期",SP_time(),"相关系数",Specall(SP_Correl(close(),Spec(Close(),"SH000001"),4800),Array(pn_date():SP_time()+0.99,pn_Cycle():cy_3s())));
sp_slope

范例2018/10/30万科与大盘最近10天每天与大盘走势的回归斜率

setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(10,"日期",SP_time(),"回归斜率",Specall(SP_slope(close(),Spec(Close(),"SH000001"),4800),Array(pn_date():SP_time()+0.99,pn_Cycle():cy_3s())));
sp_intercept

范例2018/10/30万科与大盘最近10天每天与大盘走势的回归截距

setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(10,"日期",SP_time(),"回归截距",Specall(SP_intercept(close(),Spec(Close(),"SH000001"),4800),Array(pn_date():SP_time()+0.99,pn_Cycle():cy_3s())));
sp_rsq

范例2018/10/30万科与大盘最近10天每天与大盘走势的Pearson乘积矩相关系数的平方

setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(10,"日期",SP_time(),"系数平方",Specall(SP_RSQ(close(),Spec(Close(),"SH000001"),4800),Array(pn_date():SP_time()+0.99,pn_Cycle():cy_3s())));
sp_steyx

范例2018/10/30万科与大盘最近10天每天与大盘走势的相对标准偏差

setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday(10,"日期",SP_time(),"相对标准偏差",Specall(SP_steyx(close(),Spec(Close(),"SH000001"),4800),Array(pn_date():SP_time()+0.99,pn_Cycle():cy_3s())));
sp_slopeandintercept

范例2018/10/30万科与大盘最近10天每天与大盘走势的回归斜率和截距

setsysparam(pn_Stock(),"SZ000002");

Setsysparam(pn_date(),20181030T);

return nday3(10,Specall(SP_slopeandintercept(close(),Spec(Close(),"SH000001"),4800),Array(pn_date():SP_time()+0.99,pn_Cycle():cy_3s())));
时间序列统计缓存标志与性能加速

技术时间序列统计相关函数会自动进行数据缓存以进行加速,例如:

EMA(Close(),30)在执行的时候如果存在在Nday或者MA,EMA等序列函数中每一步计算均会利用前一个交易日计算的缓存。这样效率可以得到大大的提高但是这个时候产生了一个问题例如

EMA(EMA(Close(),N),30)在这个外围EMA的计算中由于内层EMA的参数N是不定的所以外层EMA的缓存无法知道按照什么规则进行缓存如果直接缓存的话有可能在N的不同参数的调用时得到错误的结果。这个时候我们通过给每个时间序列统计函数CROSS除外增加了一个可选的参数即一个缓存的字符串标志。这个字符串标志作用域仅仅用于当前调用的时间序列统计函数和其他调用的标志定义无关也就是说可以和其他调用的标志定义重复也可以

这样说起来很拗口,我们可以来一个例子来说明:

DEA:=EMA(EMA(Close(),Short)-EMA(Close(),Long),M,""Short" "$Long);

这个上述代码是MACD的定义中的一段代码我们可以看到对于DEA而言由于EMA的内还有两个EMA的计算分别和SHORT参数和LONG参数有关我们可以将SHORT参数和LONG参数组成一个字符串来作为外层EMA的缓存标志串这样当具有缓存的时候当SHORT和LONG进行了改变我们不会利用其他参数组存贮的缓存数据来进行EMA的计算也就是说我们只会用SHORT和LONG相同的计算缓存这样就避免了缓存错误的问题。

对于上述的除CROSS函数以外的时间序列统计函数而言我们均支持在最后增加一个可选的缓存标志串。

由于缓存会占据存贮空间而且还因为不会因数据变化而改变而得到不正确的结果因此缓存仅仅在NDAY以及上述时间序列函数中被打开在执行完最外层的时间序列统计函数之后缓存会被清除。

我们有时候会在策略回测多因素模型等开发的时候希望利用到技术指标加速但我们又不是使用NDAY等序列函数来提取数据而是通过循环来提取数据这个时候我们需要利用相应的指令来打开这个缓存。有的时候我们又或许不希望使用缓存。

内容
  • TechCacheDo打开技术类缓存
  • NoTechCacheDo禁用技术类缓存
TechCacheDo打开技术类缓存

范例

TechCacheDo

Begin

for i:=0 to length(Days)-1 do

begin

setsysparam(pn_Date(),Days[i]);

Kdj:=kdj_f(9,3,3,0);//在时间循环中需要在KDJ计算中进行加速

..........................

end;

End;
NoTechCacheDo禁用技术类缓存

成交明细数据函数

内容
  • toverData
  • toverDataEx
  • TD
  • TDByIndex
  • TDCount
  • TDCountEx
  • TDInfo
  • TDInfoByIndex
  • TDSum
toverData

范例

//获得万科A(SZ000002)当日(交易日)的成交明细;

  setsysparam(pn_stock(),'SZ000002');

  t:=toverdata(inttodate(20140115));

  update t set ['time']=datetimetostr(['time']) end;

  return t;

结果:

toverDataEx

范例

//获得万科A(SZ000002)在2014-1-15日13点至15点之间成交量在10000~90000

  //成交金额0~9000000,价格7.00~8.00之间的交易明细

  setsysparam(pn_stock(),'SZ000002');

  fields := 0;

  d := inttodate(20140115);

  trade_flag := 0;

  beg_time := strtotime('13:00:00');

  end_time := strtotime('15:00:00');

  min_vol := 10000;

  min_amount := 0;

  min_price := 7.00;

  max_vol := 90000;

  max_amount := 9000000;

  max_price := 8.00;

  return toverdataex(fields,d,trade_flag,beg_time,end_time,

           min_vol,min_amount,min_price,max_vol,max_amount,max_price);

结果:

TD

范例

//获得万科A(SZ0000002)在2011-09-09 14:15:33的10s

setsysparam(pn_stock(),'SZ000002');

  setsysparam(PN_Cycle(),cy_10s());

setsysparam(pn_date(),strtodatetime('2011-09-09 14:15:33'));

  tds := array(

        datetimetostr(td(0)),//时间

        td(1),//价格

        td(2),//成交金额

        td(3) //成交量

     );

  return tds;

返回结果:

TDByIndex

范例

//返回万科A在20110909日第100条交易记录的时间、价格、成交金额和成交量。

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(),inttodate(20110909));

  tds := array(

        datetimetostr(tdbyindex(0,100)),//日期时间

        tdbyindex(1,100),//价格

        tdbyindex(2,100),//成交金额

        tdbyindex(3,100) //成交量

     );

  return tds;

返回结果如下图:

TDCount

范例

//获取万科A(SZ000002)截止2011-09-09的5天内系统记录的交易记录数量

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(),inttodate(20110909));

  return nday(5,'date',datetostr(sp_time()),'系统记录交易点数量',tdcount());

返回结果如下图:

TDCountEx

范例

//获得万科A(SZ000002)在2014-1-15日13点至15点之间成交量在10000~90000

  //成交金额0~9000000,价格7.00~8.00之间的主买的交易记录个数

  setsysparam(pn_stock(),'SZ000002');

  fields := 0;

  d := inttodate(20140115);

  trade_flag := 1;

  beg_time := strtotime('13:00:00');

  end_time := strtotime('15:00:00');

  min_vol := 10000;

  min_amount := 0;

  min_price := 7.00;

  max_vol := 90000;

  max_amount := 9000000;

  max_price := 8.00;

  return tdcountex(d,trade_flag,beg_time,end_time,

           min_vol,min_amount,min_price,

           max_vol,max_amount,max_price);


//返回221
TDInfo

范例

//获得万科A(SZ000002)在2014-1-15 10:00:00时间点的交易明细数组

  setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_cycle(),cy_1m());

  setsysparam(pn_date(),strtodatetime("2014-01-15 10:00:00"));

  return TDInfo();

返回结果:

TDInfoByIndex

范例

//获得万科A(SZ000002)在2011-9-9日最后一条交易明细数组

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(),inttodate(20110909));

return TDInfoByIndex(-1);

返回结果如下图:

TDSum

范例

//对万科A(SZ000002)在2011-9-9日统计满足以下条件的成交量成交金额

//13点至15点之间、成交量在10000~90000

  //成交金额0~9000000、价格8.00~8.50之间且是主买

  setsysparam(pn_stock(),'SZ000002');

  d := inttodate(20110909);

  trade_flag := 1;

  beg_time := strtotime('13:00:00');

  end_time := strtotime('15:00:00');

  min_vol := 10000;

  min_amount := 0;

  min_price := 8.00;

  max_vol := 90000;

  max_amount := 9000000;

  max_price := 8.50;

  TDSum(sumVol,sumAmount,d,trade_flag,beg_time,end_time,

           min_vol,min_amount,min_price,

           max_vol,max_amount,max_price);

  return array(sumVol,sumAmount);

返回结果如下图:

交易明细字段标识函数

内容
  • tdf_buy2
  • tdf_sale3
  • tdf_vol
  • tdf_buy5
  • tdf_time
  • tdf_price
  • tdf_buy3
  • tdf_amount
  • tdf_sale1
  • tdf_lb
  • tdf_sale4
  • tdf_buy4
  • tdf_sale5
  • tdf_buy1
  • tdf_sale2
  • tdf_buy3count
  • tdf_tradecount
  • tdf_sale2count
  • tdf_buy5count
  • tdf_buy2count
  • tdf_sale3count
  • tdf_sale5count
  • tdf_buy1count
  • tdf_buy4count
  • tdf_syl2
  • tdf_sale1count
  • tdf_sale4count
  • tdf_syl1
tdf_buy2

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale3

范例参见tdf_time。参考toverDataEx tdf_time

tdf_vol

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy5

范例参见tdf_time。参考toverDataEx tdf_time

tdf_time

范例

//获得万科A(SZ000002)在2011-9-9日13点至15点之间成交量在10000~90000

  //成交金额0~9000000,价格8.00~8.50之间的时间序列

  setsysparam(pn_stock(),'SZ000002');

  fields := 0;

  d := inttodate(20110909);

  trade_flag := 0;

  beg_time := strtotime('13:00:00');

  end_time := strtotime('15:00:00');

  min_vol := 10000;

  min_amount := 0;

  min_price := 8.00;

  max_vol := 90000;

  max_amount := 9000000;

  max_price := 8.50;

  return toverdataex(tdf_time(),d,trade_flag,beg_time,end_time,

min_vol,min_amount,min_price,max_vol,max_amount,max_price);

返回结果如下图:

参考toverDataEx

tdf_price

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy3

范例参见tdf_time。参考toverDataEx

tdf_amount

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale1

范例参见tdf_time。参考toverDataEx

tdf_lb

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale4

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy4

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale5

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy1

范例参见tdf_time。参考toverDataEx

tdf_sale2

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy3count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_tradecount

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale2count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy5count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy2count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale3count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale5count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy1count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_buy4count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_syl2

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale1count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_sale4count

范例参见tdf_time。参考toverDataEx tdf_time

tdf_syl1

范例参见tdf_time。参考toverDataEx tdf_time

查询和轮询函数

内容
  • Query
  • Foreach
Query

范例

//查询指定日期在板块上证A股;创业板以及SZ000001;SZ000002;SZ000997中满足

  //收盘价大于10日均线的股票的以下信息证券代码、证券名称收盘价。

  setsysparam(pn_date(),inttodate(20110909));

data:=Query('上证A股;创业板','SZ000001;SZ000002;SZ000997',

        close()>ma(close(),10),'',

        '证券代码',DefaultStockID(),

        '证券名称',CurrentStockName(),

        '收盘价',close());

  return data;

结果:

Foreach

市场和板块函数

内容
  • GetBK
  • GetUserBKList
  • GetBKList
  • GetUserBKList2
  • GetBKList2
GetBK

范例

stocks := GetBk('上证A股;创业板');

  return stocks;

返回结果如下图:

参考GetUserBKList GetBKList GetUserBKList2 GetBKList2 getbkbydate

GetUserBKList

范例

//范例一:获取所有的用户板块名称

my_sectors := GetUserbkList ();

return my_sectors;

//范例二:获取指定目录下的用户板块名称

//用户板块的申万行业下,有多个子目录,用户需要指定子目录获取子目录下的用户板块

my_sectors := GetUserbkList ("申万行业\\申万金融业");

return my_sectors;

参考GetBK GetBKList GetUserBKList2 GetBKList2

GetBKList

范例

范例01

//获得申万行业列表,其中,“申万行业”是申万相关行业板块的目录名称或父板块名称。

  bk_list := GetBKList('申万行业');

  return bk_list;

返回结果如下:

范例02

//获得申万行业-采掘业子行业列表

  bk_list2 := GetBKList('申万行业\\申万采掘');

  return bk_list2;

返回结果如下:

参考GetBK GetUserBKList GetUserBKList2 GetBKList2

GetUserBKList2

范例

//获得用户板块的申万行业下的所有板块及其所属的行业组别

my_sectors :=GetUserBKList2("申万行业");

return my_sectors;

结果:

参考GetBK GetBKList GetUserBKList GetBKList2

GetBKList2

范例

//返回所有系统板块列表

return GetBklist2();

返回结果如下图:

范例二:

//返回系统申万行业板块列表

return GetBklist2('申万行业');

结果(部分)

参考GetBK GetUserBKList GetUserBKList2 GetBKList

取行情数据序列函数

内容
  • NDay
  • NDay2
  • NDay3
NDay

范例

//返回万科A历史2天的收盘价

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(),inttodate(20140115));

Table:=NDay( 2, 'close' , Close() );

{默认当前周期为日线设置当前时间为2014年1月15日当前股票的昨天的收盘价格为7.23今天的当前价格为7.17,则返回的结果相当于

Table:= Array (('close': 7.23),('close': 7.17));

也就是说X相当于

Table[0]['close']:=7.23;

Table[1]['close']:=7.17;

}
//取得万科截止20110909前30个交易日的若干行情信息

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(), inttodate(20110909));

return nday(30,'时间',datetimetostr(sp_time()),

         '收盘价',close(),

         '当日高价',high(),

         '30日均线',ma(close(),30));

结果(部分)

参考NDay2 NDay3

NDay2

范例

//用NDAY2取得万科截止20110909前30个交易日的若干行情信息

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(), inttodate(20110909));

setsysparam(pn_nDay(),30);

return nday2('时间',datetimetostr(sp_time()),

      '收盘价',close(),

      '当日高价',high(),

      '30日均线',ma(close(),30));

返回结果(部分)

参考NDay NDay3

NDay3

范例

//取得万科截止20110909前30个交易日的价格序列(按交易日升序排列)

setsysparam(pn_stock(),'SZ000002');

setsysparam(pn_date(), inttodate(20110909));

return nday3(30,close());

结果:

参考NDay NDay2

引用指定函数

内容
  • Ref
  • SpecDate
  • Spec
  • SpecAll
Ref

范例

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(), inttodate(20110909));

  r := array();

  r := array('设定日价格':close(),//20110909

         '设定日前1交易日收盘':ref(close(),1),//20110908

         '设定日后1交易日收盘':ref(close(),-1));//20110913

  return r;

结果:

SpecDate

范例

setsysparam(pn_stock(),'SZ000002');

  setsysparam(pn_date(), inttodate(20110909));

  return nday(30,'date',datetostr(sp_time()),

         'close',close(),

         //使用年初价格作为参照。

         'close_20110101',specdate(close(),inttodate(20110101)));

结果(部分)

参考Spec TDateTime

Spec

范例

//获得两个指数时间序列净值曲线

setsysparam(pn_stock(),'SH000904');

  setsysparam(pn_date(), inttodate(20110909));

  N := 30;

  beg_close1 := ref(close(),N-1);//SH000904 N日前收盘

  beg_close2 := spec(ref(close(),N-1),'SH000300');//SH000300 N日前收盘

  return nday(N,'date',datetostr(sp_time()),

         '中证200',1000*close()/beg_close1,

         '沪深300',1000*spec(close(),'SH000300')/beg_close2);

结果(部分)

参考SpecDate

SpecAll

范例

return specall(close(),

array(pn_stock():'SZ000001',

pn_date():inttodate(20140117),

pn_rate():1,

pn_rateday():-1));

//获取SZ000001的2014年01月17日的复权价格复权方式为比例复权复权基准日为上市日。

参考SpecDate Spec

系统参数设置和获取函数

内容
  • GetSysParam
  • SetSysParam
  • sp_s
  • sp_g
GetSysParam

范例

//获取当前的股票代码

Return GetSysParam(pn_stock());//返回SH000001;

参考SetSysParam 系统参数名称函数 块环境设置语句 SYSPARAMS

SetSysParam

范例

范例1设置及提取

setsysparam('Abc',123);//自定义参数名为'Abc'并赋值为123


return getsysparam('Abc');//提取参数名为'Abc'的值。


//返回123


//或


setsysparam('Abc',123);


return sysparams['Abc'];//提取参数名为'Abc'的值。

范例2常用于设置系统参数如证券时间周期等。

setsysparam(pn_stock(),'SZ000002');//设置当前证券为万科A


setsysparam(pn_date(),20190218T);//设置当前时间为2019-2-18


setsysparam(pn_cycle(),cy_day());//设置周期为日线


return close();//提取收盘价


//返回27.2

范例3

//设置当前的股票为平安银行SZ000001设置当前的时间为2014-01-15

Setsysparam(pn_stock(),'SZ000001');

Setsysparam(pn_date(),inttodate(20140115));

return close();

参考GetSysParam 系统参数名称函数 块环境设置语句 SYSPARAMS

sp_s

范例

范例一:设置及提取

  sp_s ('Abc',123);//自定义参数名为'Abc'并赋值为123

  return sp_g('Abc');//提取参数名为'Abc'的值。

  //返回123

范例二:常用于设置系统参数如证券,时间,周期等。

sp_s (pn_stock(),'SZ000002');//设置当前证券为万科A

sp_s (pn_date(),20190218T);//设置当前时间为2019-2-18

sp_s (pn_cycle(),cy_day());//设置周期为日线

return close();//提取收盘价

//返回27.2
sp_g

范例

//获取当前的股票代码

Return sp_g (pn_stock());//返回SH000001;

复权类型函数

内容
  • rt_none
  • rt_scale
  • rt_complex
rt_none

参考pn_Rate

rt_scale

参考pn_Rate

rt_complex

参考pn_Rate

复权基准日函数

内容
  • rd_lastday
  • rd_firstday
rd_lastday

参考pn_RateDay

rd_firstday

参考pn_RateDay

周期函数

周期函数为设置周期系统参数的常量函数。

周期有四类,第一类是日、周、月、季、半年、年,第一类是分钟为单位的周期,第三类是秒为单位的周期,第四类是以成交明细里的点为单位。

从2014年7月起天软平台开始提供了对自由周期的支持自由周期分为两种类型一种是任意秒滚动周期另外一种是任意交易日滚动周期。对于任意秒滚动周期而言周期是不跨天的也就是说任意一个周期区间均在同一个交易天内。此外在设置原有固定类型秒或者分钟周期的时候我们可以用设置pn_FreeCycle()系统参数来转换为任意秒滚动周期。

参见Q天软自由周期

内容
  • Cy_month
  • Cy_20m
  • Cy_1m
  • Cy_HalfYear
  • Cy_5m
  • Cy_60m
  • Cy_Year
  • Cy_week
  • Cy_2m
  • Cy_10m
  • Cy_Quarter
  • Cy_120m
  • Cy_day
  • Cy_30m
  • Cy_3m
  • Cy_40m
  • Cy_TwoYear
  • Cy_15m
  • cy_trailingseconds
  • Cy_6s
  • cy_trailingdays
  • Cy_15s
  • Cy_Detail
  • Cy_30s
  • Cy_5s
  • Cy_2s
  • Cy_12s
  • Cy_1s
  • Cy_10s
  • Cy_20s
  • Cy_4s
  • Cy_FreeCycle
  • Cy_3s
  • Cy_Halfs
Cy_month

参考pn_Cycle 周期函数

Cy_20m

参考pn_Cycle 周期函数

Cy_1m

参考pn_Cycle 周期函数

Cy_HalfYear

参考pn_Cycle 周期函数

Cy_5m

参考pn_Cycle 周期函数

Cy_60m

参考pn_Cycle 周期函数

Cy_Year

参考pn_Cycle 周期函数

Cy_week

参考pn_Cycle 周期函数

Cy_2m

参考pn_Cycle 周期函数

Cy_10m

参考pn_Cycle 周期函数

Cy_Quarter

参考pn_Cycle 周期函数

Cy_120m

参考pn_Cycle 周期函数

Cy_day

参考pn_Cycle 周期函数

Cy_30m

参考pn_Cycle 周期函数

Cy_3m

参考pn_Cycle 周期函数

Cy_40m

参考pn_Cycle 周期函数

Cy_TwoYear

范例

Return Cy_TwoYear();

//结果:’两年’
Cy_15m

参考pn_Cycle 周期函数

cy_trailingseconds

参考pn_Cycle 周期函数 自由周期

Cy_6s

参考pn_Cycle 周期函数

cy_trailingdays

参考pn_Cycle 周期函数 自由周期

Cy_15s

参考pn_Cycle 周期函数

Cy_Detail

参考pn_Cycle 周期函数

Cy_30s

参考pn_Cycle 周期函数

Cy_5s

参考pn_Cycle 周期函数

Cy_2s

参考pn_Cycle 周期函数

Cy_12s

参考pn_Cycle 周期函数

Cy_1s

参考pn_Cycle 周期函数

Cy_10s

参考pn_Cycle 周期函数

Cy_20s

参考pn_Cycle 周期函数

Cy_4s

参考pn_Cycle 周期函数

Cy_FreeCycle

参考pn_Cycle 周期函数 自由周期

Cy_3s

参考pn_Cycle 周期函数

Cy_Halfs

参考pn_Cycle 周期函数

财务函数

内容
  • Report
  • ReportOfAll
  • ReportOfDiy
  • ReportExists
  • ReportHist
  • ReportHistExists
  • LastQuarterData
  • Last12MData
  • Base
  • BaseExists
  • InfoArray
  • InfoArrayExt
  • InfoArrayExists
  • bName
  • idtType
  • idfType
  • BasicIDExists
  • BaseArray
Report

范例

//提取平安银行2017年3季报的营业收入

setsysparam(pn_stock(),'SZ000001');

setsysparam(pn_date(),20171031);

return report(46002,20170930);

//结果79833000000
ReportOfAll

范例

范例1提取平安银行2017年3季报的营业收入与report一致

setsysparam(pn_stock(),'SZ000001');

setsysparam(pn_date(),20171031);

return reportofall(46002,20170930);

//结果79833000000

范例2提取平安银行2017年3季报的每股收益report不能获取该指标是report功能的扩展

setsysparam(pn_stock(),'SZ000001');

setsysparam(pn_date(),20171031);

return reportofall(9900000,20170930);

//结果1.12
ReportOfDiy

范例

(注:实际的结果不一定和下同)

Setsysparam(pn_stock(),"SZ000002");

return ReportOfDiy(8025001, 20091231,now(),'刘研究员');//假定8025001为预测每股收益则返回最新的刘研究员的2009年年度的预测每股收益。

return ReportOfDiy(8025001, 20091231,now(),"");//则返回最新的任何研究员的2009年年度的预测每股收益。
ReportExists

范例

//通过红利比(18007)判断SH601888在2011年是否分红

  setsysparam(pn_stock(),'SH601888');

  return ReportExists(18007,20101231); //返回1,是
ReportHist

范例

  //获取SH601888公布的利润分配表的所有报告期ID列表

  setsysparam(pn_stock(),'SH601888');

  //营业收入ID利润分配表的一个科目

  infoid:=DataBaseRatioId(1);

  return ReportHist(infoid);

//返回结果如下图:

  //获取SH601888公布的利润分配表的最接近20140331的报告期

  setsysparam(pn_stock(),'SH601888');

  //营业收入ID利润分配表的一个科目

  infoid:=DataBaseRatioId(1);

  return ReportHist(infoid,20140331);


//返回20130930执行时间20140117未公布2013年报及2014一季报
ReportHistExists

范例

//检查SZ300002在曾经发生过分红

  setsysparam(pn_stock(),'SZ300002');

  return ReportHistExists(18007);

  //返回1表示历史有分红
LastQuarterData

范例

//提取平安银行2017年3季度的营业收入

setsysparam(pn_stock(),'SZ000001');

setsysparam(pn_date(),20171031T);

return LastQuarterData(20170930,46002,0);

//结果25760000000
Last12MData

范例

//提取平安银行2017年3季报TTM的营业收入

setsysparam(pn_stock(),'SZ000001');

setsysparam(pn_date(),20171031T);

return Last12MData(20170930,46002);

//结果105580000000
Base

范例

//获取SZ000002的公司全称

  setsysparam(pn_stock(),'SZ000002');

  return base(10002);//返回”万科企业股份有限公司”
BaseExists

范例

//获取SZ000002的公司全称

  setsysparam(pn_stock(),'SZ000002');

  if BaseExists(10002) then

  return base(10002);

else return "";

//返回万科企业股份有限公司
InfoArray

范例

  //获取万科A分红送股表数据

  setsysparam(pn_stock(),'SZ000002');

  //分红送股表ID

  infoid:=DatabaseInfoArrayId(21);

  return infoarray(infoid);

结果:

InfoArrayExt

范例

(注:实际的结果不一定和下同)

下表是深长城的股本变更表

记录号变动日总股本 A股未流通股已流通股流通A股变动原因

0 19940921 56300000 56300000 43300000 13000000 13000000

1 1995041056300000 56300000 40000000 16300000 16300000 职工股上市

2 19950607 106970000 106970000 76000000 30970000 30970000 送股上市

3 19960715 139061000 139061000 98800000 40261000 40261000 送股上市

4 19970512 171045030 171045030 121523999 49521031 49521031 配股上市

5 19970708 239463040 239463040 170133598 69329442 69329442 送股上市

如:

(1)InfoArrayExt(12,'变动日',19970512,-1) 返回的记录是第4条

(2)InfoArrayExt(12,'变动日',19970512,0) 返回的记录是第0条

(3)InfoArrayExt(12,'变动日',19970512,2) 返回的记录是第1条

(4) InfoArrayExt(12,'变动日',19970512,2,”总股本”,Shares) 返回的值为56300000。

//第4个参数缺省满足条件的最后一条记录即返回股权登记日<=20130516的最后一条记录

setsysparam(pn_stock(),'SZ000002');

infoid:=DatabaseInfoArrayId(21);

return InfoArrayExt(infoid,'股权登记日',20130516);

结果:

InfoArrayExists

范例

//判断是否存在配股

setsysparam(pn_stock(),'SH601888');

return InfoArrayExists(20);

//返回0表示不存在配股数据。
bName

范例

return bName(18007);

//返回”红利比”即用18007可提取红利比数据。
idtType

范例

  TYPES := array( '','报告期相关','报告期无关','报表');

  TYPES[-1] := '未知';

  return array('公司全称':TYPES[idttype(10002)],

        '红利比':TYPES[idttype(18007)],

        '分红送股表':TYPES[idttype(18)],

        '未知':TYPES[idttype(99)]);

结果:

idfType

范例

TYPES := array( '整型','实数','字符','表格');

  TYPES[-1] := '未知';

return array('公司全称':TYPES[idftype(10002)],

        '红利比':TYPES[idftype(18007)],

        '分红送股表':TYPES[idftype(18)],

        '未知':TYPES[idftype(99)]);

返回结果:

BasicIDExists

范例

infoid:= DatabaseInfoArrayId(21);

return BasicIDExists(infoid);

//返回1表示存在
BaseArray

范例

SetSysParam(pn_stock(),'sz000001');


return BaseArray(46002,20151231);


//返回96163000000

选股与取数

内容
  • QueryBk
  • QueryBkWithPeriod
  • QueryWithPeriod
  • DefaultRepID
  • QWPMaxCount
  • evalstring
QueryBk

范例

return

QueryBK("深证A股;上证A股;中小企业板","",@True,"","板块名",@DefaultBKName(),

"指定日流通市值和(万)(20120930,只考虑A股)",@Bk_MarketValue(41182,1),

"指定日总股本和(万)(20120930,只考虑A股)",@Bk_TotalShares(41182,1),

"每股主营收入(20111231,总股本加权,只考虑A股,全部,绩差股标准=0)",@Bk_MainincomePS(20111231,0,1,0,0));
QueryBkWithPeriod

范例

//返回板块一段时间的成交数据

setsysparam(pn_begt(),inttodate(20120801));

setsysparam(pn_endt(),inttodate(20121001));

setsysparam("TimeIndex",1);

return

QueryBKWithPeriod("深证A股","",@True,"","换手率(%)(加权,只考虑A股)",@Bk_HSL3(0,1),

"成交量(万)(只考虑A股)",@Bk_VolSum3(1),

"成交金额(万)(只考虑A股)",@Bk_AmountSum3(1));
QueryWithPeriod

范例

//返回一组股票一段时间的行情数据

oV:=BackUpSystemParameters2();

setsysparam(pn_begt(),inttodate(20120801));

setsysparam(pn_endt(),inttodate(20121001));

setsysparam("TimeIndex",1);

return

QueryWithPeriod("","SZ000002;SZ000001;SH600000;SH600004",@True,"","收盘价",@close(),

"成交量",@vol(),

"成交金额",@amount());
DefaultRepID

范例

//返回万科A默认报告期的营业收入

oV:=BackUpSystemParameters2();

setsysparam(pn_stock(),'SZ000002');

//获取默认报告期

RDate:= DefaultRepID();

V:=ReportNew(46002,RDate);

return v;
QWPMaxCount

范例

return QWPMaxCount();

//返回50000
evalstring

范例

return evalstring('1+3');

//返回4

向导函数

内容
  • RelativeStrengthOfIndustry
  • SpecSysParams
  • RelativeStrengthOfSector
  • ReportOfListed
  • ReportPerShareOfListed
  • Derivative1
  • PositionOfSector
  • ReduceWithHighestOfPeriod
  • OccuredRepIdOfRepPeriod
  • ContinuedMatchOfRepPeriod
  • GrowthOfRepPeriod
  • RelativeStrengthOfSectorDesc
  • PositionOfSectorDesc
  • GrowthWithLowestOfPeriod
  • SumOfSector
  • PositionOfIndustry
  • AvgOfSector
  • OccuredTimeOfPeriod
  • SpecDateValue
  • Derivative2
  • N期
  • N日
  • 历史遗留
  • 区间
  • 中间函数
  • N季
  • 当日
  • StockTrailingAvgByEndT
  • StockTrailingStdByEndT
RelativeStrengthOfIndustry
SpecSysParams

范例

return SpecSysParams(@SpecSysParamsdemo(),20180801T,cy_day(),0,0);//其中SpecSysParamsdemo()函数定义股票为平安银行,返回收盘价

//返回9.15
RelativeStrengthOfSector

算法

1、获得板块Sector成分股

2、统计成分股中个券exp值>当前证券的exp值再加1为result

3、相对强弱(%)= (1- result/成分股总个数)*100范例

// 统计A股板块与沪深300指数相比的相对强弱。结果得到A股中涨幅小于沪深300涨幅的个券占比


SetSysParam(pn_stock(),'SH000300');


SetSysParam(pn_date(),20180801T);


return RelativeStrengthOfSector(@stockzf3(),'A股');


//结果41.4621
ReportOfListed

范例

SetSysParam(pn_stock(),'SZ000001');


return ReportOfListed(46002,20160331);//平安银行在2016年一季报的营业收入


//返回27532000000
ReportPerShareOfListed

范例

SetSysParam(pn_stock(),'SZ000001');

return ReportPerShareOfListed(46033,20160331);//平安银行在2016年一季报的每股收益(净利润/总股本)

//返回0.43
Derivative1

算法

指标趋势= (3前N日指标值-4前(N+1)日指标值+前(N+2)日指标值)/2*100范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801T);


return Derivative1(@close(),0);//指标值为收盘价


//返回:-42
PositionOfSector

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801T);


return PositionOfSector(@close(),'A股');


//返回1778
ReduceWithHighestOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return ReduceWithHighestOfPeriod(@close(),20180801T,20180803T,0);


//返回:-0.24
OccuredRepIdOfRepPeriod

范例

//从2010年开始到2018年每年年报每股收益大于1.5的报告期


SetSysParam(pn_stock(),'SZ000002');

return OccuredRepIdOfRepPeriod(@reportofall(42002,GetSysParam('DefaultRepID'))>1.5,20101231,2018);

返回:

ContinuedMatchOfRepPeriod

范例

SetSysParam(pn_stock(),'SZ000001');

return ContinuedMatchOfRepPeriod(@reportofall(46002,GetSysParam('DefaultRepID')),20140331,2018);

//返回1
GrowthOfRepPeriod

范例

SetSysParam(pn_stock(),'SZ000001');

return GrowthOfRepPeriod(@reportofall(46002,GetSysParam('DefaultRepID')),20150331,1);//返回平安银行在2015一季报中营业收入的同比增长

//返回28.39
RelativeStrengthOfSectorDesc

算法

1、获得板块Sector成分股

2、统计成分股中个券exp<当前证券的exp值再加1为result

3、相对强弱(%)= (1- result/成分股总个数)*100范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801T);


return RelativeStrengthOfSectorDesc(@close(),'A股');


//返回50.25
PositionOfSectorDesc

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801T);


return PositionOfSectorDesc(@close(),'A股');


//返回1761
GrowthWithLowestOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return GrowthWithLowestOfPeriod(@close(),20180801T,20180903T,0);


//返回1.41
SumOfSector

范例

setsysparam(pn_bk(),"上证A股");

setsysparam(Pn_date(),20180801T);

return SumOfSector(@close(),20180801T,20180801T,1,0,0,0);

//返回在2018年8月1日上证A股板块在当日已经上市的股票收盘价的和。

//返回19495.45
PositionOfIndustry
AvgOfSector

范例

return AvgOfSector(@close(),2,20180801T,20180801T,1,0,0,0);//返回在2018年8月1日所有A股在当日已经上市的股票收盘价的算术平均。

//返回12.27
OccuredTimeOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');

return OccuredTimeOfPeriod(@close(),20180801T,20180810T);//返回平安银行在2018年8月1日至2018年8月10日存在行情数据(收盘价)的日期

返回:

SpecDateValue

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180917T);


return SpecDateValue(20180801T,@close());//返回2018年8月1号平安银行的收盘价


//返回9.15
Derivative2

算法

加速度=(2当日指标-5一日前指标+4*二日前指标-三日前指标)*100;范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801T);


return Derivative2(@close());//指标值为收盘价


//返回:-49
N期
内容
  • OccuredOfNReport
  • ContinuedMatchOfNReport
  • OccuredRepIdOfNReport
  • SumOfNReport
  • AvgOfNReport
  • RefReportValue
  • GrowthOfNReport
  • ACCOfNReport
  • RobustGrowthOfNReport
  • RobustACCOfNReport
  • HighestOfNReport
  • lowestOfNReport
  • StandGrowthOfNReport
  • EAVOfNReport
  • EAAOfNReport
  • TurnPositiveOfNReport
  • SecondOrderGrowthOfNReport
  • HighGrowthOfNReport
OccuredOfNReport

范例返回平安银行截止到2015年12月31日的所有年报数量

SetSysParam(pn_stock(),'SZ000001');

returnOccuredOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,100);

//返回25
ContinuedMatchOfNReport

范例判断2014到2015这两年平安银行年报是否全部存在

SetSysParam(pn_stock(),'SZ000001');

return ContinuedMatchOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,2);

//返回1
OccuredRepIdOfNReport

范例

SetSysParam(pn_stock(),'SZ000001');

return OccuredRepIdOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20001231,20);

返回结果:

SumOfNReport

范例计算平安银行2015年报与2014年报营业收入的和

SetSysParam(pn_stock(),'SZ000001');

return SumOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,2);

//返回169570000000
AvgOfNReport

范例返回平安银行2015年报与2014年报营业收入的平均

SetSysParam(pn_stock(),'SZ000001');

return AvgOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,2);

//返回84785000000
RefReportValue

范例返回平安银行2015年年报营业收入额

SetSysParam(pn_stock(),'SZ000001');

return RefReportValue(@reportofall(46002,GetSysParam('DefaultRepID')),20161231,1);

//返回96163000000
GrowthOfNReport

范例返回平安银行2014年与2015年报营业收入增长比例

SetSysParam(pn_stock(),'SZ000001');

return GrowthOfNReport(@reportofall(46002,GetSysParam('DefaultRepID')),20151231,1,1);


//返回34.00
ACCOfNReport

算法

过去N期数据对期数t的二次方程进行回归取二次项系数作为业绩增长加速度。以净利润为例回归公式如下NPt= at^2+bt+c。其中NPt表示过去第t期的净利润t取值为[1,2,……,N]。

假设当前报告期为20201231取季度报告期N=8则最近连续8个季度报告期为[20190331,20190630,20190930,20191231, 20200331,20200630,20200930,20201231]对应的期数t为[1,2,3,4,5,6,7,8]回归二次项系数a即为净利润增长加速度。

为消除回归数据与期数t数量级差异对结果的影响模型支持对回归数据如净利润与t进行标准化处理(z-value)二次项系数a为加速度二次回归抛物线的最低点为-b/(2*a)。范例

范例01返回加速度不标准化

setsysparam(pn_stock(),"SH600519");?

return ACCOfNReport(@Last12MData(DefaultRepID(),46078),20201231,8,1);

//3004419.44946277

范例02返回加速度标准化

setsysparam(pn_stock(),"SH600519");

return ACCOfNReport(@Last12MData(DefaultRepID(),46078),20201231,8,1,1); //0.006
RobustGrowthOfNReport

算法过去N期的净利润增速均值除以净利润增速标准差刻画过去一段时间内净利润增速的稳定性当指标值比较高的时候表示过去一段时间内上市公司的业绩保持了稳定增长的态势。范例

setsysparam(pn_stock(),"SH600519");

return RobustGrowthOfNReport(@Last12MData(DefaultRepID(),9900604),

20201231,8,0); // 0.916987656203954
RobustACCOfNReport

算法

N期稳健加速度=N期稳健增速一阶差分 即本期N期稳健增速- 上期N期稳健增速

上期由参数LastReportType确定0表示同比报告期1表示环比报告期范例

setsysparam(pn_stock(),"SH600519");

return RobustACCOfNReport(@Last12MData(DefaultRepID(),9900604),20201231,8,0); // -0.0878801178157446
HighestOfNReport

范例

//对SH600585在22年年报前5个年度报告期最高的总营业收入。

  SetSysParam(pn_stock(),"SH600585");

  return HighestOfNReport(@ReportOfAll(46080,DefaultRepID()),20221231,5,0);

  //返回176294715308
lowestOfNReport

范例

//对SH600585在22年年报前5个年度报告期最低的总营业收入。

  SetSysParam(pn_stock(),"SH600585");

  return lowestOfNReport(@ReportOfAll(46080,DefaultRepID()),20221231,5,0);

  //返回128402625696
StandGrowthOfNReport

算法N期标准化增长率=(当期-去年同期)/过去N期标准差范例

setsysparam(pn_stock(),"SH600519");

Exp:=@LastQuarterData(GetSysParam('DefaultRepID'),46078);

ReportID:=20211231;

N:=8;

ReportType:=1; //0年度1季度

t:=StandGrowthOfNReport(Exp,ReportID,N,ReportType);

return t;   //1.265
EAVOfNReport

算法

N期加速度EAV=当期标准化增长率-上期标准化增长率

当期标准化增长率=(当期数据-去年同期数据)/过去N期标准差

上期由参数LastReportType确定0表示同比报告期【默认】1表示环比报告期范例

setsysparam(pn_stock(),"SH600519");

Exp:=@LastQuarterData(DefaultRepID(),46078);

ReportID:=20200930;

N:=8;

ReportType:=1; //0年度1季度

LastReportType:=0;

t:=EAVOfNReport(Exp,ReportID,N,ReportType,LastReportType);

return t;    //-0.45
EAAOfNReport

算法

N期加速度EAA=当期同比增长率-上期同比增长率

当期同比增长率=(当期数据-去年同期数据)/abs去年同期数据

上期由参数LastReportType确定0表示同比报告期【默认】1表示环比报告期范例

setsysparam(pn_stock(),"SH600519");

Exp:=@LastQuarterData(DefaultRepID(),46078);

ReportID:=20211231;

LastReportType:=0;

t:=EAAOfNReport(Exp,ReportID,LastReportType);

return t;   //-0.016
TurnPositiveOfNReport

范例

setsysparam(pn_stock(),"SH600110");

Exp:=@LastQuarterData(GetSysParam('DefaultRepID'),42017);  //季度扣非净利润

ReportID:=20210331;

N:=5;

ReportType:=1; //0年度1季度

t:=TurnPositiveOfNReport(Exp,ReportID,N,ReportType);

return t;   //1
SecondOrderGrowthOfNReport

范例

setsysparam(pn_stock(),"SZ000636");

Exp:=@LastQuarterData(GetSysParam('DefaultRepID'),9900604);

ReportID:=20200331;

N:=5;

ReportType:=1; //0年度1季度

t:=SecondOrderGrowthOfNReport(Exp,ReportID,N,ReportType);

return t;    //1
HighGrowthOfNReport

范例

setsysparam(pn_stock(),"SZ002340");

Exp:=@LastQuarterData(GetSysParam('DefaultRepID'),9900604);

ReportID:=20210331;

N:=5;

ReportType:=1; //0年度1季度

Range:=3;

t:=HighGrowthOfNReport(Exp,ReportID,N,ReportType,Range);

return t;     //1
N日
内容
  • HighestOfNDay
  • RefValue
  • OccuredOfNDay
  • GrowthOfNDay
  • SwingOfNDay
  • ContinuedMatchOfNDay
  • StdOfNDay
  • SumOfNDay
  • LowestOfNDay
  • OccuredTimeOfNDay
  • AvgOfNDay
  • GrowthWithHighestOfNDay
  • GrowthWithLowestOfNDay
  • TimeOfHighestOfNDay
  • TimeOfLowestOfNDay
  • MedianOfNDay
  • KurtosisOfNDay
  • SkewnessOfNDay
  • CovOfNDay
  • RSQOfNDay
  • SteyxOfNDay
  • SlopeOfNDay2
  • CorrelOfNDay2
  • InterceptOfNDay2
  • CorrelOfNDay
  • DecayAvgOfNDay
  • DeltaOfNDay
  • HHVBarsOfNDay
  • interceptofNday
  • LLVBarsOfNDay
  • PercentRankOfNDay
  • SignedPower
  • SlopeofNday
  • CovarOfNDay
  • ProductOfNDay
  • WmaofNday
  • SumifofNday
  • SmaofNDay
  • 中间函数
HighestOfNDay

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801t);


return HighestOfNDay(@close(),5);


//返回9.42
RefValue

范例返回上证指数在2018年7月18号的收盘价

SetSysParam(pn_stock(),'SH000001');


SetSysParam(pn_date(),20180801t);


return RefValue(@close(),10);


//返回2787.257
OccuredOfNDay

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801t);


return OccuredOfNDay(@close(),10);


//返回10
GrowthOfNDay

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801t);


return GrowthOfNDay(@close(),5,0);


//返回:-0.23
SwingOfNDay

算法

振幅=指标N日最大值-指标N日最小值

振幅(百分比)=abs(指标N日最大值-指标N日最小值)/(指标N日最小值)范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801t);


return SwingOfNDay(@close(),5,0);


//返回0.27
ContinuedMatchOfNDay

范例

SetSysParam(pn_stock(),'SH000001');


SetSysParam(pn_date(),20180801t);


return ContinuedMatchOfNDay(@close(),3);

//返回1
StdOfNDay

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801t);


return StdOfNDay(@close(),5);


//返回0.11
SumOfNDay

范例计算平安银行截止2018年8月1日最近10个交易日的成交量和

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801t);


return SumOfNDay(@vol(),10);


//结果: 962645765
LowestOfNDay

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801t);


return LowestOfNDay(@close(),5);


//返回9.15
OccuredTimeOfNDay

范例

SetSysParam(pn_stock(),'SZ000063');


SetSysParam(pn_date(),20180615t);


return OccuredTimeOfNDay(@vol(),10);

返回:

AvgOfNDay

范例

SetSysParam(pn_stock(),'SZ000001');


SetSysParam(pn_date(),20180801t);


return AvgOfNDay(@close(),5);


//返回9.292
GrowthWithHighestOfNDay

范例

//对SH600585在20231010T的100日价格N日最大与当前的偏离值。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return GrowthWithHighestOfNDay(@close(),100,0);

  //返回:-2.21
GrowthWithLowestOfNDay

范例

//对SH600585在20231010T的100日价格N日最小与当前的偏离值。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return GrowthWithLowestOfNDay(@close(),100,0);

  //返回1.82
TimeOfHighestOfNDay

范例

//对SH600585在20231010T的100日价格最高时间。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return TimeOfHighestOfNDay(@close(),100);

  //返回2023-05-15
TimeOfLowestOfNDay

范例

//对SH600585在20231010T的100日价格最低时间。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return TimeOfLowestOfNDay(@close(),100);

  //返回2023-07-12
MedianOfNDay

范例

//对SH600585在20231010T的100日价格中位数。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return MedianOfNDay(@close(),100);

  //返回26.705
KurtosisOfNDay

范例

//对SH600585在20231010T的100日价格峰度。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return KurtosisOfNDay(@close(),100);

  //返回:-0.73
SkewnessOfNDay

范例

//对SH600585在20231010T的100日价格偏度。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return SkewnessOfNDay(@close(),100);

  //返回:-0.65
CovOfNDay

范例

//20231010TSH600585前10日收盘与SH000001收盘的协方差。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return CovOfNDay(@close(),10,"SH000001");

  //返回5.7123
RSQOfNDay

范例

//20231010TSH600585前10日收盘与SH000001收盘的相关系数平方。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return RSQOfNDay(@close(),10,"SH000001");

  //返回0.437
SteyxOfNDay

范例

//20231010TSH600585前10日收盘与SH000001收盘的相对标准偏差。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return SteyxOfNDay(@close(),10,"SH000001");

  //返回13.72035
SlopeOfNDay2

范例

//20231010TSH600585前10日收盘与SH000001收盘的回归斜率。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return SlopeOfNDay2(@close(),10,"SH000001");

  //返回20.4608
CorrelOfNDay2

范例

//20231010TSH600585前10日收盘与SH000001收盘的相关系数。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return CorrelOfNDay2(@close(),10,"SH000001");

  //返回0.661
InterceptOfNDay2

范例

//20231010TSH600585前10日收盘与SH000001收盘的回归截距。

  SetSysParam(pn_stock(),"SH600585");

  SetSysParam(pn_date(),20231010T);

  return InterceptOfNDay2(@close(),10,"SH000001");

  //返回2569.49
CorrelOfNDay

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231010T);

return CorrelOfNDay(@stockpjcj3(),@RefValue(@close(),5),10,"");

//结果:-0.61
DecayAvgOfNDay

范例

SetSysParam(pn_stock(),"SH600585");


SetSysParam(pn_date(),20231010T);

return DecayAvgOfNDay(@close(),5);

//结果25.61
DeltaOfNDay

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231010T);

return DeltaOfNDay(@close(),5);

//结果:-1.39
HHVBarsOfNDay

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231010T);

return HHVBarsOfNDay(@close(),10,"");

//结果8
interceptofNday

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231010T);

return interceptofNday(@close(),@open(),100,"");

//结果1.36
LLVBarsOfNDay
  • SumOfNDay
  • RefValue
  • ContinuedMatchOfNDay
  • OccuredTimeOfNDay
  • HighestOfNDay
  • StdOfNDay
  • LowestOfNDay
  • SwingOfNDay
  • GrowthOfNDay
  • AvgOfNDay
  • OccuredOfNDay
  • GrowthWithHighestOfNDay
  • GrowthWithLowestOfNDay
  • TimeOfHighestOfNDay
  • TimeOfLowestOfNDay
  • MedianOfNDay
  • KurtosisOfNDay
  • SkewnessOfNDay
  • CovOfNDay
  • RSQOfNDay
  • SteyxOfNDay
  • SlopeOfNDay2
  • CorrelOfNDay2
  • InterceptOfNDay2
  • CorrelOfNDay
  • DecayAvgOfNDay
  • DeltaOfNDay
  • HHVBarsOfNDay
  • interceptofNday
  • LLVBarsOfNDay
  • PercentRankOfNDay
  • SignedPower
  • SlopeofNday
  • CovarOfNDay
  • ProductOfNDay
  • WmaofNday
  • SumifofNday
  • SmaofNDay
  • 中间函数
PercentRankOfNDay

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231030T);

return PercentRankOfNDay(@close(),10,"");

//结果0.56
SignedPower

算法SignedPower(x,n)=sign(x)*(abs(x)^n)范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231030T);

return SignedPower(@close(),3);

//结果14402.12
SlopeofNday

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231030T);

return SlopeofNday(@close(),@open(),30,"");

//结果0.97
CovarOfNDay

算法cov=mean(x*y)-mean(x)*mean(y)范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231030T);

return CovarOfNDay(@close(),@open(),30,"");

//结果0.79
ProductOfNDay

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231030T);

return ProductOfNDay(@close(),3,"");

//结果14359.59
WmaofNday

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231030T);

return WmaofNday(@open(),30,"");

//结果25.04
SumifofNday

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231030T);

return SumifofNday(@open(),30,"@open()>@close()","");

//结果763.47
SmaofNDay

范例

SetSysParam(pn_stock(),"SH600585");

SetSysParam(pn_date(),20231030T);

return SmaofNDay(@open(),30,1,"");

//结果25.44
中间函数

####### 内容

  • GetExpCaceStr
  • TechCal_Unit

####### GetExpCaceStr

  • GetExpCaceStr
  • TechCal_Unit

####### TechCal_Unit

  • GetExpCaceStr
  • TechCal_Unit
历史遗留
内容
  • SumOfSectorExceptNoTrade
  • AvgOfSectorExceptNoTrade
SumOfSectorExceptNoTrade

范例

SetSysParam(pn_bk(),'安徽');


SetSysParam(pn_date(),20180801t);


return SumOfSectorExceptNoTrade(@close());


//返回1261.95
AvgOfSectorExceptNoTrade

范例

SetSysParam(pn_bk(),'安徽');


SetSysParam(pn_date(),20180801t);


return AvgOfSectorExceptNoTrade(@close(),0);


//返回9.77
区间
内容
  • SumOfPeriod
  • SwingOfPeriod
  • HighestOfPeriod
  • TimeOfHighestOfPeriod
  • OccuredOfPeriod
  • AvgOfPeriod
  • OccuredOfRepPeriod
  • ContinuedMatchOfPeriod
  • LowestOfPeriod
  • AvgOfRepPeriod
  • SumOfRepPeriod
  • GrowthOfPeriod
  • TimeOfLowestOfPeriod
  • HHVBarsOfPeriod
  • LLVBarsOfPeriod
  • HighestOfRepPeriod2
  • LowestOfRepPeriod2
  • MedianOfPeriod
  • PercentRankOfPeriod
  • SkewnessOfPeriod
  • KurtosisOfPeriod
  • GrowthOfRepPeriod2
  • SumOfRepPeriod2
  • AvgOfRepPeriod2
  • StdOfPeriod
  • StdOfRepPeriod2
  • CorrelOfPeriod
  • RSQOfPeriod
  • SlopeOfPeriod
  • InterceptOfPeriod
  • CovOfPeriod
  • SteyxOfPeriod
SumOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return SumOfPeriod(@close(),20180801T,20180802T);


//返回18.09
SwingOfPeriod

算法

振幅=指标区间最大值-指标区间最小值

振幅(百分比)=abs(指标区间最大值-指标区间最小值)/(指标区间最小值)范例

SetSysParam(pn_stock(),'SZ000001');


return SwingOfPeriod(@close(),20180801T,20180802T,0);


//返回0.21
HighestOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return HighestOfPeriod(@close(),20180801T,20180802T);


//返回9.15
TimeOfHighestOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return TimeOfHighestOfPeriod(@close(),20180801T,20180802T);


//返回2018-08-01
OccuredOfPeriod

范例

//SH600585在20230101T至20231010T上涨次数。

  SetSysParam(pn_stock(),"SH600585");

  return OccuredOfPeriod(@IsUp(),20230101T,20231010T);

  //返回84
AvgOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return AvgOfPeriod(@close(),20180801T,20180802T);


//返回9.045
OccuredOfRepPeriod

范例

SetSysParam(pn_stock(),'SZ000001');

return OccuredOfRepPeriod(@reportofall(46002,GetSysParam('DefaultRepID')),20150331,2018);//即返回2015年到2018年一季报的数量

//返回4
ContinuedMatchOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return ContinuedMatchOfPeriod(@close(),20180801T,20180803T);


//返回1
LowestOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return LowestOfPeriod(@close(),20180801T,20180803T);


//返回8.91
AvgOfRepPeriod

范例平安银行2015到2018四个一季报营业收入的平均值

SetSysParam(pn_stock(),'sz000001');

return AvgOfRepPeriod(@reportofall(46002,GetSysParam('DefaultRepID')),20150331,2018);

//返回25988750000
SumOfRepPeriod

范例平安银行2015到2018四个一季报营业收入的和

SetSysParam(pn_stock(),'sz000001');

return SumOfRepPeriod(@reportofall(46002,GetSysParam('DefaultRepID')),20150331,2018);

//返回103955000000
GrowthOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


return GrowthOfPeriod(@close(),20180801T,20180803T,1);


//返回:-2.62
TimeOfLowestOfPeriod

范例

SetSysParam(pn_stock(),'SZ000001');


returnTimeOfLowestOfPeriod(@close(),20180801T,20180802T);


//返回2018-08-02
HHVBarsOfPeriod

范例

//SH600585在20230101T至20231010T最高点到当前的周期数。

  SetSysParam(pn_stock(),"SH600585");

  return HHVBarsOfPeriod(@close(),20230101T,20231010T);

  //返回153
LLVBarsOfPeriod

范例

//SH600585在20230101T至20231010T最低点到当前的周期数。

  SetSysParam(pn_stock(),"SH600585");

  return LLVBarsOfPeriod(@close(),20230101T,20231010T);

  //返回58
HighestOfRepPeriod2

范例

//对SZ000001在2020年年报至2022年报的最高营业收入。

  SetSysParam(pn_stock(),"SZ000001");

  return HighestOfRepPeriod2(@reportofall(46002,GetSysParam('DefaultRepID')),20201231,20221231,0);

  //返回179895000000
LowestOfRepPeriod2

范例

//对SZ000001在2020年年报至2022年报的最低营业收入。

  SetSysParam(pn_stock(),"SZ000001");

  return LowestOfRepPeriod2(@reportofall(46002,GetSysParam('DefaultRepID')),20201231,20221231,0);

  //返回153542000000
MedianOfPeriod

范例

//SH600585在20230101T至20231010T的价格中位数。

  SetSysParam(pn_stock(),"SH600585");

  return MedianOfPeriod(@close(),20230101T,20231010T);

  //返回25.78
PercentRankOfPeriod

范例

//SH600585在20230101T至20231010T的价格分位数。

  SetSysParam(pn_stock(),"SH600585");

  return PercentRankOfPeriod(@close(),20230101T,20231010T);

  //返回0.1476
SkewnessOfPeriod

范例

//SH600585在20230101T至20231010T的价格偏度。

  SetSysParam(pn_stock(),"SH600585");

  return SkewnessOfPeriod(@close(),20230101T,20231010T);

  //返回0.1796
KurtosisOfPeriod

范例

//SH600585在20230101T至20231010T的价格峰度。

  SetSysParam(pn_stock(),"SH600585");

  return KurtosisOfPeriod(@close(),20230101T,20231010T);

  //返回:-0.602
GrowthOfRepPeriod2

范例

//对SZ000001在2020年年报至2022年报的营业收入增长率。

  SetSysParam(pn_stock(),"SZ000001");

  return GrowthOfRepPeriod2(@reportofall(46002,GetSysParam('DefaultRepID')),20201231,20221231,1);

  //返回17.16
SumOfRepPeriod2

范例

//对SZ000001在2020年年报至2022年报的营业收入和。

  SetSysParam(pn_stock(),"SZ000001");

  return SumOfRepPeriod2(@reportofall(46002,GetSysParam('DefaultRepID')),20201231,20221231,0);

  //返回502820000000
AvgOfRepPeriod2

范例

//对SZ000001在2020年年报至2022年报的平均营业收入。

  SetSysParam(pn_stock(),"SZ000001");

  return AvgOfRepPeriod2(@reportofall(46002,GetSysParam('DefaultRepID')),20201231,20221231,0);

  //返回167606666666.667
StdOfPeriod

范例

//SH600585在20230101T至20231010T的价格标准差。

  SetSysParam(pn_stock(),"SH600585");

  return StdOfPeriod(@close(),20230101T,20231010T);

  //返回2.1048
StdOfRepPeriod2

范例

//对SZ000001在2020年年报至2022年报的营业收入标准差。

  SetSysParam(pn_stock(),"SZ000001");

  return StdOfRepPeriod2(@reportofall(46002,GetSysParam('DefaultRepID')),20201231,20221231,0);

  //返回13265996846.57
CorrelOfPeriod

范例

//20230901T至20231010TSH600585收盘与SH000001收盘的相关系数。

  SetSysParam(pn_stock(),"SH600585");

  return CorrelOfPeriod(@close(),20230901T,20231010T,"SH000001");

  //返回0.45
RSQOfPeriod

范例

//20230901T至20231010TSH600585收盘与SH000001收盘的相关系数平方。

  SetSysParam(pn_stock(),"SH600585");

  return RSQOfPeriod(@close(),20230901T,20231010T,"SH000001");

  //返回0.21
SlopeOfPeriod

范例

//20230901T至20231010TSH600585收盘与SH000001收盘的回归斜率。

  SetSysParam(pn_stock(),"SH600585");

  return SlopeOfPeriod(@close(),20230901T,20231010T,"SH000001");

  //返回21.84
InterceptOfPeriod

范例

//20230901T至20231010TSH600585收盘与SH000001收盘的回归截距。

  SetSysParam(pn_stock(),"SH600585");

  return InterceptOfPeriod(@close(),20230901T,20231010T,"SH000001");

  //返回2550.63
CovOfPeriod

范例

//20230901T至20231010TSH600585收盘与SH000001收盘的协方差。

  SetSysParam(pn_stock(),"SH600585");

  return CovOfPeriod(@close(),20230901T,20231010T,"SH000001");

  //返回4.93
SteyxOfPeriod

范例

//20230901T至20231010TSH600585收盘与SH000001收盘的相对标准偏差。

  SetSysParam(pn_stock(),"SH600585");

  return SteyxOfPeriod(@close(),20230901T,20231010T,"SH000001");

  //返回21.40
中间函数
内容
  • RatioValueByType
  • isValidValue
  • FilterSampleByCriterion_Wiz
  • CompositeRatioValue
  • SimplyRatioValue
  • isNull
  • isValidPositiveValue
  • ReportValueOfPeriod
RatioValueByType

算法

增长=V2-V1

增长率=(V2-V1)/V1*100%

复合增长率= (Sign(V2/V1)*Power(abs(V2/V1),1/N)-1)*100%

其中sign为条件判断依据给定参数的正/0/负返回1/0/-1power为幂为1/N的幂函数范例

return RatioValueByType(1,2,1,2);


//返回100
isValidValue

范例

return isValidValue(10);


//返回1
FilterSampleByCriterion_Wiz

范例

stockarr:=GetBK('A股');


FilterSampleByCriterion_Wiz(stockarr,20150101,0,0,20180801);


return stockarr;

返回:

CompositeRatioValue

算法复合增长率= (Sign(V2/V1)*Power(abs(V2/V1),1/N)-1)*100%

其中sign为条件判断依据给定参数的正/0/负返回1/0/-1power为幂为1/N的幂函数范例

return CompositeRatioValue(1,4,2);


//返回100
SimplyRatioValue

算法增长率=(V2-V1)/V1*100%范例

return SimplyRatioValue(1,2);

//返回100
isNull

范例

return isNull(0);

//返回1
isValidPositiveValue

范例

returnisValidPositiveValue(1);

//返回1
ReportValueOfPeriod
  • RatioValueByType
  • isValidValue
  • FilterSampleByCriterion_Wiz
  • CompositeRatioValue
  • SimplyRatioValue
  • isNull
  • isValidPositiveValue
  • ReportValueOfPeriod
N季
内容
  • SumOfNReport2
  • AvgOfNReport2
  • StdOfNReport2
  • ACCOfNReport2
  • RobustGrowthOfNReport2
  • RobustACCOfNReport2
SumOfNReport2

范例

setsysparam(pn_stock(),"SH600000");

  Exp:=@reportofall(46002,GetSysParam('DefaultRepID'));

  ReportID:=20211231;

  N:=8;

  return SumOfNReport2(Exp,ReportID,N);  //983299000000
AvgOfNReport2

范例

setsysparam(pn_stock(),"SH600000");

Exp:=@reportofall(46002,GetSysParam('DefaultRepID'));

ReportID:=20211231;

N:=8;

return AvgOfNReport2(Exp,ReportID,N);   //122912375000
StdOfNReport2

范例

setsysparam(pn_stock(),"SH600000");

 Exp:=@reportofall(46002,GetSysParam('DefaultRepID'));

 ReportID:=20211231;

 N:=8;

 return StdOfNReport2(Exp,ReportID,N);  //56286669451.8528
ACCOfNReport2

范例

setsysparam(pn_stock(),"SH600000");

 Exp:=@reportofall(9900002,GetSysParam('DefaultRepID'));

 ReportID:=20211231;

 N:=8;

 return RobustACCOfNReport2(Exp,ReportID,N);   //-0.2568
RobustGrowthOfNReport2

范例

setsysparam(pn_stock(),"SH600000");

 Exp:=@reportofall(9900002,GetSysParam('DefaultRepID'));

 ReportID:=20211231;

 N:=8;

 return RobustGrowthOfNReport2(Exp,ReportID,N); //-0.3269
RobustACCOfNReport2

范例

setsysparam(pn_stock(),"SH600000");

 Exp:=@reportofall(9900002,GetSysParam('DefaultRepID'));

 ReportID:=20211231;

 N:=8;

 return RobustACCOfNReport2(Exp,ReportID,N);   //-0.2568
当日
内容
  • PercentRankOftheReport
  • PercentRankOftheDay3
  • RankOftheReport
  • RankOftheDay3
  • ScaleOfSeries3
  • ScaleOfSeriesOftheReport
  • IndNeutralize4
  • IndNeutralizeOftheReport
  • IndNeutralize
  • IndNeutralize2
  • PercentRankOftheDay
  • PercentRankOftheDay2
  • RankOftheDay
  • RankOftheDay2
  • ScaleOfSeries
  • ScaleOfSeries2
  • 中间函数
PercentRankOftheReport

范例

//SH6005192022年报营业收入在沪深300成分股的分位排名。

  endt:=20221231T;

  SetSysParam(pn_stock(),"SH600519");

  setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));

  return PercentRankOftheReport(@ReportOfAll(46002,DefaultRepID()),20221231);

  //返回0.7525
PercentRankOftheDay3

范例

//20231010TSH600519收盘价在沪深300成分股的分位排名。

  endt:=20231010T;

  SetSysParam(pn_stock(),"SH600519");

  SetSysParam(Pn_date(),20231010T);

  setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));

  return PercentRankOftheDay3(@close(),"",1);

  //返回1
RankOftheReport

范例

//SH6005192022年报营业收入在沪深300成分股的排名。

  endt:=20221231T;

  SetSysParam(pn_stock(),"SH600519");

  setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));

  return RankOftheReport(@ReportOfAll(46002,DefaultRepID()),20221231,0);

  //返回75
RankOftheDay3

范例

//20231010TSH600519收盘价在沪深300成分股的排名。

  endt:=20231010T;

  SetSysParam(pn_stock(),"SH600519");

  SetSysParam(Pn_date(),20231010T);

  setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));

  return RankOftheDay3(@close(),0,"",1);

  //返回1
ScaleOfSeries3

范例

//20231010TSH600519收盘价在沪深300成分股的标准化。

  endt:=20231010T;

  SetSysParam(pn_stock(),"SH600519");

  SetSysParam(Pn_date(),20231010T);

  setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));

  return ScaleOfSeries3(@close(),1,"",1);

  //返回0.1267
ScaleOfSeriesOftheReport

范例

//SH6005192022年报在沪深300成分股的营业收入标准化。

  endt:=20221231T;

  SetSysParam(pn_stock(),"SH600519");

  setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));

  return ScaleOfSeriesOftheReport(@ReportOfAll(46002,DefaultRepID()),20221231,1);

  //返回0.00298
IndNeutralize4

范例

//20231010TSH600519收盘价在沪深300成分股的中性化。

  endt:=20231010T;

  SetSysParam(pn_stock(),"SH600519");

  SetSysParam(Pn_date(),20231010T);

  setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));

  return IndNeutralize4(@close(),0,"",1);

  //返回1723.43
IndNeutralizeOftheReport

范例

//SH6005192022年报在沪深300成分股的营业收入中性化。

  endt:=20221231T;

  SetSysParam(pn_stock(),"SH600519");

  setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));

  return IndNeutralizeOftheReport(@ReportOfAll(46002,DefaultRepID()),20221231,0);

  //返回:-14699034441.7286
IndNeutralize

范例

SetSysParam(pn_stock(),"SH600519");

SetSysParam(Pn_date(),20231010T);

setsysparam(pn_StockArr(),getbkbydate("SH000300",20231010T));

return IndNeutralize(@open(),0,"");

//结果1735.87966666667
IndNeutralize2

范例

SetSysParam(pn_stock(),"SH600519");

SetSysParam(Pn_date(),20231010T);

setsysparam(pn_StockArr(),getbkbydate("SH000300",20231010T));

return IndNeutralize2(@open(),0,"");

//结果1735.87966666667
PercentRankOftheDay

范例

sp_s(PN_Stock(),'SH600000');

  endt := 20190701T;

  sp_s(PN_Date(),endt);

  sp_s(PN_Rate(),1);

  sp_s(PN_RateDay(),endt);

  sp_s(pn_StockArr(),GetBKByDate('SH000300',endt));

  Exp:=@close();

  return PercentRankOftheDay(exp);

  //结果0.4615
PercentRankOftheDay2

范例

sp_s(PN_Stock(),'SH600000');

  endt := 20190701T;

  sp_s(PN_Date(),endt);

  sp_s(PN_Rate(),1);

  sp_s(PN_RateDay(),endt);

  sp_s(pn_StockArr(),GetBKByDate('SH000300',endt));

  Exp:=@close();

  return PercentRankOftheDay2(exp);

  //结果0.4615
RankOftheDay

范例

sp_s(PN_Stock(),'SH600000');

  endt := 20190701T;

  sp_s(PN_Date(),endt);

  sp_s(PN_Rate(),1);

  sp_s(PN_RateDay(),endt);

  sp_s(pn_StockArr(),GetBKByDate('SH000300',endt));

  Exp:=@close();

  return RankOftheDay(exp,0);

  //结果161
RankOftheDay2

范例

sp_s(PN_Stock(),'SH600000');

  endt := 20190701T;

  sp_s(PN_Date(),endt);

  sp_s(PN_Rate(),1);

  sp_s(PN_RateDay(),endt);

  sp_s(pn_StockArr(),GetBKByDate('SH000300',endt));

  Exp:=@close();

return RankOftheDay2(exp,0);

//结果161
ScaleOfSeries

范例

//20231010TSH600519收盘价在沪深300成分股的标准化。


endt:=20231010T;


SetSysParam(pn_stock(),"SH600519");


SetSysParam(Pn_date(),20231010T);


setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));


return ScaleOfSeries(@close(),1,"");


//返回0.1267
ScaleOfSeries2

范例

//20231010TSH600519收盘价在沪深300成分股的标准化。


endt:=20231010T;


SetSysParam(pn_stock(),"SH600519");


SetSysParam(Pn_date(),20231010T);


setsysparam(pn_StockArr(),getbkbydate("SH000300",endt));


return ScaleOfSeries2(@close(),1,"");


//返回0.1267
中间函数

####### 内容

  • CacheStrMerge
  • pn_StockArrName
  • GetParm_StockArr_ByEndt
  • GetParm_GroupIndustry_ByEndt
  • GetHBCacheStr
  • SetParm_StockArrFunc
  • pn_StockArrFunc

####### CacheStrMerge

范例

return CacheStrMerge('1',2,20231020T);

//结果:["1"][2][45219]

####### pn_StockArrName

范例

Return pn_StockArrName();

//结果CurrentStockArrName

####### GetParm_StockArr_ByEndt

范例

A:=function (endt);

  begin


return GetBKByDate('SH000300', endt);

  end

  B:=function (endt);

  begin


return GetBKByDate('SH000905', endt);

  end

  SetParm_StockArrFunc(B, 'ZZ500');

  SetParm_StockArrFunc(A,'HS300');

  sp_s(pn_StockArrName(),'HS300');

  stocks1:=GetParm_StockArr_ByEndt(sp_time(1));

  sp_s(pn_StockArrName(),'ZZ500');

  stocks2:=GetParm_StockArr_ByEndt(sp_time(1));

  return array(stocks1, stocks2);

####### GetParm_GroupIndustry_ByEndt

范例

Return GetParm_GroupIndustry_ByEndt(GetBKByDate('SH000300',20231010T),20231010T,1);

####### GetHBCacheStr

  • CacheStrMerge
  • pn_StockArrName
  • GetParm_StockArr_ByEndt
  • GetParm_GroupIndustry_ByEndt
  • GetHBCacheStr
  • SetParm_StockArrFunc
  • pn_StockArrFunc

####### SetParm_StockArrFunc

范例

A:=function (endt);

  begin


return GetBKByDate('SH000300', endt);

  end

  B:=function (endt);

  begin


return GetBKByDate('SH000905', endt);

  end

  SetParm_StockArrFunc(B, 'ZZ500');

  SetParm_StockArrFunc(A,'HS300');

  sp_s(pn_StockArrName(),'HS300');

  stocks1:=GetParm_StockArr_ByEndt(sp_time(1));

  sp_s(pn_StockArrName(),'ZZ500');

  stocks2:=GetParm_StockArr_ByEndt(sp_time(1));

  return array(stocks1, stocks2);

[/code]

####### pn_StockArrFunc

范例

Return pn_StockArrFunc();

//结果CurrentStockArrFunc
StockTrailingAvgByEndT

范例

范例01

获取万科A过去1年的日均成交金额

  setsysparam(pn_stock(),"SZ000002");

  endt := 20210714t;

  RefType := 4;//过去1年

  exp := "Amount()";

return StockTrailingAvgByEndT(Endt,RefType,Exp);

// 2172484158.52

范例02

获取厦门银行过去1年的日均成交金额剔除上市日3天

  setsysparam(pn_stock(),"SH601187");

  endt := 20210714t;

  RefType := 4;//过去1年

  exp := "Amount()";

  IsExcludeIPO := 1;//考虑剔除上市日影响

  N := 3;//上市行情3天

return StockTrailingAvgByEndT(Endt,RefType,Exp,IsExcludeIPO,N);

// 444243617.69
StockTrailingStdByEndT

范例

获取万科A过去1年的日收益率标准差

  setsysparam(pn_stock(),"SZ000002");

  endt := 20210714t;

  RefType := 4;//过去1年

  exp := "stockzf3()";

  return StockTrailingStdByEndT(Endt,RefType,Exp); // 1.69

条件判定

内容
  • IsTimePeriodInfoId
IsTimePeriodInfoId

范例

return IsTimePeriodInfoId(150003);

//结果1