Генетика по 8 параметрам, 2019-2024, реальные тики, 16 локальных агентов. Через 3-4 часа агенты по одному начинают отваливаться с нехваткой памяти, к утру работают два. Одиночный прогон проходит нормально, агент в диспетчере задач ест около 900 МБ. Тиков по символу за этот период около 6 ГБ. Это нормально для такого объёма или в советнике что-то течёт?
Сначала проверь, не создаются ли хендлы индикаторов в OnTick. Если iATR или iMA вызывается на каждом баре, а параметр, например период, берётся из входного и пересчитывается, то терминал может каждый раз заводить новый экземпляр, и старые никто не освобождает. В одиночном прогоне это незаметно, а агент на генетике гонит десятки проходов подряд, и всё копится. Хендлы только в OnInit, в OnDeinit IndicatorRelease.
Потом массивы: ArrayResize в цикле по одному элементу без резерва тоже даёт рост памяти. И уже не про код: 16 агентов на реальных тиках это много для обычной машины, каждый держит свою копию тиков. Сколько у тебя оперативки? Попробуй 8 агентов на ту же ночь и посмотри, падают ли.
Хендлы были в OnInit, но в OnTick нашёлся ещё один iATR для фильтра, с периодом из параметра. Перенёс в OnInit, освобождаю в OnDeinit. Стало лучше: падения начались не через 3 часа, а через 7. Оперативки 32 ГБ. С 8 агентами ночь прошла без падений, но вдвое медленнее. Так и не понял, течёт ещё где-то или 16 агентов просто много. Если кто мерил, сколько агент реально ест на реальных тиках, напишите.