Проблемы с облаком при генетике

 

Господа, возможно это не баг, а фича. Тогда объясните мне, почему при генетической оптимизации в облаке у меня появляется море подобных "как бы результатов" в поколениях. Я хочу знать, что это такое, как это понимать, и главное - как это влияет на результаты оптимизации. Заранее уточняю - подобных результатов заведомо не может быть.

Unknown Cloud Report

 
wtvirtual: Господа, возможно это не баг, а фича. Тогда объясните мне, почему при генетической оптимизации в облаке у меня появляется море подобных "как бы результатов" в поколениях. Я хочу знать, что это такое, как это понимать, и главное - как это влияет на результаты оптимизации.
 Получается, что при определённых наборах параметров эксперт не осуществляет ни одной сделки. Вы пробовали запускать одиночное тестирование на этих же "безрезультатных" наборах параметров?
 
Я тоже с подобным сталкивался, но при полном переборе. И результат одиночного тестирования отличен от нуля, т.е. при одиночном тестировании сделки есть
 
Yedelkin:
 Получается, что при определённых наборах параметров эксперт не осуществляет ни одной сделки. Вы пробовали запускать одиночное тестирование на этих же "безрезультатных" наборах параметров?
Да, конечно. Дело в том, что не может быть никаких сочетаний параметров, при которых эксперт не совершил бы ни одной сделки. Интервал истории - с 85 года по сей день. И там минимальное количество трейдов никак не может быть менее ~500 при сотне ордеров на трейд. Разумеется я прогонял эти нулевые результаты вручную, и разумеется трейды были. Вот и что это?
 

Ну так что, мне здесь кто-нибудь объяснит ситуацию? За что, спрашивается, тогда платить деньги, если половина результатов просто псу под хвост?
 
wtvirtual:

Ну так что, мне здесь кто-нибудь объяснит ситуацию? За что, спрашивается, тогда платить деньги, если половина результатов просто псу под хвост?

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 агента.

Статистика - MQL5 Cloud Network
Статистика - MQL5 Cloud Network
  • cloud.mql5.com
Произведенный объем работы, распределение агентов по странам, RAM, CPU и битности OS
 
Renat:

1) А Вы уверены, что логика программы не нарушается, например при совокупном использовании NNN мегабайт памяти? То есть, из-за нехватки памяти эксперт не торгует.

2) Сколько реально потребляет памяти эксперт, который выдает нули?

Ренат, я очень просто скажу. Меня достало разбираться с обломами в облаке. Я снарядил два десятка компов с простыми полуторагиговыми Целеронами, ВинХР и 128Мб оперативки на каждом компе, и эта сетка прекрасно всё считает, без сбоев и нулевых резульатов. И памяти более чем хватает. Это видно на индикаторах загрузки оперативной памяти.
 
wtvirtual:

с простыми полуторагиговыми Целеронами, ВинХР и 128Мб оперативки на каждом компе, и эта сетка прекрасно всё считает, без сбоев и нулевых резульатов.

И я ничуть этому не удивлён, поскольку так и должно быть. Эксперт без наворотов, я бы сказал примитив. Один-единственный штатный индикатор использует из поставки терминала. Оптимизация пробовалась проводиться по одной валютной паре, на дневках по ценам открытия. В общем, эта задача, что совершенно очевидно, никак не может ни процессоры в облаке перегрузить, ни памяти не сожрёт. Мне не жалко сотни баксов, выброшенных "на посмотреть" что такое облако у вас. Мне непонятны результаты его работы. Конечный результат оптимизации в облаке гораздо хуже, чем должен был бы быть.
 
wtvirtual:
Ренат, я очень просто скажу. Меня достало разбираться с обломами в облаке. Я снарядил два десятка компов с простыми полуторагиговыми Целеронами, ВинХР и 128Мб оперативки на каждом компе, и эта сетка прекрасно всё считает, без сбоев и нулевых резульатов. И памяти более чем хватает. Это видно на индикаторах загрузки оперативной памяти.

Не надо просто на уровне общечеловеческих сравнений.

Надо детально. Я специально задал вопрос "какое потребление памяти и какая реакция эксперта на ее нехватку?" и привел объяснения.

Да и нереал в виде "на 128 Mb с WinXP все считает" желательно подтвердить четкими логами и скринами. Тут технический ресурс.

 
wtvirtual:
Мне не жалко сотни баксов, выброшенных "на посмотреть" что такое облако у вас.
Вы даже полсотни не потратили. И каким же надо быть маньяком, чтобы так долго "смотреть" и на 47-м баксе (а это как минимум неделя тестов) понять, что вы всё ещё смотрите
 
Renat:

TERMINAL_MEMORY_AVAILABLE выдаёт какой-то бред (видимо доступную память от теоретически возможной) - у меня это 8387556 (+\-). 

И в OnDeinit нужно  TERMINAL_MEMORY_USED вместо  TERMINAL_MEMORY_AVAILABLE