FAQ > 金融建模 > 建模问题 > 交易日相关

Q:天软时间区间交易日序列及交易天数模型汇总    

  • 交易日取数说明:
      交易日指交易发生的日期,对于交易日的判断主要分为以下两种情况:历史日期是否为交易日及未来日期是否为交易日
    1.对于历史日期判断交易日主要查看指定市场或证券在当天是否开市交易;
    2.对于未来日期判断交易日是通过剔除该市场的法定节假日及周末日期:

      1).在政府发布某年的法定节假日后,可取到该年的市场交易日序列表
      2).超过交易日序列表范围的,取剔除周末的日期序列
    目前支持的获取未来交易日的市场有:A股,港股,沪深港通南向、北向。
    取数方法:
    日期范围取数类型取数模型模型说明
    历史交易日交易日序列 StockTradeDayQk
    MarketTradeDayQk
    StockTradeDayQk:指定代码在日期区间的交易日序列
    MarketTradeDayQk:A股市场在日期区间的交易日序列
    FAQ:StockTradeDayQk
    FAQ:MarketTradeDayQk
    历史交易日交易天数tradedays
    MarketTradeDays
    tradedays:指定代码在日期区间的交易天数
    MarketTradeDays:A股市场在日期区间的交易天数
    FAQ:
    FAQ:MarketTradeDays
    含未来交易日交易日序列markettradedayqk5
    markettradedayqk3
    markettradedayqk5:从交易日历表获得市场交易日序列
    markettradedayqk3:获取市场交易日序列(包括历史和未来预估),
      1)在交易日序列表范围内的时间段,从该表获取交易日序列
      2)超过交易日序列表范围内的,取剔除周末的日期序列
    可获取的市场指数代码:
      A 股:SH000001
      港股:HKHSI001
      沪深港通南向:HSG000001
      沪深港通北向:HSG000002
    FAQ:市场交易日历
    含未来交易日交易天数MarketTradeDays2MarketTradeDays2:统计markettradedayqk3返回的日期数

    部分函数说明:
    MarketTradedayQK3
    定义:MarketTradedayQK3(BegT,EndT:date):array
    说明:获取市场交易日序列(包括历史和未来预估的)
        1)在交易日序列表范围内的时间段,则获取交易日序列表中的交易日序列
        2)超过交易日序列表范围内的,则取日期序列,剔除周末 
        系统参数:市场指数代码,包括:
         A股:SH000001
         沪深港通南向:HSG000001
         沪深港通北向:HSG000002
         港股:HKHSI001   
    参数:
      begt:date 开始日期
      endt:date 截止日期
    返回:array,日期序列
    MarketTradedayQK5
    定义:MarketTradedayQK5(BegT,EndT:date):array
    说明:获取市场交易日序列,只判断已公开的交易日,即截止日不能超过本年或未来一年(具体根据交易所未来交易日的公布情况)。
      仅从交易日历表获得市场交易日
      系统参数:市场指数代码,包括:
       A股:SH000001
       沪深港通南向:HSG000001
       沪深港通北向:HSG000002
       港股:HKHSI001   
    参数:
      begt:date 开始日期
      endt:date 截止日期
    返回:array,日期序列
    MarketTradedays2
    定义:MarketTradedays2(BegT,EndT:date):int
    说明:区间交易天数(考虑未来交易日),涉及到未来交易日(估算)
        1)在交易日序列表范围内的时间段,则获取交易日天数
        2)超过交易日序列表范围内的,则取日期序列,剔除周末的天数
        系统参数:市场指数代码,包括:
         A股:SH000001
         沪深港通南向:HSG000001
         沪深港通北向:HSG000002
         港股:HKHSI001   
    参数:
      begt:date 开始日期
      endt:date 截止日期
    返回:Int,交易天数
    历史交易日的取数范例:
    交易日序列:
    范例一:获取A股代码交易日序列

        //返回SZ000670从201904015到20190430的区间交易情况,该代码在20190423存在停牌
        SetSysParam(PN_Stock(),'SZ000670');
        SetSysParam(PN_Cycle(),cy_day());
        return StockTradeDayQk(20190415t,20190430t);
        //返回: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)从201904015到20190430的区间交易情况
        SetSysParam(PN_Cycle(),cy_day());
        return MarketTradeDayQk(20190415t,20190430t);
        //返回: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股市场)未来任意时间区间交易日序列

        //返回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

    关于交易日的其它使用说明:
    FAQ:Q:如何取历史交易日序列
    FAQ:Q:获取交易日推移的几种方式(包括已公布假期日历的未来交易日)
    FAQ:Q:如何判断是否交易日