Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Проблемы с кодом? Загляни в документацию!
Evgeny Potapov
1632
Evgeny Potapov 2012.11.03 12:58 

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

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

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

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

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

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

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

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

Dmitry Fedoseev
42887
Dmitry Fedoseev 2012.11.03 13:15  

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

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

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

Evgeny Potapov
1632
Evgeny Potapov 2012.11.03 13:26  


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

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

Как это?

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

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

Dmitry Fedoseev
42887
Dmitry Fedoseev 2012.11.03 14:00  
Eugene1:

Как это?

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

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


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

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

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

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

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

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

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

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

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

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

Dmitry Fedoseev
42887
Dmitry Fedoseev 2012.11.03 14:31  
Ага, точно, никак его не заставить пересчитываться. Тогда только вызывать горячими клавишами.
Evgeny Potapov
1632
Evgeny Potapov 2012.11.03 15:20  
Integer:
 только вызывать горячими клавишами.

Как?

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

 

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

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

 

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

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

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

 

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

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

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

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

расчётов) 

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