Подскажите пожалуйста, если изменить размер динамического массива в меньшую сторону с помощью функции ArrayResize разве не должно сократиться количество памяти используемой советником ? ( смотрю с помощью функции MQLInfoInteger(MQL_MEMORY_USED)
Вот код:
Print("Первый ArrayResize вернул ",ArrayResize( TickTemp, 1000000, 0 ));
Print("Размер массива после ПЕРВОГО ArrayResize ",ArraySize( TickTemp )," Используем памяти. ",MQLInfoInteger(MQL_MEMORY_USED));
Print("Второй ArrayResize вернул ",ArrayResize( TickTemp, 500000, 0 ));
Print("Размер массива после ВТОРОГО ArrayResize ",ArraySize( TickTemp )," Используем памяти. ",MQLInfoInteger(MQL_MEMORY_USED));
Вот результат:
Первый ArrayResize вернул 1000000
Размер массива после ПЕРВОГО ArrayResize1000000 Используем памяти. 58
Второй ArrayResize вернул 500000
Размер массива после ВТОРОГО ArrayResize500000Используем памяти. 58
Честно говоря немного не неожиданный для меня результат. Ожидал что программа будет использовать памяти во втором случае в два раза меньше.
Запросить общее количество индикаторов на графике и в цикле поискать по короткому имени индикатора.
Уточнение. Не на графике, а вообще. Узнать есть ли индикатор в "наборе". В папке индикаторов.
Вот, к примеру, у меня есть мой индикатор А, который использует другой пользовательский индикатор Б. Если при запуске А не будет получен хендл Б, то А не запустится.
А вот если запустить сову, использующую А, то А не запускается, а сова не закрывается, несмотря на:
handle_A = iCustom(Symbol(),0,"my_used\\my_A7C");
if(handle_A == INVALID_HANDLE) // проверяем наличие хендла индикатора
{
Print("Не удалось получить хендл индикатора handle_A"); // если хендл не получен, то выводим сообщение в лог об ошибкеreturn(INIT_FAILED); // завершаем работу с ошибкой
}
else
{
Print("Получен хендл индикатора handle_A");
ChartIndicatorAdd(ChartID(),0,handle_A); // подключаем индикатор к графику
}
В журнале, конечно можно найти чего не хватает, но было бы лучше сразу определиться и вывести MessageBox где взять недостающее.
MessageBox("Для работы индикатора небходимо наличие индикатора Б в папке Indicators/Market\n\n"+
"Скачать его можно по ссылке\n https://www.mql5.com/ru/market/product/ббббб","Ошибка Б",MB_OK);
Уточнение. Не на графике, а вообще. Узнать есть ли индикатор в "наборе". В папке индикаторов.
Вот, к примеру, у меня есть мой индикатор А, который использует другой пользовательский индикатор Б. Если при запуске А не будет получен хендл Б, то А не запустится.
А вот если запустить сову, использующую А, то А не запускается, а сова не закрывается, несмотря на:
А что мешает в индикатор А вставить индикатор Б в виде ресурса? И никакой головной боли. Индикатор Б нужен только во время компиляции индикатора А и всё, никаких проверок не надо.
Да и индикатор А можно вставить в советник в виде ресурса...
Подскажите пожалуйста, если изменить размер динамического массива в меньшую сторону с помощью функции ArrayResize разве не должно сократиться количество памяти используемой советником ? ( смотрю с помощью функции MQLInfoInteger(MQL_MEMORY_USED)
Вот код:
Вот результат:
Честно говоря немного не неожиданный для меня результат. Ожидал что программа будет использовать памяти во втором случае в два раза меньше.
Есть ли возможность применить свой шаблон для визуализации в тестере? Не шаблон с именем эксперта, а по умолчанию.
ОТкрыть новый график. Набросать туда чего-нибудь. Правый клик на полученном графике - Сохранить шаблон ... -> tester.tpl
Теперь визуальное тестирование будет запускаться с шаблоном который Вы создали.
ОТкрыть новый график. Набросать туда чего-нибудь. Правый клик на полученном графике - Сохранить шаблон ... -> tester.tpl
Теперь визуальное тестирование будет запускаться с шаблоном который Вы создали.
Огромное спасибо.
Ещё вопрос. Как программно проверить наличие пользовательского индикатора без использования iCustom ? Типа FileIsExist.
Запросить общее количество индикаторов на графике и в цикле поискать по короткому имени индикатора.
Запросить общее количество индикаторов на графике и в цикле поискать по короткому имени индикатора.
Уточнение. Не на графике, а вообще. Узнать есть ли индикатор в "наборе". В папке индикаторов.
Вот, к примеру, у меня есть мой индикатор А, который использует другой пользовательский индикатор Б. Если при запуске А не будет получен хендл Б, то А не запустится.
А вот если запустить сову, использующую А, то А не запускается, а сова не закрывается, несмотря на:
Уточнение. Не на графике, а вообще. Узнать есть ли индикатор в "наборе". В папке индикаторов.
А можно ещё уточнить для чего это надо?
А можно ещё уточнить для чего это надо?
Добавил в предыдущий пост.
В журнале, конечно можно найти чего не хватает, но было бы лучше сразу определиться и вывести MessageBox где взять недостающее.
Уточнение. Не на графике, а вообще. Узнать есть ли индикатор в "наборе". В папке индикаторов.
Вот, к примеру, у меня есть мой индикатор А, который использует другой пользовательский индикатор Б. Если при запуске А не будет получен хендл Б, то А не запустится.
А вот если запустить сову, использующую А, то А не запускается, а сова не закрывается, несмотря на:
А что мешает в индикатор А вставить индикатор Б в виде ресурса? И никакой головной боли. Индикатор Б нужен только во время компиляции индикатора А и всё, никаких проверок не надо.
Да и индикатор А можно вставить в советник в виде ресурса...