Как определить приближение окончания теста - страница 2

 
Это тоже можно отжельной функцией сделать, чтобы юзер не думал ;)
void NoDoubt()
{
if (prevTimeBar!=Time[0]) WriteAccountInfo();                   |
 prevTimeBar=Time[0];                           
}


Точно :-D Нет предела совершенству ;-)
 
Точно ступил немного, забыл сделать привязку к бару. Попробуй так:
if(LocalTime()-zaderjka-iTime(NULL,60,0)<0) Print(TimeToStr(Time[0]));
 
Всем большое спасибо за участие. Сделал, как посоветовал komposter. Отдельный респект! Модуль внедряется в любой советник добавлением всего двух строк. На выходе получается файл с информацией о прибыли за выбранный период (месяц, квартал, год) и балансе по торговому счёту.

//+------------------------------------------------------------------+
//|                                                    b-Account.mqh |
//|                                           Ким Игорь В. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|   19.12.2005  Библиотека функций сбора информации о счёте.       |
//|                                                                  |
//|  Для использования добавить строки:                              |
//|  - в функции start() : WriteAccountInfo();                       |
//|  - в функции deinit(): WriteLastAccountInfo();                   |
//+------------------------------------------------------------------+

//------- Внешние параметры модуля -----------------------------------
extern string _Parameters_b_Account = "----- Параметры модуля";
extern string acOutFileName = "Account.csv";
extern int    acOutGroup    = 1;    // 1-мес, 2-кв, 3-год

//------- Глобальные переменные модуля -------------------------------
bool   acFirstRun=True;
double acPrevBalance;
int    acPrevMonth, acPrevQuarter, acPrevYear;
int    acPrevTimeBar;


//+------------------------------------------------------------------+
//| Сбор и запись в файл информации о торговом счёте.                |
//+------------------------------------------------------------------+
void WriteAccountInfo() {
  string text="";

  if (acPrevTimeBar!=Time[0]) {
    if (acFirstRun) {
      text=";Прибыль;Баланс";
      WritingLineInFile(acOutFileName, text);
      acPrevBalance=AccountBalance();
      acPrevMonth=Month();
      acPrevQuarter=Quarter();
      acPrevYear=Year();
      acFirstRun=False;
    }
    if (acOutGroup==1) {
      if (acPrevMonth!=Month()) {
        text=acPrevYear+"."+acPrevMonth;
        WriteInFile(text);
        acPrevBalance=AccountBalance();
      }
    }
    if (acOutGroup==2) {
      if (acPrevQuarter!=Quarter()) {
        text=acPrevYear+" кв."+acPrevQuarter;
        WriteInFile(text);
        acPrevBalance=AccountBalance();
      }
    }
    if (acOutGroup==3) {
      if (acPrevYear!=Year()) {
        text=acPrevYear;
        WriteInFile(text);
        acPrevBalance=AccountBalance();
      }
    }
    acPrevMonth=Month();
    acPrevQuarter=Quarter();
    acPrevYear=Year();
  }
  acPrevTimeBar=Time[0];
}

//+------------------------------------------------------------------+
//| Запись в файл информации о торговом счёте за последний период.   |
//+------------------------------------------------------------------+
void WriteLastAccountInfo() {
  string text="";

  if (acOutGroup==1) {
    text=Year()+"."+Month();
    WriteInFile(text);
  }
  if (acOutGroup==2) {
    text=acPrevYear+" кв."+acPrevQuarter;
    WriteInFile(text);
  }
  if (acOutGroup==3) {
    text=acPrevYear;
    WriteInFile(text);
  }
}

//+------------------------------------------------------------------+
void WriteInFile(string text) {
  text=text+";"+(AccountBalance()-acPrevBalance)+";"+AccountBalance();
  WritingLineInFile(acOutFileName, text);
}

//+------------------------------------------------------------------+
//| Возвращает номер квартала                                        |
//+------------------------------------------------------------------+
int Quarter() {
  if (Month()>0 && Month()<4)  return(1);
  if (Month()>3 && Month()<7)  return(2);
  if (Month()>6 && Month()<10) return(3);
  if (Month()>9 && Month()<13) return(4);
}

//+------------------------------------------------------------------+
//| Запись строки в файл                                             |
//+------------------------------------------------------------------+
void WritingLineInFile(string FileName, string text) {
  int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " ");

	if (file_handle>0) {
		FileSeek(file_handle, 0, SEEK_END);
		FileWrite(file_handle, text);
		FileClose(file_handle);
	}
}
//+------------------------------------------------------------------+
 
странно.. а почему это всё не вставить в deinit? я, помнится, делал запись лога в деините и даже расстановку линий на графике, с разной раскраской в зависимости от результата профит/лось, чтоб можно было всё посмотреть визуально. :)
Причина обращения: