iVolume и Volume
-
- Сообщения: 29
- Зарегистрирован: Пт июл 27, 2007 4:05 pm
iVolume и Volume
вызов Volume() и Symbol() в теле индикатора вызывает exception. Вызов iVolume("EURUSD", Timeframe(), index) - всегда возвращает 0. В чем проблема?
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Re: iVolume и Volume
Код надо посмотреть.Rmax писал(а):вызов Volume() и Symbol() в теле индикатора вызывает exception. Вызов iVolume("EURUSD", Timeframe(), index) - всегда возвращает 0. В чем проблема?
Asta la vista
Mike
Mike
-
- Сообщения: 29
- Зарегистрирован: Пт июл 27, 2007 4:05 pm
Код: Выделить всё
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;
}
}
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
Скинь плиз откомпиллированный длл чтобы я посмотрел где в программе возникают проблемы.
Я проверил, под Дельфи этот код отлично работает:
procedure Calculate(index: integer); stdcall;
begin
Print(Symbol + ', ' + FloatToStrF(iVolume(Symbol, Timeframe, 0), ffFixed, 10, 0));
vol[index] := volume(index);
end;
Я проверил, под Дельфи этот код отлично работает:
procedure Calculate(index: integer); stdcall;
begin
Print(Symbol + ', ' + FloatToStrF(iVolume(Symbol, Timeframe, 0), ffFixed, 10, 0));
vol[index] := volume(index);
end;
Asta la vista
Mike
Mike
-
- Сообщения: 29
- Зарегистрирован: Пт июл 27, 2007 4:05 pm
-
- Сообщения: 29
- Зарегистрирован: Пт июл 27, 2007 4:05 pm
- Terranin
- Site Admin
- Сообщения: 846
- Зарегистрирован: Вс июл 23, 2006 12:01 pm
-
- Сообщения: 29
- Зарегистрирован: Пт июл 27, 2007 4:05 pm