知识库 > 数据仓库数据提取专题 > 函数方式取数据 > 取时间序列数据

Nday,Nday3    

  • 这两个函数的名字是Nday开头,大家要记住两点,一是N天指的是交易日,而不是自然日,也就是说是N个交易日,二是交易日这个概念,是指的周期,也就是当周期为分钟的时候,是N个交易分钟,如果当周期为周的时候,就是N周。

    SetSysParam(pn_stock(),"SZ000002"); //设置当前股票为深万科
    N:=100; //取100日
    Return Nday(N,"time",DateTimeToStr(sp_time()),"close",close(),"open",open(),"high",high(),"c-o",close()-open());

    我们可以看到,这个NDAY返回的内容可以包括任意多列,第一个参数是N日,之后是一个字段名之后跟一个计算表达式,这个计算表达式可以包括函数,也可以是一个计算,例如close()-open()。
    从返回出来的结果来看,我们可以知道,得到的内容是以从当前开始,往前提取100天的内容。
    如果我们要指定从某个日期开始往前提取100天的内容,例如从2008年12月31日开始往前提取。那么我们可以在NDAY之前加入SetSysParam(pn_date(),inttodate(20081231));

    SetSysParam(pn_stock(),"SZ000002"); //设置当前股票为深万科
    SetSysParam(pn_date(),inttodate(20081231));
    N:=100; //取100日
    Return Nday(N,"time",DateTimeToStr(sp_time()),"close",close(),"open",open(),"high",high(),"c-o",close()-open());

    如果当我们要取的不是日数据,而是分钟数据,例如我们取100个分钟数据,例如从2008-12-31的14:00分开始往前取100个分钟,我们只要在之前设置周期即可。

    SetSysParam(pn_stock(),"SZ000002"); //设置当前股票为深万科
    SetSysParam(pn_Cycle(),cy_1m());
    SetSysParam(pn_date(),inttodate(20081231)+14/24); //14/24就是14点钟。
    N:=100; //取100日
    Return Nday(N,"time",DateTimeToStr(sp_time()),"close",close(),"open",open(),"high",high(),"c-o",close()-open());

    Nday3函数和Nday函数非常类似,但是仅仅只支持取一列数据,而且返回不是一个二维表,而是一个一维数组。例如:

    SetSysParam(pn_stock(),"SZ000002"); //设置当前股票为深万科
    SetSysParam(pn_date(),inttodate(20081231));
    N:=100; //取100日
    Return Nday3(N,close());

    以上这个内容就是返回100个交易日的收盘价数据。