Теория ускорения работы советника при использовании пользовательского индикатора (функция - iCustom) - страница 6
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Alexander Laur, т.е. пока работает скрипт/советник память зарезервирована и очистки не подлежит - печальный вывод.
А есть ли возможность скриптом запускать другой скрипт, тогда закрытие запущенного скриптом скрипта должно же приводить к отчистки памяти, или это будет расценено, как комплексная среда обработки данных?
Alexander Laur, т.е. пока работает скрипт/советник память зарезервирована и очистки не подлежит - печальный вывод.
А есть ли возможность скриптом запускать другой скрипт, тогда закрытие запущенного скриптом скрипта должно же приводить к отчистки памяти, или это будет расценено, как комплексная среда обработки данных?
Я сразу предложил "открывать график с запущенным экспертом", это можно сделать - ChartOpen + ChartApplyTemplate
Вопрос лишь в том, освободится ли память при его закрытии (удалении эксперта).
Проверяйте.
Я сразу предложил "открывать график с запущенным экспертом", это можно сделать - ChartOpen + ChartApplyTemplate
Вопрос лишь в том, освободится ли память при его закрытии (удалении эксперта).
Проверяйте.
Дополнительный вопрос, влияет ли на размер графического буфера выбор вещественного типа буфера для расчет внутри индикатора?
Тип
Размер в байтах
Минимальное положительное значение
Максимальное значение
Точность представления
Аналог в С++
float
4
1.175494351e-38
3.402823466e+38
7 значащих цифр
float
double
8
2.2250738585072014e-308
1.7976931348623158e+308
15 значащих цифр
double
И безумная идея, а что если вместо графического буфера использовать TextOut - вот только не знаю, как считывать от туда данные...
Дополнительный вопрос, влияет ли на размер графического буфера выбор вещественного типа буфера для расчет внутри индикатора?
Под термином "графический буфер" имеется в виду графическое отображение обычного индикатора?
Вопрос в том, можно ли повлиять на размер выделяемой памяти на графический буфер на один бар, если использовать в коде индикатора для вычислений не double, а float.
//---- buffers
double Vy[];
double bufDirSoft[];
extern int n=3;
extern int BarsN=100;
//----
int ExtCountedBars=0;
Вопрос в том, можно ли повлиять на размер выделяемой памяти на графический буфер на один бар, если использовать в коде индикатора для вычислений не double, а float...
Нет. Есть такая волшебная функция, которая перемелет все потуги:
Этот механизм вшит в сам язык\терминал. Хотя мысль интересная...
И ещё, как определить, что память кончилась, есть ли функции какие?
Что значит кончилась? :-)
Что-то есть тут:
https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer
Имхо, самый эффективный способ управлением памятью для ресурсов индикатора, это минимизация параметра "Макс. баров в истории" (Настройки --> Графики). Насколько помню, минимум для параметра - это 5 тыс.
И ещё, как определить, что память кончилась, есть ли функции какие?
Можно получать информацию о терминале
TERMINAL_MEMORY_TOTAL
Размер памяти, доступной процессу терминала (агента), в MB
int
TERMINAL_MEMORY_AVAILABLE
Размер свободной памяти процесса терминала (агента)в MB
int
TERMINAL_MEMORY_USED
Размер памяти, использованной терминалом (агентом), в MB
int