Советник закрывает сделки, когда он увеличит Эквити на n долларов. Как реализовать, если в соседнем окне работает другой советник. Советник должен учитывать только свое увеличение эквити. - страница 2

 
Vitaly Muzichenko:

Перегрузите терминал, и значения по нулям

Файловые операции и проблема отпадает сама по себе.

 
STARIJ:

В функции OnDeinit() анализируйте причину выхода.

какой функцией?
 
igrok333:
какой функцией?

UninitializeReason. Хотя в самой OnDeinit есть параметр reason.

 
Ihor Herasko:

UninitializeReason. Хотя в самой OnDeinit есть параметр reason.

ясно
 
STARIJ:

В функции OnDeinit() анализируйте причину выхода. Если это переключение ТаймФрейма - записывайте (в файл или глобалы) нужные значения. В OnInit() анализируйте прошлую причину выхода и нужное восстанавливайте. А то так Вы и к движению планет начнете претензии предъявлять.

предлагаю разработчикам сделать так

#property not_pereinitialization_change_timefrime

красиво вышло)))

эта штука очень часто нужна.
 
igrok333:
предлагаю разработчикам сделать так

#property not_pereinitialization_change_timefrime

красиво вышло)))

эта штука очень часто нужна.

Это можно сделать самому:

int OnInit()
{
   if (UninitializeReason() == REASON_CHARTCHANGE)
      return INIT_SUCCEDED;

   ...
   код функции
   ...
   return INIT_SUCCEEDED;
}

void OnDeinit(const int reason)
{
   if (reason == REASON_CHARTCHANGE)
      return;

   ...
   код функции
   ...
}

В советнике больше ничего и не нужно. А вот в индикаторе потребуется еще сохранение значений всех глобальных переменных индикатора, включая prev_calculated и rates_total, используемых в OnCalculate().

 
Ihor Herasko:

Это можно сделать самому:

В советнике больше ничего и не нужно. А вот в индикаторе потребуется еще сохранение значений всех глобальных переменных индикатора, включая prev_calculated и rates_total, используемых в OnCalculate().

Это надо проверить. При смене шаблона точно, UninitializeReason() возвращает удаление с графика. Или это проблема была в индикаторе, точно уже не помню. Но проверить не мешает никогда.

 
Alexey Viktorov:

Это надо проверить. При смене шаблона точно, UninitializeReason() возвращает удаление с графика. Или это проблема была в индикаторе, точно уже не помню. Но проверить не мешает никогда.


Речь ведь шла только о смене таймфрейма.

 
igrok333:
предлагаю разработчикам сделать так
#property not_pereinitialization_change_timefrime
красиво вышло)))
эта штука очень часто нужна.

Внесение новых функций в МТ4 прекращено. Исправляются лишь ошибки, мешающие торговле

 
Ihor Herasko:

Это можно сделать самому:

В советнике больше ничего и не нужно. А вот в индикаторе потребуется еще сохранение значений всех глобальных переменных индикатора, включая prev_calculated и rates_total, используемых в OnCalculate().

то есть, такое событие как "деинициализация" в этом случае не произойдет?

или я неправильно понимаю процесс, и никого события "деинициализация" не существует. Просто терминал при смене таймфрейма принудительно выполняет функции OnDeinit и OnInit (тот код, который внутри них прописан) ?

я думал что во время деинициализации какие-то процессы в терминале происходят,там сброс параметров... а это просто функция. и при деинициализации просто выполняется всё, что прописано внутри OnDeinit(){   }

Причина обращения: