Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Konstantin Nikitin
1176
Konstantin Nikitin  
Vitaly Muzichenko:

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

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

igrok333
1009
igrok333  
STARIJ:

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

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

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

igrok333
1009
igrok333  
Ihor Herasko:

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

ясно
igrok333
1009
igrok333  
STARIJ:

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

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

#property not_pereinitialization_change_timefrime

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

эта штука очень часто нужна.
Ihor Herasko
16502
Ihor Herasko  
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().

Alexey Viktorov
20794
Alexey Viktorov  
Ihor Herasko:

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

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

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

Ihor Herasko
16502
Ihor Herasko  
Alexey Viktorov:

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


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

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

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

igrok333
1009
igrok333  
Ihor Herasko:

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

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

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

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

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

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