下载MetaTrader 5
要添加评论,请登录注册
注册 发表文章并获取200USD
andre22
22
andre22 2007.12.29 10:19 

我翻遍MQL4的函数库,未能发现与SUM这中累计求和函数相同的函数。

是否在MQL中只能采用逻辑运算的方法来进行呢?

比如我想求12个周期内(当天最高价-前收盘价)与0比较的最大值的总和

SUM(mathmax(high - Pre_close),0),12)

这样的计算方式在MT4中应使用什么样的函数或者逻辑运算为好呢?

请给予提示或者帮忙编一小段。

再次感谢~(*^__^*)

andre22
22
andre22 2007.12.29 11:12  

是否参考MA(moving averge)源码中的计算方法比较合理呢?

void sma()
  {
   double sum=0;
   int    i,pos=Bars-ExtCountedBars-1;
//---- initial accumulation
   if(pos<MA_Period) pos=MA_Period;
   for(i=1;i<MA_Period;i++,pos--)
      sum+=Close[pos];
//---- main calculation loop
   while(pos>=0)
     {
      sum+=Close[pos];
      ExtMapBuffer[pos]=sum/MA_Period;
       sum-=Close[pos+MA_Period-1];
        pos--;
     }
Rashid Umarov
管理员
6600
Rashid Umarov 2008.01.07 11:11  
I think you mean something like that:
 
start()
{
  double val;
  for (i=limit;i>=0;i--)
   {
   val=0;
   if (High[i]>Close[i+1]) val=High[i]-Close[i+1];
   difference[i]=val;
   summ=summ+val-difference[i+period];
   SummBuffer[i]=summ;
   }
}
xzpchi
25
xzpchi 2008.05.26 13:54  
start() { double val; for (i=limit;i>=0;i--)//int limit=Bars-ExtCountedBars-1 ? { val=0; if (High[i]>Close[i+1]) val=High[i]-Close[i+1]; difference[i]=val; summ=summ+val-difference[i+period];//period是我设定的周期吧? SummBuffer[i]=summ; } } //------------------+ ROSH,这样的代码得不到结果呀! 我想实现的是累计一个数值My_sum,你可以用我的例子再举一个程式吗? A_sum[ i ] = ( High[0] + Low[0] ) / 2 * ( Close[0] - Close[1] ) ; My_sum = sum ( A_sum, 36 ) ; //累计36周期的My_sum的和值.
xzpchi
25
xzpchi 2008.05.26 14:00  
int 输入的参数;
A_sum[ i ] = ( High[0] + Low[0] ) / 2 * ( Close[0] - Close[1] ) ;
My_sum = sum ( A_sum, 输入的参数 ) ; //累计36周期的My_sum的和值.
/
要添加评论,请登录注册