Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения - страница 16

 
Vladimir Karputov:

Неужели так трудно прикрепить ФАЙЛ к сообщению? Мало того, что без имени, без расширения, без шапки. Так ещё и самому нужно создавать файл и копировать туда код. Ай-я-яй!

Я для таких случаев заранее имею шаблон советника/индикатора с именем Test.mq5 в папке \Тесты\

Потому, что проси, не проси, а всё равно будут делать как делают.

 
Vladimir Pastushak:

Мы на техническом форуме, легких путей не ищем...

Из-за такого отношения к тем, кто может и должен проверить, тот, кто может и должен - уже и не должен, и не обязан.

 
Artyom Trishkin:

Я для таких случаев заранее имею шаблон советника/индикатора с именем Test.mq5 в папке \Тесты\

Потому, что проси, не проси, а всё равно будут делать как делают.

Я делаю так само. Но просто надоело :)

 
Vladimir Karputov:

Я делаю так само. Но просто надоело :)

Да, надоедает. А что делать? Вопрос риторический...

 
Carl Schreiber:

Wenn ich mir jetzt die resultierende Ergebnistabellen anschaue, die ich sichern konnte, sehe ich gerade einmal 127 Ergebniszeilen der genetischen Prüfung, nachdem ich 116 Zeilen - also fast die Hälfte - ohne Ergebnis gelöscht habe. Es sind die Parameter-Kombinationen, bei denen OnInit() die Ausführung mit INIT_PARAMETERS_INCORRECT verhinderte, die der genetische Algorithmus aber trotzdem als gültigen Durchlauf betrachtete. 127 tatsächliche Durchläufe bei 48906 möglichen Parameterkombination und laut Prozesszeile (siehe oben) 1408 geplanten Durchläufen. (https://www.mql5.com/ru/forum/347385/page14#comment_17599266)

Damit ist die integrierte genetische Optimierung ein reines Glücksspiel.

Sehr ärgerlich.

Когда я сейчас смотрю на таблицы результатов, которые мне удалось сохранить, я вижу всего 127 строк результатов генетического теста после удаления 116 строк - почти половина - без результата. Это те комбинации параметров, для которых функция OnInit() предотвращала выполнение с INIT_PARAMETERS_INCORRECT, но которые генетический алгоритм все равно считал допустимым запуском. 127 фактических запусков с 48906 возможными комбинациями параметров и, в соответствии с технологической линией (см. выше), 1408 запланированных запусков. (https://www.mql5.com/ru/forum/347385/page14#comment_17599266)

Это делает интегрированную генетическую оптимизацию чистой игрой в азарт.

Очень раздражает.

Переведено с помощью www.DeepL.com/Translator (бесплатная версия)

Тема затрагивалась много лет назад, но понимания со стороны разработчиков MQ нет.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

INIT_PARAMETERS_INCORRECT при работе с облаком возвращается, как значение 32767

Stanislav Korotky, 2017.11.29 19:51

Есть большая разница между ущербным (неудачным) экземпляром, и экземпляром, который не существует. Возврат ошибки из Init говорит, что нет никаких генетических данных.


 
Stanislav Korotky:

Тема затрагивалась много лет назад, но понимания со стороны разработчиков MQ нет.

The problem is that it is practically impossible for us to correct this ourselves – or am I wrong?

I can't see how the validity of the parameter combination can be checked before sending/calculating a frame, in order to avoid sending it.

Here (https://www.mql5.com/en/forum/6411) is described how the results can be displayed 'live':

Проблема в том, что мы практически не можем исправить это сами - или я ошибаюсь?


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

Здесь (https://www.mql5.com/en/forum/6411) описано, как результаты могут быть отображены "вживую":

void OnTesterPass()
  {
   string  name;
   ulong   pass;
   long    id;
   double  val,WaveletLine[];
   static int passes_ok=0;
   int     maxpass=SIZE_Y;

//---
   while(FrameNext(pass,name,id,val,WaveletLine))
     {
      long line_index=id;
      Print("pass=",pass," id=",id," val=",val);

      wavelet.AddWaveletLine(line_index,WaveletLine);
      wavelet.ShowImage();

      passes_ok++;
      progress.Value(int(passes_ok*100.0/maxpass));
     }
  }


But: "OnTesterPass() is TesterPass event handler that is generated automatically when receiving a frame during an Expert Advisor optimization in the strategy tester.”
But this is already too late, the invalid parameter combination has already been calculated and included in the genetic optimization count - by the way, probably the same happens with already calculated combinations, which were not calculated, but included in the count. Otherwise I would probably not get 1408 runs (from the progress line), of which 116 were aborted by OnInit(), and 127 runs in the result table. That makes 1165 runs counted but not performed.

My question, is there a function, or an event-handle, that can be called before a frame is sent to calculation (into the cloud), to validate it and move the frame pointer if necessary?


Но..: "OnTesterPass() - это обработчик события TesterPass, который генерируется автоматически при получении фрейма при оптимизации эксперта в тестере стратегий".
Но уже поздно, неправильная комбинация параметров уже вычислена и включена в счет генетической оптимизации - кстати, наверное, то же самое происходит с уже вычисленными комбинациями, которые не были вычислены, а включены в счет. Иначе я бы, наверное, не получил 1408 запусков (из строки прогресса), из которых 116 были прерваны функцией OnInit(), и 127 запусков в таблице результатов. То есть 1165 прогонов было подсчитано, но не выполнено.

Мой вопрос, есть ли функция или дескриптор событий, который можно вызвать до отправки кадра на вычисление (в облако), чтобы проверить его и при необходимости переместить указатель кадра?

Managing optimization processes in real time and transferring massive data from the agents to MetaTrader 5
Managing optimization processes in real time and transferring massive data from the agents to MetaTrader 5
  • 2012.03.26
  • www.mql5.com
Build 619 of MetaTrader 5 contains the functions for managing the trading strategies optimization that have been announced long ago...
 
Carl Schreiber:

The problem is that it is practically impossible for us to correct this ourselves – or am I wrong?

I can't see how the validity of the parameter combination can be checked before sending/calculating a frame, in order to avoid sending it.

Да, конечно, это нужно исправлять в самом оптимизаторе. Мы сами можем только попробовать написать другой оптимизатор, либо сторонний, либо с привлечением вычислительных возможностей агентов, но без использования штатной генетики по назначению.
 
Stanislav Korotky:
Да, конечно, это нужно исправлять в самом оптимизаторе. Мы сами можем только попробовать написать другой оптимизатор, либо сторонний, либо с привлечением вычислительных возможностей агентов, но без использования штатной генетики по назначению.

Es gibt ja zwei Optionen: Есть два варианта:

  1. https://www.mql5.com/ru/articles/4150  Управляемая оптимизация: метод отжига
  2. https://www.mql5.com/ru/articles/55  Генетические алгоритмы - это просто!

Nur beide sind wohl nicht ausgelegt für ein paralleles Multithreading und ich verstehe nicht ganz, warum man unbedingt im Fall 2 alles erst in "Chromosonen" überführen muss. Meiner Meinung nach würde eine Tabelle mit den besten Ergebnissen und eine zweite mit den anderen oder allen Ergebnisse genügen.

Auch würde ich mir wünschen, dass die Auswahl der 'besten' Parametersets nicht nur nach einem Kriterium erfolgt, sondern in den Pool der Besten für weitere Optimierungen neben der eigenen Formel (üblicherweise in OnTester()) auch zB. die größten Gewinne und die höchsten "Expected Profits" (=Profit/Trades) verwendet würden - warum nicht?

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

Также хотелось бы, чтобы выбор "лучших" наборов параметров не основывался только на одном критерии, а добавлялся в пул лучших для дальнейшей оптимизации помимо собственной формулы (обычно в OnTester()), например, самой большой прибыли и самой высокой "ожидаемой прибыли" (=Profit/Trades) - почему бы и нет?

Управляемая оптимизация: метод отжига
Управляемая оптимизация: метод отжига
  • www.mql5.com
В состав тестера стратегий торговой платформы 5 входят только два варианта оптимизации: полный перебор параметров и генетический алгоритм. В этой статье я предлагаю новый вариант оптимизации торговых стратегий — метод отжига. Здесь приводится алгоритм метода отжига, рассмотрена его реализация и способ подключения к любому советнику. Далее мы...
 

Теперь нельзя в отладчике просматривать элементы массива?

void OnStart()
  {
        int a[100];
        a[0] = 1;
  }

a[0] Expression could not be evaluated

 
fxsaber:

Человек с флешки запускает свой Терминал, чтобы что-то показать. Считаете, что этого достаточно, чтобы я имел доступ к его телефону и электронной почте?

Выходит, что стоит мне с флешки на чьей-то машине запустить свой Терминал для, например, быстрого контроля, то я делюсь своими личными данными?


ЗЫ Более щекотлива ситуация, что если человек мне показывает не свой счет, а своего инвестора. Т.е. свой ДУ-счет. Тогда я вижу контактные данные его инвестора. Что с ними делать - только фантазии.

Это потенциально дыра в безопасности/приватности. Это нужно исправлять.

Аналогичную ситуацию описывал ранее когда на VPS человек заходил через браузер на сайт mql5 и потом терминале сам коннектится в его учётку, то есть я могу просматривать чат этого пользователя.