看了你们的例子,有些疑问
问题1.
算法一:
INPUT:N(5,2,500); //参数申明
RUNMODE:1; //运行于序列模式
VARIABLE:I=0,S=0;//变量申明
VAR1:=C;
FOR J=1 TO DATACOUNT DO BEGIN
S:=S+VAR1[J];
IF J>=N THEN BEGIN
IF J>N THEN
S:=S-VAR1[J-N];
MA1[J]:S/N; //实现MA(C,N)
I:=0;
END;
END;
算法二:
INPUT:N(5,2,500); //参数申明
RUNMODE:0; //工作于 逐K线模式
IF BARPOS <= N THEN //从计算周期开始计算
EXIT;
MA1:C;
FOR J=1 TO N-1 DO
MA1:=MA1+CLOSE[BARPOS-J];
MA1:=MA1/N;
算法一是序列模式 ,我的理解是当没有实时数据时第一次加载公式,那么要循环回圈 datacount 次,当有实时数据时,新的bar每更新 1 tick 就要循环回圈datacount次,才可以算出最新的均线值,是这样理解吗?
对于算法二:这种逐k模式 ,如果实时数据搭配仅刷最后一根k的选项,那么新的bar每更新 1 tick 显然只需要循环回圈n次 ,便可算出最新的均线值,如例子中的5 ,那么对比算法一 ,效率高很多 ,为什么你们在后面的说明去说“在通常情况下,我们推荐用户在序列模式下运行你的公式系统,因为这样会有很高的执行 效率”,,这个怎么理解
逐k是每根k都会刷新进行
另外如果你是做图表模型的话,没有必要去理会,图表是必须运行在逐k模式下的
序列模式多用于技术指标等不交易的,或者走后台程序化
我一楼的问题就是针对指标的效率, 我就想了解清楚这个机制,麻烦技术老师正面解答一下
序列在盘中只对最新一根k进行计算,逐k是所有加载的k都会计算一遍。
效率肯定是序列高
那换句话说 ,序列模式和逐k仅刷最后一根k不是一样的
执行上都是最后一根k
但是对于很多函数是不同的,比如variable函数说明中说道全局变量必须用在逐k。
如果你只关注效率那么两者一样,但是内在构造是不同的,具体你还是要根据函数使用来决定