A:在天软行情中,有夜盘的情况下,一个完整的日线周期为昨日夜盘开盘到今天白盘收盘。我们可以依据这个规则,确定数据的开始时间点与截止时间点。
例如,取豆粕认购期权合约m2001-C-2900在20190122这一天的完整分钟线数据,夜盘+白盘:
//确定起止时间点
vEndT:=20190122T; //指定日
stockID:="m2001-C-2900";
SetSysParam(pn_stock(),stockID); //指定合约
SetSysParam(PN_Cycle(),cy_day()); //日线
SetSysParam(PN_date(),vEndT); //当前时间
refT:=ref(sp_time(),1); //上一个日线交易日
if refT=0 then //当前时间为上市日,不存在上个交易日,则向前推三天为起点
refT:=sp_time()-3;
begT:=refT+16/24; //设置开始时间点为上一个日线交易日的收盘时间点
endT:=vEndT+16/24; //设置截止时间点为当天收盘时间点-与begt形成完整时间周期
setsysparam(pn_cycle(),cy_1m());//修改当前周期为分钟线
//取数,有了开始时间截止时间,可以直接用markettable提取
return select ['date'],['close'],['vol'],['low'],['cjbs'] from markettable datekey begt to endt of stockID end;
---------------------------------------------------------------------
//若需要用nday提取,去掉上一句代码后,接着实现如下
N :=tradedays(begT,endT); //取分钟线下的时间区间交易周期数
setsysparam(pn_date(),endT);//不可省,nday的起始点靠这个确定
return nday(N,"time",datetimetostr(sp_time()),"open",open(),"close",close(),"settle",settlement(),"vol",vol());
注:markettable的用法,可参考:FAQ:
MARKETTABLE