Избавиться от лишних индикаторов

 

Я пишу скрипт, который собирает значения ряда индикаторов

(нескольких тысяч)

Хорошо было бы, если бы ненужные индикаторы он закрывал,

а не переполнял память компьютера?

Подскажите как это сделать (удалять ненужные индикаторы)

(или, может быть, перезапускать скрипт из самого себя, чтобы при

этом запущеные в его потоке индикаторы отваливались)

Ну, или ещё как-то... 

 

Вариант 1. Делать это в МТ5.

Вариант 2. Передавать параметры индикаторам через глобальные переменные (разумеется индикаторы потребутся дорабатывать). Через iCustom() индикатор всегда вызывается с одинаковыми параметрами, а работает с параметрами переданными через глобальные переменные.

Если же 1000 разных индикаторов, то по одному запускать. Индикатор обрабатывается в скрипте, скрипту горячие клавиши, а скрипт запускается из эксперта или индикатора, каждый раз с разными параметрами. Здесь как жать клавиши

 


404
Запрашиваемая Вами страница не найдена
 
Исправил ссылку, попробуйте еще раз.
 
Integer:

Вариант 2. Передавать параметры индикаторам через глобальные переменные (разумеется индикаторы потребутся дорабатывать). Через iCustom() индикатор всегда вызывается с одинаковыми параметрами, а работает с параметрами переданными через глобальные переменные.

Как это?

Индикатор, конечно, может взять параметры из глобальных переменных,

но если обращение к нему с теми же параметрами, то он ведь не будет пересчитан?

 
Eugene1:

Как это?

Индикатор, конечно, может взять параметры из глобальных переменных,

но если обращение к нему с теми же параметрами, то он ведь не будет пересчитан?


Это в ваших руках. Например, еще одну глобалную переменую сделать, что мол надо пересчитаться полностью.
 

Это в ваших руках. Например, еще одну глобалную переменую сделать, что мол надо пересчитаться полностью.

Где эту переменную проверять?

init() не будет вызван, так как индикатор уже есть.

start() не будет вызван так как новый тик не приходил... 

 
Integer:
Исправил ссылку, попробуйте еще раз.

Идея интересная, только непонятно как это работает.

Возможно, так можно одну из функций индикатора вызвать - тогда

реально удастся его пересчитать...

Но как из скрипта направить сигнал в индикатор я пока не понял... 

 
Ага, точно, никак его не заставить пересчитываться. Тогда только вызывать горячими клавишами.
 
Integer:
 только вызывать горячими клавишами.

Как?

Напишите, пожалуйста, строку кода скрипта, которая бы вызвала функцию индикатора.

 

В том примере при вызове init функции индикатора посылается нажатие горячей клавиши в окно - если на эту

клавишу прикреплён запуск скрипта, то он запускается.

 

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

так как 2 скрипта одновременно не могут работать в одном окне, а закрепить за горячей клавишей что-то иное кроме скрипта

(если я конечно не ошибаюсь)  невозможно.

 

Можно, конечно, посылать нажатие из советника или индикатора,

но в этом случае непонятно как узнать, что скрипт завершил работу.

Можно, конечно в цикле проверять значение некой глобальной переменной (хоть какое-то но уже решение - спасибо)

, но это подразумевает значительный процент пустых потерь времени (а мне как раз хотелось повысить скорость некоторых

расчётов) 

 
Обновить график - индикатор пересчитается.
Причина обращения: