Как читать строчки из файла?

 
Помогите написать индюк:)
Есть файл:
27.03.2007;35262
20.03.2007;39649
13.03.2007;39354
06.03.2007;40957
27.02.2007;45832
20.02.2007;40402
13.02.2007;39189
06.02.2007;38492
30.01.2007;36750
23.01.2007;43817
16.01.2007;38599
09.01.2007;37605
03.01.2007;44571
я хочу построить по нему график в отдельном окошке индикатора, поможите кто чем может...
из разных кусочков собрал вот это:

#property indicator_separate_window
#property indicator_minimum -10000
#property indicator_maximum 60000
extern bool DisplayText = true;
extern string FileName = "cot.csv";
 
int start()
  {
 
 ObjectsDeleteAll();
   int win_idx=WindowFind("333");
   int handle;
   handle=FileOpen(FileName,FILE_CSV|FILE_READ,';');
   if(handle<1)
    {
     Print("File not found, the last error is ", GetLastError());
     return(false);
    }
   
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
    int I= 0;
   while(!FileIsEnding(handle))
   {
    string sDate1=FileReadString(handle);
    string sOPEN1=FileReadString(handle);
   
    string sDate2=FileReadString(handle);
    string sOPEN2=FileReadString(handle);
  
   
    I++;
 
   
    string sTime1="00:00";
   
    datetime dt1 = StrToTime(sDate1+" "+sTime1);
    datetime dt2 = StrToTime(sDate2+" "+sTime1);
  
     double OI1=StrToDouble(sOPEN1);
     double OI2=StrToDouble(sOPEN2);
            
           if (DisplayText)
        
         
           ObjectCreate("oi"+I, OBJ_TREND, win_idx, dt1,OI1,dt2,OI2 );
           ObjectSet("oi"+I,OBJPROP_RAY,0);
           ObjectSet("oi"+I,OBJPROP_WIDTH , 1);         
           ObjectSet("oi"+I, OBJPROP_COLOR, Red);            
           ObjectSet("oi"+I, OBJPROP_BACK, true);         
        
   }   
 
   return(0);
  }

вот что он рисует:
 
string sDate1=FileReadString(a); Где handle?
string sOPEN1=FileReadString(a); Где handle?

string sDate2=FileReadString(a); Где handle?
string sOPEN2=FileReadString(a); Где handle?


FileReadString(handle); Зачем?

Есть гарантия, что количество строк в файле делится на 4?
 
Integer:
string sDate1=FileReadString(a); Где handle?
string sOPEN1=FileReadString(a); Где handle?

string sDate2=FileReadString(a); Где handle?
string sOPEN2=FileReadString(a); Где handle?


FileReadString(handle); Зачем?

Есть гарантия, что количество строк в файле делится на 4?
за handle извеняюсь уже исправил,гарантии что количество строк делится на 4 нет.
Вобще не пинайте меня сильно,я не програмист,просто хочу в МТ вводить дополнительную инфу для анализа:)
 
ITOGO:

за handle извеняюсь уже исправил,гарантии что количество строк делится на 4 нет.
Вобще не пинайте меня сильно,я не програмист,просто хочу в МТ вводить дополнительную инфу для анализа:)
Никто не пинает, или красный цвет навеивает вомпоминания о школьных колах и двойках))

Если гарнтии нету в количестве строк, надо на каждом шаге цикла считывать по одному значению, предыдущие сохранять в переменных, сдвигать.
 
Integer:
ITOGO:

за handle извеняюсь уже исправил,гарантии что количество строк делится на 4 нет.
Вобще не пинайте меня сильно,я не програмист,просто хочу в МТ вводить дополнительную инфу для анализа:)
Никто не пинает, или красный цвет навеивает вомпоминания о школьных колах и двойках))

Если гарнтии нету в количестве строк, надо на каждом шаге цикла считывать по одному значению, предыдущие сохранять в переменных, сдвигать.
а можно пример кода, как предыдущие сохранять и сдвигать:)
 
ITOGO:
Integer:
ITOGO:

за handle извеняюсь уже исправил,гарантии что количество строк делится на 4 нет.
Вобще не пинайте меня сильно,я не програмист,просто хочу в МТ вводить дополнительную инфу для анализа:)
Никто не пинает, или красный цвет навеивает вомпоминания о школьных колах и двойках))

Если гарнтии нету в количестве строк, надо на каждом шаге цикла считывать по одному значению, предыдущие сохранять в переменных, сдвигать.
а можно пример кода, как предыдущие сохранять и сдвигать:)

Создать массив и потихоньку заполнять в цикле.
С праздником!!!
Это уже относится к всем.
 
while(...){
   x4=x3;
   x3=x2;
   x2=x1;
   x1=FileReadString(...
    if(x4!=""){//значит считали 4 строки
      // делаем что надо
    }
}
 
Спасибо всем за помощь!:)получилось то,что я и хотел,индикатор берёт данные из внешнего файла и строит по ним график

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#property indicator_separate_window
 
string sTime1="00:00";
extern string FileName = "cot.csv";
#property indicator_minimum 20000
#property indicator_maximum 60000
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
bool ReadFileToArray(string &array[],string FileName)
  {
   bool res=false;
   int FileHandle;
   string tempArray[64000],currString;
   int stringCounter;
 
//-------------------------------------------------------------------
   FileHandle=FileOpen(FileName,FILE_CSV|FILE_READ,';');
   if (FileHandle!=-1)
      {
      while(!FileIsEnding(FileHandle))
         {
         currString=FileReadString(FileHandle);
         tempArray[stringCounter]=currString;
         stringCounter++;
         }
      if (stringCounter>0)
         {
         ArrayResize(array,stringCounter);
         for (int i=0;i<stringCounter;i++) array[i]=tempArray[i];
         res=true;
         }
      }
   return(res);
  }
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int start()
  {
  string InitialStringArray[];   // сюда считаем файл
//--------------------------------------------------------------------------
  if (!ReadFileToArray(InitialStringArray,FileName))
      {
      Alert("Данных для обработки  нет");
      return;
      }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ObjectsDeleteAll();
    int win_idx=WindowFind("999"); 
    int k=0;
    while(k<ArraySize(InitialStringArray)-5)
    {  
   
    datetime dt1 =StrToTime(InitialStringArray[k]+" "+sTime1);
    datetime dt2 =StrToTime(InitialStringArray[k+2]+" "+sTime1);  
    double OI1=StrToDouble(InitialStringArray[k+1]);
    double OI2=StrToDouble(InitialStringArray[k+3]);                
         
          
         
          ObjectCreate("oi"+k, OBJ_TREND, win_idx, dt1,OI1,dt2,OI2 );
          ObjectSet("oi"+k,OBJPROP_RAY,0);
          ObjectSet("oi"+k,OBJPROP_WIDTH , 1);         
          ObjectSet("oi"+k, OBJPROP_COLOR, Red);            
          ObjectSet("oi"+k, OBJPROP_BACK, true);
        k=k+2;
        }
   
 
   return(0);
  }
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
Причина обращения: