以统计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]);
}
发表评论