Непонятное в работе индикатора/эксперта...

 
Кто подскажет решениеи проблемы? Или ошибки, не знаю, что это...
Имеется индикатор/эксперт (можно и так и эдак присобачивать), который считает волатильность. Вся фишка в том, что при ПЕРВОМ за день запуске терминала (с уже приаттаченным к графику индюком или при первом его, индюка, запуске) выдаются данные ВЧЕРАШНЕГО дня, хотя там стоит явный перерасчет СРАЗУ! В чем такое дело? Как так? Как только меняется перод или ещё что вручную - тут же всё пересчитывает и всё Ок. Почему??? Может что то не так написал? :)
Вот оно:

//+------------------------------------------------------------------+
//|                                Copyright © 2005, Kucherenko A.N. |
//|                                                   ank@fromru.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Kucherenko A.N."
#property link      "ank@fromru.com"
#property indicator_chart_window
#property indicator_buffers 1

// Расчет волатильности 4-х основных валютных пар за последние 5 дней 
// и сравнение их с исторической волатильностью

int prevday=0, Ponedelnik=10;
int HisoryDaily=0;
double CurrentVolatilnost=0;
int VolatChas=0;
string Volat[5];

//+------------------------------------------------------------------------+
//|                    Функция расчета волатильности                       |
//+------------------------------------------------------------------------+
void Volatil(string& Volat[]) 
   {
   string Valuta;
   for (int aa=1;aa<=4;aa++)
    {
      CurrentVolatilnost=0;
      VolatChas=0;
      switch(aa)
      {
      case 1:
      Valuta="EURUSD";
      HisoryDaily=100;
      break;
      case 2:
      Valuta="GBPUSD";
      HisoryDaily=140;
      break;
      case 3:
      Valuta="USDCHF";
      HisoryDaily=120;
      break;
      case 4:
      Valuta="USDJPY";
      HisoryDaily=90;
      break;
      }      
      for (int nn=1;nn<=5;nn++)
        {
        CurrentVolatilnost=CurrentVolatilnost+(iHigh(Valuta,PERIOD_D1,nn)-iLow(Valuta,PERIOD_D1,nn));
        }     
      if (Valuta=="USDJPY") CurrentVolatilnost=(CurrentVolatilnost/5)/0.01;
         else CurrentVolatilnost=(CurrentVolatilnost/5)/0.0001;
      if (CurrentVolatilnost==0) Alert("Еррор! ",Valuta);
      if (CurrentVolatilnost>HisoryDaily) VolatChas=1;
         else VolatChas=4;   
      Volat[aa]=Valuta+" "+HisoryDaily+"-"+DoubleToStr(CurrentVolatilnost, 1)+" "+VolatChas+"-час";
      Alert("Волатильность:\n", Volat[1], ", ", Volat[2], "\n", Volat[3], ", ", Volat[4]," День-",Day());
      //MessageBox("Волатильность (историческая-текущая, период):\n"+Volat[1]+", "+Volat[2]+"\n"+Volat[3]+", "+Volat[4]+"\nДень-"+Day(), "Расчет волатильности", MB_OK|MB_ICONINFORMATION);
    }   
   return;
   }

// конец функции
//+------------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
//Volatil(Volat);
//Comment("Волатильность (историческая-текущая, период):","\n", Volat[1], ", ", Volat[2], "\n", Volat[3], ", ", Volat[4]);
//ObjectsRedraw();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
Comment("");
ObjectsRedraw();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
// Считаем, если новый день или первый раз
if(prevday != Day())
   {
      Volatil(Volat);
      ObjectsRedraw();
      prevday = Day();
   }
ObjectsRedraw();
Comment("Волатильность (историческая-текущая, период):","\n", Volat[1], ", ", Volat[2], "\n", Volat[3], ", ", Volat[4]);
ObjectsRedraw();
   return(0);
  }
//+------------------------------------------------------------------+
 
Вот сегодня запустил - а он мне пишет, что ЕвроДоллар - 99 волатильность. Тут же поменял туда/сюда таймфрейм - пересчитал на 106,6 ! Хотя и там и там выдавал День-19...
 
копай у себя, у меня он вроде как сразу показал 106,6 по евре, 117,8 по фунту, и не менял после смены т-ф на графике (оставался одним и тем же)
 
тут он и не мог по другому, ведь он у тебя ПЕРВЫЙ РАЗ вообще запустился! А вот попробуй оставить его до завтра висящим... В смысле, оставть прикрепленным, закрой и завтра запусти. Что покажет до смены тф.? посмотрим... :) (то есть в понедельник уже...
Причина обращения: