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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Eltar007
41
Eltar007  

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

Взял стандартный индикатор дивергенции. Хочу чтобы при сработке сигнала он информацию о сигнале записывал в файл. Подправил. Вставил код открытия фала, позиционирования на последней строке и закрытия файла после сработки алерта для классической и скрытой дивергенции на покупку и продажу. Всего 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 примерно. Подскажите пожалуйста как сделать чтобы при сработке любого типа дивера записывалась только одна строка.

Файлы:
Andrey Khatimlianskii
57755
Andrey Khatimlianskii  

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

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

Vitalii Ananev
11057
Vitalii Ananev  

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

Maxim Kuznetsov
13805
Maxim Kuznetsov  
Eltar007:

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

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

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



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

пока бар не закрыт значение дивергенции не определено и будет скакать туда-сюда..каждое такое дёргание вы и записываете
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий