При записи сигнала индикатора в файл записывается несколько строк вместо одной

 

Ребята, подскажите пожалуйста! Целый день просидел вчера над траблой, не решил пока.

Взял стандартный индикатор дивергенции. Хочу чтобы при сработке сигнала он информацию о сигнале записывал в файл. Подправил. Вставил код открытия фала, позиционирования на последней строке и закрытия файла после сработки алерта для классической и скрытой дивергенции на покупку и продажу. Всего 4 вставки вышло.

Вот код вставки

//ОБЗЫВАЕМ ПЕРЕМЕННЫЕ В НАЧАЛЕ ФАЙЛА
//--- параметры для записи данных в файл 
extern string             InpFileName="LOG.csv";  // имя файла 
extern string             InpDirectoryName="Data"; // имя директории        
//===============================================================================


//ВСТАВКА
// ====================================================================================================
   //--- откроем файл для записи значений индикатора (если его нет, то создастся автоматически) 
   file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV|FILE_SHARE_READ|FILE_SHARE_WRITE);
   if(file_handle!=INVALID_HANDLE) 
     { 
      FileSeek(file_handle,0,SEEK_END); //спозиционируемься в конец файла   
      //--- запись сигнала в файл
      FileWrite(file_handle,Symbol() + " at " + TimeLocal() + " dtosc trend changed to up 2");
      //--- закрываем файл 
      FileClose(file_handle); 
      PrintFormat("Данные записаны, файл %s закрыт",InpFileName); 
     } 
   else 
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError()); 
// ====================================================================================================
// ==================================================================================================== 



В результате в файл запись делается, но записывается какое-то рендомное количество строк. От 1 до 5 примерно. Подскажите пожалуйста как сделать чтобы при сработке любого типа дивера записывалась только одна строка.

Файлы:
 

Храните время последнего записанного сигнала в гл. переменной или в том же файле.

OnCalculate может вызываться несколько раз.

 

Кроме того, что сказано выше необходимо учесть, что могут два и более аналогичных индикатора открыть один и тот же файл и начать туда что то записывать.

 
Eltar007:

Ребята, подскажите пожалуйста! Целый день просидел вчера над траблой, не решил пока.

Взял стандартный индикатор дивергенции. Хочу чтобы при сработке сигнала он информацию о сигнале записывал в файл. Подправил. Вставил код открытия фала, позиционирования на последней строке и закрытия файла после сработки алерта для классической и скрытой дивергенции на покупку и продажу. Всего 4 вставки вышло.

Вот код вставки



В результате в файл запись делается, но записывается какое-то рендомное количество строк. От 1 до 5 примерно. Подскажите пожалуйста как сделать чтобы при сработке любого типа дивера записывалась только одна строка.

пока бар не закрыт значение дивергенции не определено и будет скакать туда-сюда..каждое такое дёргание вы и записываете
Причина обращения: