FAQ > 金融建模 > 数据提取 > 行情数据

Q:如何设置复权日    

  • A:在天软中,设置复权,需要设置【复权方式】,以及【复权基准日】。
    其中,【复权方式】由系统参数Pn_rate()来指定,主要控制计算复权的算法,常用方式1(比例复权)。具体复权算法可参考:FAQ:Q:天软的复权方式
      【复权基准日】由系统参数Pn_rateday()来指定,控制开始复权计算的起始基准日,即小于该基准日的复权数据为向前复权,大于该基准日的复权数据为向后复权

    在天软中,取复权后的行情需要Pn_rateday()与Pn_rate()结合使用:
    1、当Setsysparam(Pn_rate(),0)时,即不复权时,设置复权基准日Setsysparam(Pn_rateday(),endt);无效。
    2、当Setsysparam(Pn_rate(),1)或者Setsysparam(Pn_rate(),2)时,此时为复权状态,然后再指定前复权与后复权:
      Setsysparam(pn_rateday(),-1); 设置上市日(或指定firstday())为复权基准日,则所有的数据后复权
      Setsysparam(pn_rateday(),0); 设置当前日期(等同于设置today())为复权基准日,则所有的数据前复权系统默认为当前日期。
      Setsysparam(pn_rateday(),EndT); 当上市日<EndT<当前日期,则小于EndT的数据前复权,大于EndT的数据后复权。
    取后复权范例如下:
      setsysparam(Pn_stock(),'SH601058');
      setsysparam(Pn_rate(),1);
      setsysparam(Pn_rateday(),-1); //设置上市日为复权基准日

      begt:=inttodate(20140401T);
      endt:=inttodate(20140601T);
      setsysparam(pn_date(),endt);
      n:=tradedays(begt,endt);
      return nday(n,'date',datetostr(sp_time()),'close',close());