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

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

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

     1).在政府发布某年的法定节假日后,可取到该年的市场交易日序列表
     2).超过交易日序列表范围的,取剔除周末的日期序列
    目前支持的获取未来交易日的市场有:A股,港股,沪深港通南向、北向,期货。
    取数方法:
    日期范围取数类型取数模型模型说明
    历史交易日交易日序列StockTradeDayQk
    MarketTradeDayQk
    StockTradeDayQk:指定代码在日期区间的交易日序列
    StockTradeDayQk2:指定代码从指定日向前推N个交易日序列
    MarketTradeDayQk:A股市场在日期区间的交易日序列
    MarketTradeDayQk2:A股市场从指定日向前推N个交易日序列
    FAQ:StockTradeDayQk
    FAQ:StockTradeDayQk2
    FAQ:MarketTradeDayQk
    FAQ:MarketTradeDayQk2
    历史交易日交易天数tradedays
    MarketTradeDays
    tradedays:指定代码在日期区间的交易天数
    MarketTradeDays:A股市场在日期区间的交易天数
    FAQ:tradeDays
    FAQ:MarketTradeDays
    含未来交易日交易日序列markettradedayqk5
    markettradedayqk3
    markettradedayqk5:从交易日历表获得区间市场交易日序列
    markettradedayqk4:从交易日历表获得最近N个市场交易日序列
    markettradedayqk3:获取市场交易日序列(包括历史和未来预估),
     1)在交易日序列表范围内的时间段,从该表获取交易日序列
     2)超过交易日序列表范围内的,取剔除周末的日期序列
    可获取的市场指数代码:
     A 股:SH000001
     港股:HKHSI001
     沪深港通南向:HSG000001
     沪深港通北向:HSG000002
     期货:QI000001
    FAQ:MarketTradedayQK3
    FAQ:markettradedayqk4
    FAQ:markettradedayqk5
    FAQ:市场交易日历
    含未来交易日交易天数MarketTradeDays2MarketTradeDays2:统计markettradedayqk3返回的日期数
    FAQ:MarketTradeDays2
    历史交易日指定日是否交易日istradeday
    istradeday4
    istradeday:当前股票在指定日是否交易,判断是否有行情不管是否有成交量
    istradeday4:当前股票在指定日是否交易,判断依据为是否有成交量
    FAQ:IsTradeDay
    FAQ:istradeday4
    含未来交易日指定日是否交易日istradeday2istradeday2:对istradeday的扩展,增加对市场交易日历表中交易日的判断
    包括A股市场、港股市场、沪深港通通道的交易日判断
    FAQ:istradeday2

    历史交易日的取数范例:
    交易日序列:
    范例一:获取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:如何判断是否交易日