Что нужно добавить для дополнительной поддержки универсальных математических расчетов в MQL5 и MQL5 Cloud Network?

 

Не все знают, что тестер MetaTrader 5 умеет тестировать не только торговые стратегии, но и решать целый класс универсальных задач. Для этого есть специальный режим "Математические вычисления", при которых отключается доставка данных рыночного окружения, что сильно экономит объем передаваемых данных.

На текущий момент мы реализовали ряд важнейших функций для построения универсальной расчетной сети:

  • Режим работы "Математические вычисления" для отключения рыночного окружения.
  • Передачу исходных данных через прикрепление #property tester_file "my_file.dat", что позволяет обрабатывать исходные данные любого размера и возвращать результаты.
  • Передачу исходных данных в виде прикрепленных ресурсов #resource.
  • Режим сервера расчетов на терминале и передачу с агентов массивов данных в виде фреймов. Агенты могут возвращать на терминал любые данные через FrameAdd, а серверная часть этого же эксперта запускается на стороне терминала в отдельном окне для получения результатов через точки входа OnTesterPass с извлечением данных через функции FrameXXX. Полученные данные можно записывать на стороне терминала, визуализировать на графике и тд. Более детально об этот написано в теме "Контроль процессов оптимизации в реальном режиме времени и передача массивных данных от агентов в MetaTrader 5".
  • Работу локальных и удаленных агентов (без MQL5 Cloud Network) с отдельным сервером через именованные пайпы.
  • Аренду огромной сети агентов для ускорения расчетов.
  • Построение собственной расчетной фермы в своей сети на удаленных агентах.

Конечно же, к этому прикладывается: безопасность MQL5, его скорость, генетические переборщик и тд.

Отсюда вопрос - какие еще функции надо включить, чтобы улучшить возможности расчетной сети?

 
Renat:

Отсюда вопрос - какие еще функции надо включить, чтобы улучшить возможности расчетной сети?

Разрешить использование OpenCL в режиме "математические вычисления" в облаке.
OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 
TheXpert:
Разрешить использование OpenCL в режиме "математические вычисления" в облаке.

Это уже много раз обсуждали - это архитектурно невозможно из-за схемы работы драйверов Windows. Пока расчетные функции являются защищенной частью видеодрайверов, решения нет. Сейчас даже подключившись через Remote Desktop к Windows, обнаруживаешь отсутствие доступа к OpenCL.

Как производители видеокарт вынесут расчетную часть в отдельный интерфейс, независимый от видео драйверов, тогда наступит счастье. Пока в этом направлении идет только Nvidia Tesla.

 
В функцию  OnTesterInit()

добавить передачу исходных данных агенту, не в виде прикрепленных ресурсов, а в виде массива данных сформированных по ходу оптимизации.

Примерно так: 

void OnTesterInit()
  {
   // здесь формируем массив данных (например ArrayPass[])
   // и передаем сформированный массив агенту для расчетов
   return(ArrayPass);
  }

... 

Пожалуйста.  

 
А кто и как именно должен передавать эти данные?

Интересует именно техническое детальное описание: кто, что и как.
 
Renat:
1. А кто и как именно должен передавать эти данные?

2. Интересует имеено техническое детальное описание: кто, что и как.

1. Передавать должен естественно пользователь, как я предложил  выше - "Примерно так: ", вам виднее.

2. Кто кого и как, не могу описать )

Для чего нужны агенты? - Чтобы решать задачи.

Какие задачи решаем? - хрен его знает, главное чтобы решали.

Что нужно для решения задач - входные данные и выходные.

С выходом вроде ясно, но с входом непонятно.

Может быть я чего пропустил? Как передать агенту входные данные (рассчитанные  на основании предыдущих выходных данных)?

 
her.human:

1. Передавать должен естественно пользователь, как я предложил  выше - "Примерно так: ", вам виднее.

2. Кто кого и как, не могу описать )

Дело в том, что нам нужны именно технически проработанные предложения хотя бы в 2 шага. "Неизвестно что и как" не очень подходят.

 
her.human:

Как передать агенту входные данные (рассчитанные  на основании предыдущих выходных данных)

Об этом уже просили, управлять ходом оптимизации было бы иногда очень кстати.

Но при ближайшем погружении возникает масса вопросов (если только оптимизация не проходит на одном локальном агенте). 

 
Renat:

Дело в том, что нам нужны именно технически проработанные предложения хотя бы в 2 шага. "Неизвестно что и как" не очень подходят.

Вы бы так и говорили - "заявки принимаются в виде тех. задания", а то воспринимается как "выслушаем идеи".
 
Komposter, не так категорично, но все-таки нужно несколько более технично.

Мы со своей стороны думаем над независимой связью между агентами без участия терминала. Например, один из агентов может сформировать начальные данные и переслать остальным бродкастом.
 
Renat:
Мы со своей стороны думаем над независимой связью между агентами без участия терминала. Например, один из агентов может сформировать начальные данные и переслать остальным бродкастом.

Речь немного о другом. Хотелось именно управления ходом оптимизации.

Т.е. генерировать наборы параметров по ходу оптимизации и отправлять их на выполнение агентам.

Естественно, возникнет огромное количество вопросов. Я не готов на них ответить.