Проблемы с облаком при генетике
Получается, что при определённых наборах параметров эксперт не осуществляет ни одной сделки. Вы пробовали запускать одиночное тестирование на этих же "безрезультатных" наборах параметров?
Ну так что, мне здесь кто-нибудь объяснит ситуацию? За что, спрашивается, тогда платить деньги, если половина результатов просто псу под хвост?
Ну так что, мне здесь кто-нибудь объяснит ситуацию? За что, спрашивается, тогда платить деньги, если половина результатов просто псу под хвост?
1) А Вы уверены, что логика программы не нарушается, например при совокупном использовании NNN мегабайт памяти? То есть, из-за нехватки памяти эксперт не торгует.
2) Сколько реально потребляет памяти эксперт, который выдает нули?
Мы неоднократно сталкивались с ситуациями, когда в клауд запускают очень затратных экспертов, которые оперируют большим количеством инструментов и используют гигабайты памяти. Соответственно, когда встречается агент, у которого недостаточно памяти, эксперт не может ее полностью получить, его логика нарушается и он перестает правильно торговать. В последних билдах мы ввели более жесткие ограничения, не допуская в сеть агентов, у кого меньше 768 Мб памяти. Это сняло ряд тяжелых проблем.
Для затратных экспертов, запускаемых в удаленные расчеты, надо в OnInit() добавлять проверку наличия доступной памяти, например:
int OnInit() { //--- мой эксперт реально потребляет 1 Gb в расчетах //--- принципиально не работать на компьютерах, у кого меньше 2 Gb физ. памяти if(TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL)<2048) return(INIT_AGENT_NOT_SUITABLE); //--- доступной памяти должно быть не меньше 1 Gb if(TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE)<1024) return(INIT_AGENT_NOT_SUITABLE); //--- все ок return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { //--- покажем объем использованной памяти (грубо, нельзя слепо верить) Print("Used ",TerminalInfoInteger(TERMINAL_MEMORY_USED)," Mb of memory"); //--- }
Вернув INIT_AGENT_NOT_SUITABLE в OnInit, эксперт имеет возможность штатно отказаться от запуска задачи на этом агенте. В результате задача будет направлена на других агентов.
Статистика распределения памяти у агентов доступна по ссылке: https://cloud.mql5.com/ru/stats

По ней видно, что 18% агентов имеют объем памяти меньше 2 Gb, обычно 1 Gb. Этого не всем экспертам хватает, особенно, если на компьютере с 1 Gb установлено 2-4 агента.
- cloud.mql5.com
1) А Вы уверены, что логика программы не нарушается, например при совокупном использовании NNN мегабайт памяти? То есть, из-за нехватки памяти эксперт не торгует.
2) Сколько реально потребляет памяти эксперт, который выдает нули?
с простыми полуторагиговыми Целеронами, ВинХР и 128Мб оперативки на каждом компе, и эта сетка прекрасно всё считает, без сбоев и нулевых резульатов.
Ренат, я очень просто скажу. Меня достало разбираться с обломами в облаке. Я снарядил два десятка компов с простыми полуторагиговыми Целеронами, ВинХР и 128Мб оперативки на каждом компе, и эта сетка прекрасно всё считает, без сбоев и нулевых резульатов. И памяти более чем хватает. Это видно на индикаторах загрузки оперативной памяти.
Не надо просто на уровне общечеловеческих сравнений.
Надо детально. Я специально задал вопрос "какое потребление памяти и какая реакция эксперта на ее нехватку?" и привел объяснения.
Да и нереал в виде "на 128 Mb с WinXP все считает" желательно подтвердить четкими логами и скринами. Тут технический ресурс.
Мне не жалко сотни баксов, выброшенных "на посмотреть" что такое облако у вас.
TERMINAL_MEMORY_AVAILABLE выдаёт какой-то бред (видимо доступную память от теоретически возможной) - у меня это 8387556 (+\-).
И в OnDeinit нужно TERMINAL_MEMORY_USED вместо TERMINAL_MEMORY_AVAILABLE
Господа, возможно это не баг, а фича. Тогда объясните мне, почему при генетической оптимизации в облаке у меня появляется море подобных "как бы результатов" в поколениях. Я хочу знать, что это такое, как это понимать, и главное - как это влияет на результаты оптимизации. Заранее уточняю - подобных результатов заведомо не может быть.