Salut TAAD,
en fixant la taille du tableau à l'initialisation, cela fonctionne :
Code:
double buffer[1003];
double MA0, MA1, DMA;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int limit,i;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- MA difference counted in the 1-st buffer
for(i=0; i<limit; i++)
{
buffer[i]=iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,i);//*2-iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,i);
//Print(iMA(NULL,0,20,0,MODE_LWMA,PRICE_CLOSE,i)*2);
}
//---- HMA counted in the 0-th buffer
MA0=iMAOnArray(buffer,0,20,0,MODE_LWMA,0);
MA1=iMAOnArray(buffer,0,20,0,MODE_LWMA,1);
DMA=MA0-MA1;
Comment ("limit :",limit,"\nValeur DMA : ",DMA,"\nValeur MA : ",DoubleToStr(MA0,5),"\nValeur MA1 : ",MA1);
}
PS : 2*a-a = a ...
bonne soirée,
Guonzo.