15min周期里面引用另一个指标2小时的数据,需要引用12个数据。
问题1:怎样写才能性能最优。目前这12个数据一个一个引用太卡了,有没有一种写法可以计算一次,然后随便调用各个数据?
问题2:是1min的120根:STKINDI('','a.MA1',0,21,120);
还是1小时的2根:STKINDI('','a.MA1',0,24,2);
这两个写法哪个好?
1.跨周期调用有一些优化建议。 一般如果是下面这种情况:引用a指标下的2个变量 x,y 然后调用过来之后再进行x,y之间计算。这种情况是可以把x,y相关的计算在a里面计算好,然后再调用过来。这样可以减少一次调用。
如果不跨品种。
这种方式效率更高。
x:"MACD#DAY(26,10,5)";
引用操作符
例如:
"INDIE.VAR"(P1,P2) 引用INDI指标的VAR输出,计算参数为P1,P2。若没有指定公式线,系统将取最后一行公式输出
数据类型有TICK、MIN1、MIN3、MIN5、MIN10、MIN15、MIN30、MIN60、DAY、WEEK、MONTH、YEAR、MULTIDAY、MULTIMIN、MULTISEC、MULTIHOUR、QUARTER、SEMIYEAR、SOLARTERM
"MACD#WEEK"(26,10,5) 引用周线数据的MACD指标最后一行公式输出
"MACD"表示该指标的最后—行公式输出并且使用公式的默认参数。
"000001$CLOSE" 引用品种000001的收盘价
"SZ000001$CLOSE#WEEK" 引用SZ市场的品种000001周线收盘价
"VOL##DAY"引用日线数据的前一周期的VOL指标
引用数据时,需要实现确认被引用品种周期数据齐全,再首次使用或者在不确定时,请手工进行数据补充工作
"DLLNAME@FNCNAME"(P1,P2) 引用DLLNAME.DLL的FNCNAME函数,计算参数为P1,P2
用户函数模式:#用户函数.指标线(参数)#
例如:#test01.B1(20,45)#,表示调用test01指标的B1输出线,参数为20和45,使用用户函数模式比扩周期引用更加节省内存,提高运行效率.
所属函数组:控制语句
2.这2种写法上没太大差异。大周期都是小周期合并过来的。但是第二种方式 是用5分钟合成的,可能在计算上会少点这样子。
好的,谢谢!我用这个方式"a.MA1#HOUR2";引用了下,为什么k线上没有立即出来所有的2小时数据?得把k线缩很小才能显示一部分引用的2小时数据
"a.MA1#HOUR2";
好像没有这种周期参数吧。里面的多小时周期应该是MULTIHOUR,这个周期具体值是和 工具-选项-多周期 里面的多周期对应的。 这种调用在周期参数有误时候不会报错,是采用了某种默认处理了。另外2小时周期的话,你要补充足够五分钟数据。