以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  易盛9.2代码转金字塔  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=170613)

--  作者:单刀赴会
--  发布时间:2019/6/24 11:15:56
--  易盛9.2代码转金字塔
//--------------------------------------------------------------
// 简称: 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编辑过]

--  作者:FireScript
--  发布时间:2019/6/24 11:20:12
--  
直接用这个 EMA函数不就可以了。
--  作者:FireScript
--  发布时间:2019/6/24 11:27:28
--  
 它这个是对数组里面的数值进行ema的计算。处理得话,需要时间尝试下,不能确定一定可以。
--  作者:yukizzc
--  发布时间:2019/6/24 13:32:26
--  
就是ema的上一根