Скачать MetaTrader 5

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

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

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

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

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

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

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

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

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

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

Dmitry Fedoseev
45892
Dmitry Fedoseev  

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

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

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

Evgeny Potapov
1661
Evgeny Potapov  


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

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

Как это?

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

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

Dmitry Fedoseev
45892
Dmitry Fedoseev  
Eugene1:

Как это?

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

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


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

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

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

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

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

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

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

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

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

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

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

Как?

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

 

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

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

 

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

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

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

 

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

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

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

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

расчётов) 

Рустам
3597
Рустам  
Обновить график - индикатор пересчитается.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий