Скачать MetaTrader 5

Тормоза при запуске терминала

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

Для того чтобы ресурсоемкий индикатор,  не тормозил первый запуск терминала, я делаю примерно так

int start()
   { 
     if (Perv_zapusk==false){Perv_zapusk=true;return(0);}

К сожалению, такой способ не видит различий между запуском "вместе с терминалом" и запуском "в запущенном терминале",  индикатор рассчитается в любом случае со второго тика

ПоделИтесь, товарищи, более элегантным решением проблемы?

o_o
Модератор
23859
o_o  
может возвращаемое от RefreshRates поможет.
Maxim Obritetskiy
177
Maxim Obritetskiy  
sergeev:
может возвращаемое от RefreshRates поможет.



Можно попробовать, но вряд ли у меня что-то получиться, RefreshRates при подкачке данных выдаст TRUE, и когда он явно произойдет, и пр. непонятности

Вот, каким макаром из индикатора узнать, что терминал весь нарисовался... 

Dmitry Fedoseev
43505
Dmitry Fedoseev  
Можно через isConnected() попробовать.
Maxim Obritetskiy
177
Maxim Obritetskiy  
Integer:
Можно через isConnected() попробовать.

Почти идеально- индикатор курит бамбук до isConnected()==TRUE

Фишка в том, что защита от тормозов запуска терминала мне более надобна оффлайн (имеется ввиду исследовательская работа)-  нагромождение тяжелых индюков, хорошо бы без зацикливаний и делений на ноль, и переодических ибийств terminal.exe

Онлайн, обычно, код уже в достаточной мере  оптимизирован, либо можно забить на тормоза (имеется ввиду уже торговля)

Maxim Obritetskiy
177
Maxim Obritetskiy  
Признаться, я думал есть какой-н. распространенный способ облегчить запуск терминала((
Андрей
1890
Андрей  

Хм. Запоминаем текущее время. Пока не пройдет N секунд- выходить. 

Наверно можно еще как-то доставать загрузку процессора. 

Sergey Kravchuk
3330
Sergey Kravchuk  

заводим глобальную переменную, например calculate. если она есть и = 1 - индикатор работает, если нет или != 1 - return сразу после старта. пишем два скрипта ON и OFF: первый создает calculate = 1, второй - удаляет или делает = 0.

при старте терминала calculate нет и индикатор не считается. когда есть охота увидеть результаты расчета - сбрасываем ON, появляется calculate = 1 и на следующем тике индикатор начинает свою работу и работает до тех пор пока не сбросите OFF.

Еще проще (если не надо видеть график когда индикатор не считается): разрешить ему расчеты на всех таймах кроме одного, например МN.

перед выходом из терминала сбросили calculate или перешли на MN и при следующем старте индикатор не считается.

Это конечно ручник а не автомат, но есть фишка которая может оказаться полезной: расчет можно остановить в любой момент без отсоединения индикатора для освобождения процессора для других задач.

Sergey Kravchuk
3330
Sergey Kravchuk  
makskeep:

Почти идеально- индикатор курит бамбук до isConnected()==TRUE

до IsConected он и так курит бамбук - тиков то нет и его расчетов тоже ;)

Debugger
2501
Debugger  
используй систему маркеров
Андрей
1890
Андрей  
ForexTools:

до IsConected он и так курит бамбук - тиков то нет и его расчетов тоже ;)

Что-то неверно в этом утверждении.

Звучит так, что если на оффлайновый график накинуть индикатор- то индикатор не будет рассчитываться. 

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