优化点说明:
FU_Summation_Array功能函数:用于计算bar_data[0-5]对应data0-data5图层的均线数据(bar_data[0-5]存储着各图层历史clos的数据);
这个函数通过Length(5,20,60)参数来进行for循环回溯Close数据;
盘中\调试策略的时候,存在大量的数据重复运算,导致计算机卡顿;
请问有什么方法可以优化重复运算呢?
我想到的方法是指定数组区域进行求和运算
比如Na2Sum-二维数组的元素求和
但是Na2Sum函数只能将这个函数内所有的数据进行求和,不能指定区域?
附件包含运行工作区以及策略源代码;
IF( CurrentBar >= Length1) sequence_array[0][0][0] = FU_Summation_Array(Length1, bar_data[i]);
比如这个部分 ,你是指什么被重复计算了
然后主要是意图不明确
bar_data存各个数据的意义是?
bar_data[1][0]-bar_data[1][60]存放着60个data1.close数据; FU_Summation_Array(5, bar_data[1]) 意思是在bar_data[1]这个二维数组循环5次累加并返回结果;
但是bar_data[1][0] = Data0.Close[1];已经被替换成Data0.Close[1]的固定值了所以不用每个Tick就运算一次(因为固定值结果是一样的,所以就不需要重复FOR循环运算)
只需要data0图层更新了K线就执行运算一次就可以了;
请问如何指定区域二维数组求和:比如bar_data[1][0]到 bar_data[1][20] 的数据累加求和;
或者我如何将指定区域二维数组赋值到其他数组里面去:比如bar_data[1][0]到bar_data[1][20] 的数据 复制到 bar_data[2][0]-bar_data[2][20] 里面?
那么你是判断哪里重复运算了?
没看懂这个函数的意图
老师还在吗?