实现1:盘中实时刷新股指期货基差曲线图
要点说明:
1、取数,组织数据结构包括'time'列与指标列,本例中为"基差"列
2、画图(为了保证图形的时间序列不变,通过tsperiod获取今日的理论时间序列,在画图前进行合并补充还未有数据的时间点)
3、盘中监控,可参考:FAQ:
Q:如何实现盘中监控
实现代码:
begT:=today()+6/24;
endt:=today()+16/24;
cy:=cy_1m();
stockid:="IF00";
indexid:="SH000300";
T0:=StrToTime('15:01:00');
//-生成理论时间序列
TArr:= select datetimetostr(thisrow) as gftime() from tsperiod(stockid,cy,today()) end;
while TimeOf(Now()) < T0 do
begin
SetSysParam(PN_Stock(),stockid);
SetSysParam(pn_cycle(),cy);
setsysparam(pn_date(),endt);
N:=tradedays(begT,endt);
t:=Nday(N,gftime(),datetimetostr(sp_time()),"基差",spec(close(),stockid)-spec(close(),indexid));
gt:=TArr|t; //并上今日理论时间序列
g:=graph(gtline(),'基差走势',gt); //画图
sendrunningdata(g,"基差走势图"); //窗口中输出图形|数据
Sleep(0.5*1000); //半秒种刷新一次
end
return '非交易时段';
盘中实时运行(上午10点33分)结果:
实现2:升级版-添加历史走势一起展示
说明:展示最近1个月内某股指基差的曲线图,若为分钟线,数据点较多,画出来的图形点数过于密集,为了美观,将分钟线变更为15分钟线进行展示。
实现代码如下:
//-变量
cy:=cy_15m();
stockid:='IF00';
Indexid:='SH000300';
ex:=@spec(close(),stockid)-spec(close(),Indexid);//表达式
exName:="基差";
begt:=incMonth(today(),-1)+16/24; //最近1个月
endt:=today()+16/24;
//--当前系统参数
SetSysParam(PN_Stock(),stockid);
SetSysParam(pn_cycle(),cy);
//--历史数据提取
//-历史时间区间-高频下应该精确到时分秒
hbegt:=begt;
hendt:=endt-1+16/24; //不包括今日
setsysparam(pn_date(),hendt);
N:=tradedays(hbegt,hendt);
ht:=Nday(N,gftime(),datetimetostr(sp_time()),exName,eval(ex));
//-今日盘中数据提取
//-今日时间区间
tbegT:=today();
tendt:=endt;
T0:=StrToTime('15:01:00');
//-生成今日理论时间序列
TArr:= select datetimetostr(thisrow) as gftime() from tsperiod(stockid,cy,today()) end;
//--循环提取今日实时数据
while TimeOf(Now()) < T0 do
begin
setsysparam(pn_date(),tendt);
N:=tradedays(tbegT,tendt);
t:=Nday(N,gftime(),datetimetostr(sp_time()),exName,eval(ex));
gt:=TArr|t; //并上今日理论时间序列
//并上历史数据
gt:=ht union gt;
// return gt;
g:=graph(gtline(),'基差走势',gt);
sendrunningdata(g,"基差走势图");
Sleep(0.5*1000);
end
return '非交易时段';
盘中实时运行(上午10点49分)结果:
