数据说明:
交易日指交易发生的日期,对于交易日的判断数据主要来源于两类:
1、
根据已有行情数据判断
a、这种仅支持历史日期,未来还未发生的时间段不支持。
b、所有有行情的证券都支持。
2、
根据交易所发布的市场交易日历
a、一般能判断到当年年底
b、仅支持不同市场交易日,不支持个券,仅支持日线。
目前支持的市场代码有:
A股市场交易日:SH000001、国内期货市场:QI000001、银行间债券市场:CBICBA00301
港股市场:HKHSI001、北向:HSG000002、南向:HSG000001
更多可参考:FAQ:
市场交易日历
根据上述两类数据,我们开发了四类常用模型:
类一:仅根据行情数据判断
类二:仅根据交易日历判断
类三:结合行情与交易日历判断
类四:交易日历与踢除周末方式判断
相关模型:
| 功能 | 取数模型 | 支持范围 | 交易日判断逻辑
|
|---|
| 是否交易日 | IsTradeDay(Endt) | 周期:日线及低频,若设置高频,只日期有效
区间:不支持未来日的判断
证券:所有有行情的证券
| 根据行情,指定日是否有日线
|
| 市场是否交易日 | istradeday2(IndexID,EndT) | 周期:日线
区间:支持历史及未来当年的判断
证券:市场代码 | 根据指定市场交易日历判断,否则使用istradeday
|
| 是否交易日 | istradeday4() | 周期:任意周期
区间:不支持未来日的判断
证券:所有有行情的证券 | istradeday的扩展
根据行情,指定日是否有日线,且有成交量
|
| *********** | | |
|
| 交易日序列 | StockTradeDayQk(BegT,EndT) | 周期:任意周期
区间:不支持未来日的判断
证券:所有有行情的证券 | 根据行情,获取当前证券当前周期下交易时间序列
|
| 市场交易日序列 | MarketTradeDayQk(BegT,EndT) | 周期:任意周期
区间:不支持未来日的判断
证券:无关,已指定SH000001 | 根据行情,获取SH000001在当前周期下交易时间序列
|
| 市场交易日序列 | MarketTradedayQK3(BegT,EndT) | 周期:日线
区间:任意时间段
证券:市场代码 | 根据市场交易日历,
1)日历表范围内,则获取交易日表中的交易日序列
2)超过日历表范围的,则取剔除周末日期序列
|
| 市场交易日序列 | markettradedayqk5(BegT,EndT) | 周期:日线
区间:支持历史及未来当年的判断
证券:市场代码 | 根据指定市场交易日历,生成区间交易日序列
|
| *********** | | |
|
| 最近N个交易日序列 | StockTradeDayQk2(N) | 周期:任意周期
区间:不支持未来日的判断
证券:所有有行情的证券 | 根据行情,获取当前证券在当前周期当前时间的最近N个交易日序列
|
| 最近N个市场交易日序列 | MarketTradeDayQk2(N) | 周期:任意周期
区间:不支持未来日的判断
证券:无关,指定SH000001 | 根据行情,获取SH000001在当前周期当前时间的最近N个交易日序列
|
| 最近N个市场交易日序列 | markettradedayqk4(N,EndT) | 周期:日线
区间:支持未来当年的判断
证券:市场代码 | 根据指定市场交易日历,生成指定日最近N个交易日序列
|
| *********** | | |
|
| 交易天数 | tradeDays(Begt,Endt) | 周期:任意周期
区间:不支持未来日
证券:所有有行情的证券 | 根据行情,获取当前证券当前周期下交易时间点数量
|
| 日线交易天数 | StockTradeDays(BegT,EndT) | 周期:日线
区间:不支持未来日
证券:所有有行情的证券 | 根据行情,在截止日为交易日的情况下获取区间内日线交易天数
|
| 市场交易天数 | MarketTradeDays(BegT,EndT) | 周期:任意周期
区间:不支持未来日
证券:无关,已指定SH000001 | 根据行情,获取SH000001在当前周期下交易时间点数量
|
| 市场日线交易天数 | MarketTradeDays2(BegT,EndT) | 周期:日线
区间:任意时间段
证券:市场代码 | 根据市场交易日历,
1)日历表范围内,则获取交易日表中的交易日数
2)超过日历表范围的,则取剔除周末日期数
|
历史交易日的取数范例:
交易日序列:
范例一:获取A股代码交易日序列(区间)
//返回SZ000670从20190415到20190430的区间交易情况,该代码在20190423存在停牌
SetSysParam(PN_Stock(),'SZ000670');
SetSysParam(PN_Cycle(),cy_day());
return StockTradeDayQk(20190415t,20190430t);
//返回:11个交易日序列,ctrl+d 可查看字符串格式日期序列
范例二:获取A股代码交易日序列(N日)
//返回SZ000670在20190430最近11个交易日序列,该代码在20190423存在停牌
SetSysParam(PN_Stock(),'SZ000670');
SetSysParam(PN_Cycle(),cy_day());
setsysparam(pn_date(),20190430t);
return StockTradeDayQk2(11);
//返回:11个交易日序列,ctrl+d 可查看字符串格式日期序列
范例三:获取港股代码交易日序列(区间)
//返回HK00001(长和)从20220401到20220415t的区间交易情况
SetSysParam(PN_Stock(),'HK00001');
SetSysParam(PN_Cycle(),cy_day());
return StockTradeDayQk(20220401t,20220415t);
//返回:9个交易日序列,ctrl+d 可查看字符串格式日期序列
范例四:获取A股市场交易日序列(区间)
//返回A股市场(SH000001)从20190415到20190430的区间交易情况
SetSysParam(PN_Cycle(),cy_day());
return MarketTradeDayQk(20190415t,20190430t);
//返回:12个交易日序列,ctrl+d 可查看字符串格式日期序列
范例五:获取A股市场交易日序列(N日)
//返回A股市场(SH000001)在20190430最近N个交易日序列
SetSysParam(PN_Cycle(),cy_day());
setsysparam(pn_date(),20190430t);
return MarketTradeDayQk2(12);
//返回:12个交易日序列,ctrl+d 可查看字符串格式日期序列
交易天数:
范例六:获取A股代码区间交易天数
//返回SZ000670从201904015到20190430的区间交易天数,该代码在20190423存在停牌
SetSysParam(PN_Stock(),'SZ000670');
SetSysParam(PN_Cycle(),cy_day());
return TradeDays(20190415t,20190430t);
//返回:11
范例七:获取A股市场区间交易天数
//返回A股市场(SH000001)从201904015到20190430的区间交易天数
SetSysParam(PN_Cycle(),cy_day());
return marketTradeDays(20190415t,20190430t);
//返回:12
未来交易日的取数范例:(以下案例是笔者在2022-5-12日运行的结果展示,仅供参考)
未来交易日目前只能获取指定市场指数的,暂不能指定个股。
交易日序列:
范例八:获取指定市场(A股市场)未来一段时间交易日序列,在天软市场交易日历表中获取日期
//返回A股市场从20220101到20231231的区间交易日序列,本次执行市场交易日历只含2022年的交易日
SetSysParam(PN_Stock(),'SH000001');
SetSysParam(PN_Cycle(),cy_day());
return markettradedayqk5(20220101t,20231231t);
//返回242个交易日序列,最后交易日为2022-12-30,ctrl+d 可查看字符串格式日期序列
范例九:获取指定市场(A股市场)指定未来交易日最近N个交易日序列,在天软市场交易日历表中获取日期
//返回A股市场指定20230131的最近60个交易日序列,本次执行市场交易日历只含2022年的交易日
SetSysParam(PN_Stock(),'SH000001');
SetSysParam(PN_Cycle(),cy_day());
return markettradedayqk4(60,20230131t);
//返回60个交易日序列,最后交易日为2022-12-30,ctrl+d 可查看字符串格式日期序列
范例十:获取指定市场(A股市场)未来任意时间区间交易日序列
//返回A股市场从20220101到20231231的区间交易日序列,本次执行市场交易日历只含2022年的交易日
SetSysParam(PN_Stock(),'SH000001');
SetSysParam(PN_Cycle(),cy_day());
return markettradedayqk3(20220101t,20231231t);
//返回502个交易日序列,最后交易日为2023-12-29,ctrl+d 可查看字符串格式日期序列
交易天数:
范例十一:获取指定市场(A股市场)未来一段时间交易天数,在天软市场交易日历表中获取日期
//返回A股市场从20220101到20231231的区间交易天数,本次执行市场交易日历只含2022年的交易日
SetSysParam(PN_Stock(),'SH000001');
SetSysParam(PN_Cycle(),cy_day());
return length(markettradedayqk5(20220101t,20231231t));
//返回:242
范例十二:获取指定市场(A股市场)未来任意时间区间交易天数
//返回A股市场从20220101到20231231的区间交易天数,本次执行市场交易日历只含2022年的交易日
SetSysParam(PN_Stock(),'SH000001');
SetSysParam(PN_Cycle(),cy_day());
return MarketTradeDays2(20220101t,20231231t);
//返回:502
范例十三:判断指定代码在指定日是否交易
//判断SZ000002在20241205是否交易
SetSysParam(PN_Stock(),'SZ000002');
return istradeday(20241205t);
//返回:1
范例十四:判断港股市场在指定日是否交易
//判断港股市场在20250901是否交易(执行日期:20241209)
return istradeday2('HKHSI001',20250901t);
//返回:1
关于交易日的其它使用说明:
FAQ:
Q:如何取历史交易日序列
FAQ:
Q:获取交易日推移的几种方式(包括已公布假期日历的未来交易日)
FAQ:
Q:如何判断是否交易日