以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 1分钟周期里引用日K线,哪种方式效率更高? (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=180250) |
-- 作者:cityarcher -- 发布时间:2020/6/1 12:36:26 -- 1分钟周期里引用日K线,哪种方式效率更高? 我有两种方式引用日线数据: 方式一: variable:ld_open[]:=0,ld_high[]:=0,ld_low[]:=0,ld_close[]:=0,ld_mid[]:=0,od_close[]:=0,ld_cr[]:=0;
//ld:last_day(上日),od:old_day(前日) if todaybar=1 then begin
ld_open:=callstock(\'\',vtopen,6,-1);//昨开
ld_high:=callstock(\'\',vthigh,6,-1);//昨高
ld_low:=callstock(\'\',vtlow,6,-1);//昨低
ld_close:=callstock(\'\',vtclose,6,-1);//昨收
ld_mid:=(ld_open+ld_high+ld_low+ld_close)/4;//昨中
od_close:=callstock(\'\',vtclose,6,-2);//前收
ld_cr:=abs(ld_close/od_close-1)*100;
end 方式二: 先弄好一个叫STK_INFO的公式,公式内容: OPEN0:OPEN,NODRAW; HIGH0:HIGH,NODRAW; LOW0:LOW,NODRAW; CLOSE0:CLOSE,NODRAW; VOL0:VOL,NODRAW; AMOUNT0:AMOUNT,NODRAW; OPENINT0:OPENINT,NODRAW; ZCLOSE:REF(CLOSE,1),NODRAW; 然后在另一个公式里引用stk_info的数据: variable:ld_open[]:=0,ld_high[]:=0,ld_low[]:=0,ld_close[]:=0,ld_mid[]:=0,od_close[]:=0,ld_cr[]:=0;//ld:last_day(上日),od:old_day(前日) high0:="STK_INFO.high0##day"; low0:="STK_INFO.low0##day"; open0:="STK_INFO.open0##day"; close0:="STK_INFO.close0##day"; zclose:="STK_INFO.zclose##day"; if todaybar=1 then begin
ld_open:=open0;//昨开
ld_high:=high0;//昨高
ld_low:=low0;//昨低
ld_close:=close0;//昨收
ld_mid:=(ld_open+ld_high+ld_low+ld_close)/4;//昨中
od_close:=zclose;//前收
ld_cr:=abs(ld_close/od_close-1)*100;
end 结果显示: 方式一在运行时,因为callstock的原因,ld_cr数组的数据在前2天没有数据,而方式二有数据。 请问: 方式一和方式二,那种方式的效率更高? 谢谢! |
-- 作者:wenarm -- 发布时间:2020/6/1 13:08:25 -- close作为序列变量,本身就是数组。你方式一,又将其定义数组,多此一举。
跨周期引用建议你直接用函数callstock。或者通过引用符号。如 "$CLOSE##DAY"
[此贴子已经被作者于2020/6/1 13:08:48编辑过]
|
-- 作者:cityarcher -- 发布时间:2020/6/1 13:19:17 -- 好的,谢谢! 之前尝试过"$CLOSE##DAY"但是好像没数据,刚才又试了一下,有数据,那就确实没有必要弄个STK_INFO的公式了。 给日线数据建数组的目的是为了方便计算。
|