//--------------------------------------------------------------
// 简称: iEMA
// 名称: iEMA
// 类型: 用户函数
// 输出: Numeric
//--------------------------------------------------------------
Params
NumericArray Arr;
Numeric Length(10);
Numeric Pos(0); //0:当前周期,如果计算上一周期,Pos为1,依次类推
Begin
Integer arrLen = ArrLength(arr);
if(arrLen<1) Return 0;
if(Pos<0 || Pos>= arrLen ) Return Arr[arrLen-1]; //参数合法性验证
Numeric sFcactor = 2 / ( Length + 1 ); //平滑系数
Integer start = arrLen-1;
if(start>Pos+200) start=Pos+200; //最多值计算200个元素,太多没有意义,效率也低
Numeric result;
for(Integer i=start;i>=Pos;i--)
{
if(i == start)
{
result = Arr[i];
}
Else
{
result = result + sFcactor * (Arr[i] - result);
}
}
Return result;
End
iEMA
说明 |
求数组中元素的指数平滑平均值 |
语法 |
Numeric iEMA(NumericArray Arr,Numeric Length=10,Numeric
Pos=0) |
参数 |
Arr 数组 Length 求平均值的元素个数 Pos 从第几个元素开始 |
备注 |
Pos+Length的值必须小于数组Arr的长度 |
示例 |
求数组arr中前1个元素的5周期指数平均 Numeric result = iEMA(arr,5,1); |
[此贴子已经被作者于2019/6/24 11:17:01编辑过]
它这个是对数组里面的数值进行ema的计算。处理得话,需要时间尝试下,不能确定一定可以。