数据求中间值的写法

以统计spread为例,没有使用除法。

数据排序之后,直接取中间序号对应的值。

// return median spread
double Spread(double x=-1.0)
  {
   static int iS=-1,mpos;

// first call - initialize both spread arrays and median position index
   if(iS==-1)
      if(ArrayInitialize(Spread,Ask-Bid)==SpreadSampleSize)
         if(ArrayCopy(SortSpread,Spread)==SpreadSampleSize)
           {
            mpos=SpreadSampleSize/2-1;
            iS=0;
           }

// if called with actual spread, update sample array
   if(x!=-1.0)
     {
      if(iS==SpreadSampleSize)
         iS= 0;
      Spread[iS]=x;
      iS++;
      ArrayCopy(SortSpread,Spread);
      ArraySort(SortSpread);
     }

// return median spread (= actual spread in case of first call or fixed spreads)
   return(SortSpread[mpos]);
  }

本博客所有文章如无特别注明均为原创。作者:天泓评测
分享到:更多

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)