FAQ > 金融建模 > 应用案例 > 指标或功能实现

Q:市场交易日的推移实现    

简述
功能说明:
日期推移:市场交易日的推移(endt:指定日,N:推移N个)
  当N为正数时,以指定日为起点向历史推N个交易日,若指定日是交易日,则指定日为第一个交易日,否则向前第一个交易日为推移的第一个交易日
  当N为负数时,以指定日为起点向未来推N个交易日,若指定日是交易日,则指定日为第一个交易日,否则向后第一个交易日为推移的第一个交易日
  • 具体实现代码:

     datetime1:=20210104T; //可作为参数,指定日
     roll_n:=-2;     //可作为参数,推N个交易日

     //按市场交易日的日线时间序列进行推移
     with *,array(pn_cycle():cy_day(),pn_stock():'SH000001',pn_date():datetime1) do
     begin
       v:=sp_time();  //指定日当前时间(指交易日)
       if roll_n>0 then rN:=roll_n-1;
       else if roll_n<0 and v=datetime1 then rN:=roll_n+1;
       else rN:=roll_n;
       return specdate(ref(sp_time(),rN),v);
     end

    //返回2021-01-05日
    //注:当roll_n为0时,等价于roll_n为1的情况