iVolume и Volume
Добавлено: Вс ноя 25, 2007 11:15 pm
вызов Volume() и Symbol() в теле индикатора вызывает exception. Вызов iVolume("EURUSD", Timeframe(), index) - всегда возвращает 0. В чем проблема?
Наш сайт: https://forextester.ru/
https://www.forextester.ru/forum/
Код надо посмотреть.Rmax писал(а):вызов Volume() и Symbol() в теле индикатора вызывает exception. Вызов iVolume("EURUSD", Timeframe(), index) - всегда возвращает 0. В чем проблема?
Код: Выделить всё
EXPORT void __stdcall Calculate(int index)
{
//SetCurrencyAndTimeframe("EURUSD", Timeframe());
int i,j,nCountedBars;
double dPositiveMF,dNegativeMF,dCurrentTP,dPreviousTP;
//---- insufficient data
if(Bars()<=ExtMFIPeriod) return;
if (index < Bars() - ExtMFIPeriod-1)
{
dPositiveMF=0.0;
dNegativeMF=0.0;
dCurrentTP=(High(index)+Low(index)+Close(index))/3;
for(j=0; j<ExtMFIPeriod; j++)
{
char buffer[100];
sprintf(buffer, "index: %d, j: %d, Bars: %d, Volume: %d, Symbol: , Timeframe:%d ", index, j, Bars(), iVolume("EURUSD", Timeframe(), index), (int)Timeframe());
Print(buffer);
dPreviousTP=(High(index+j+1)+Low(index+j+1)+Close(index+j+1))/3;
/*Print("1");*/
if(dCurrentTP>dPreviousTP)
dPositiveMF+=iVolume(Symbol(), Timeframe(), index+j)*dCurrentTP;
else
{
if(dCurrentTP<dPreviousTP)
dNegativeMF+=iVolume(Symbol(), Timeframe(), index+j)*dCurrentTP;
}
//Print("2");
dCurrentTP=dPreviousTP;
//Print("3");
}
//----
if(dNegativeMF!=0.0)
ExtMFIBuffer[index]=100-100/(1+dPositiveMF/dNegativeMF);
else
ExtMFIBuffer[index]=100;
}
}