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

Q:如何获取未来的交易日数据    

  • A:已有相关公用函数(支持未来交易日,依据SH000001的753表数据):
    StockEndTAfterNDay:指定日期向后推N个交易日期,函数说明:FAQ:StockEndTAfterNDay
    StockTradeDaysQkAfterN:指定日期向后推N个交易日期,函数说明:FAQ:StockTradeDaysQkAfterN
     
    天软已提供未来交易日数据,可查看证券数据专家-》表格数据-》指数.市场交易日历。目前提供的是本年的交易日数据,在每年的节假日安排出来后,天软数据组人员会即时更新。
       提取数据范例(下述模型可通过附件下载附件:未来交易日.zip ):
    1、提取开始日到截止日之间的交易日序列(开始日和截止日都可以是未来的日期):
    Function FutureTradedayQK(BegT,EndT);
    Begin
      begt_:=datetoint(begt);
      endt_:=datetoint(endt);
      dayArr:=sselect inttodate(['截止日']) from infotable 753 of 'SH000001'
            where ['截止日']>=begt_
               and ['截止日']<=endt_
               and ['是否交易日']=1
               order by ['截止日'] end;
      hisArr:=MarketTradeDayQk(begt,dayArr[0]);
      return hisArr union2 dayArr;
    End;

    2、指定日是否交易日(可判断未来日期):
    Function IfTradeDay1(EndT);
    Begin
      if EndT<today() then
       return istradeday(endt);
      else
      begin
       EndT_:=datetoint(EndT);
       r:=sselect ['截止日'] from infotable 753 of 'SH000001'
            where ['是否交易日']=1 end;
       if EndT_ in r then return 1;
       else return 0;
      end;
    End;

    3、取指定日后N个的交易日:
    Function DateAfterNDays(EndT,Days);
    Begin
      oV:=BackUpSystemParameters();
      try
       SetSysParam(PN_Stock(),'SH000001');
       SetSysParam(PN_Date(),EndT);
       //未来N日
       DateAfter:=ref(sp_time(),-Days);
       if DateAfter=0 then
       begin
         t:=Select drange(0 to Days-1) * from infoTable 753 of 'SH000001'
         where ['截止日']>DateToInt(EndT) order by ['截止日'] end;

         if isTable(t) then
         return IntToDate(t[Days-1]['截止日']);
       end
       else
       return DateAfter;
      finally
       RestoreSystemParameters(oV);
      end;
    End;