以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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的公式了。
给日线数据建数组的目的是为了方便计算。