Новая версия платформы MetaTrader 5 build 2615: Фундаментальный анализ и комплексный критерий в тестере стратегий - страница 2

 
Christian :

OK ich habe verstanden. Weil der "Schaltfall" immer den gleichen Weg geht.

Danke für den Tipp.

Новый код с изменением путей:

 int MathRandomBounds( int minValue, int maxValue){
   return minValue + MathRound ((maxValue-minValue)*( MathRand ()/ 32767.0 ));
}

 int test_1()
  {
  
   switch (MathRandomBounds( 0 , 11 ))
     {
       case 0 :
         return 0 ;
       case 1 :
         return 1 ;
       case 2 :
         return 2 ;
       case 3 :
         return 3 ;
       case 4 :
         return 4 ;
       case 5 :
         return 5 ;
       case 6 :
         return 6 ;
       case 7 :
         return 7 ;
       case 8 :
         return 8 ;
       case 9 :
         return 9 ;
       case 10 :
         return 10 ;
       default :
         return - 1 ;
     }
   return ( 2 );
  }
 //+------------------------------------------------------------------+ 
 //|                                                                  | 
 //+------------------------------------------------------------------+ 
 int test_2()
  {
   switch (MathRandomBounds( 0 , 4 ))
     {
       case 0 :
         return    0 ;
       case 1 :
         return 1 ;
       case 2 :
         return 2 ;
       case 3 :
         return 3 ;
       default :
         return - 1 ;
     }
   return 2 ;
  }

 //+------------------------------------------------------------------+ 
 //|                                                                  | 
 //+------------------------------------------------------------------+ 
 void OnTick ()
  {
   for ( int x= 1 ; x<= 100000 ; x++)
     {
       int res1 = test_1();
     }
   for ( int y= 1 ; y<= 100000 ; y++)
     {
       int res2 = test_2();
     }
  }

Работает !


 

В MT5 много мест, где действие можно выполнить двойным щелкчом мыши по соответствующей строке.

Например, в Тестере запустить одиночный проход из результатов Оптимизации. Или в списке символов (CTRL+U) включить/выключить символ из Обзора рынка.


Однако, двойной щелчок мышью не дублируется нажатием клавиши Enter. Получается так, что стрелки вверх/вниз позволяют выбрать нужную строку в списке, но для действия над этой строкой нужно задействовать мышь, клавиатура исключается.


Возможно ли поправить это? Т.е. там, где есть действие по двойному щелчку мышью, повесить его же и на клавишу Enter.

 

Вчера мой МТ5 обновился до 2596 билда.

В результате что-то произошло с компилятором. Старые индикаторы работают как прежде.

Но если я копирую его же с новым именем, то после компиляции полный развал, отображает какую-то ерунду.

Сегодня МТ5 обновился до билда 2605. К сожалению, эта проблема осталась.

Прежний код, скомпилированный новым билдом, работает неправильно.

В чем причина ? Что с этим делать ?

 
Yurixx:

Вчера мой МТ5 обновился до 2596 билда.

В результате что-то произошло с компилятором. Старые индикаторы работают как прежде.

Но если я копирую его же с новым именем, то после компиляции полный развал, отображает какую-то ерунду.

Сегодня МТ5 обновился до билда 2605. К сожалению, эта проблема осталась.

Прежний код, скомпилированный новым билдом, работает неправильно.

В чем причина ? Что с этим делать ?

Покажите код, разберитесь с логгированием. Скорее всего неопределенное поведение или слабый код.

Нельзя же по таким словам давать ответы.

 
Renat Fatkhullin:

Покажите код, разберитесь с логгированием. Скорее всего неопределенное поведение или слабый код.

Нельзя же по таким словам давать ответы.

Будет намного лучше если при исправлениях будет описано что именно исправлено

MQL5: Исправлена ошибка, возникавшая при применении шаблона к графику при помощи функции ChartApplyTemplate.

Я наблюдал несколько ошибок при работе с этой функцией.

Так же нет исправления с ChartSaveTemplate, я писал несколько раз тут на форуме, если объект скрыт из списка объектов то он не сохраняется в шаблоне....

Документация по MQL5: Операции с графиками / ChartApplyTemplate
Документация по MQL5: Операции с графиками / ChartApplyTemplate
  • www.mql5.com
Применяет к графику указанный шаблон. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд. Возвращает true в случае удачного помещения команды в очередь графика, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Если посредством этой...
 
Renat Fatkhullin:

Покажите код, разберитесь с логгированием. Скорее всего неопределенное поведение или слабый код.

Нельзя же по таким словам давать ответы.

В логгах индикатор пишет только что "загружен успешно" и "удален".

Никаких сообщений больше нет, также как и у старого варианта.

В качестве примера прилагаю простенький индикатор зигзага. Этот индикатор рисует на графике 4-е зигзага с их коридорами.

Предназначен для тикового графика. Этот тиковый график я создал как пользовательский символ и работаю с ним в оффлайне.

Кроме того в архиве есть два скриншота: нормальная отрисовка индикатора и та, что получается после компиляции.

Файлы:
Temp.zip  185 kb
 
Yurixx:

В логгах индикатор пишет только что "загружен успешно" и "удален".

Никаких сообщений больше нет, также как и у старого варианта.

В качестве примера прилагаю простенький индикатор зигзага. Этот индикатор рисует на графике 4-е зигзага с их коридорами.

Предназначен для тикового графика. Этот тиковый график я создал как пользовательский символ и работаю с ним в оффлайне.

Кроме того в архиве есть два скриншота: нормальная отрисовка индикатора и та, что получается после компиляции.

Проверьте на штатном символе EURUSD, где у вас правильно все рисуется, а потом ищите разницу в настройках между кастомным и оригинальным символами.

Логгирование имею в виду с вашей стороны методом встраивания в ключевые точки кода распринтовки важных переменных.


Код без комментариев + громадное количество целочисленных (вместо вещественных, экономить пытались? зря) операций запросто могут приводить к переполнениям.

Вообще код страшненный.

 
Renat Fatkhullin:

Проверьте на штатном символе EURUSD, где у вас правильно все рисуется, а потом ищите разницу в настройках между кастомным и оригинальным символами.

Логгирование имею в виду с вашей стороны методом встраивания в ключевые точки кода распринтовки важных переменных.

На штатном символе проверил с самого начала. Те же проблемы.

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

Чтобы понимать, что распечатывать. Не буду же я вообще все переменные распечатывать.

Renat Fatkhullin:

Код без комментариев + громадное количество целочисленных (вместо вещественных, экономить пытались? зря) операций запросто могут приводить к переполнениям.

Вообще код страшненный.

Этот код работает уже 15 лет. Никаких переполнений в нем не может быть. Диапазоны всех переменных учтены.

Да и искать корень проблемы в переполнениях, имхо, ложный путь.

Индикатор принципиально неверно отрисовывает.

Код ничего особенного не делает. Даже вычислений там почти нет.

Он просто позиционирует вершину зигзага и переносит ее по мере поступления тиков.

По картинке видно, что вершины расположены как попало, с большими интервалами.

То есть алгоритм убит и что там происходит неизвестно. И происходит это с самого начала графика, где никаких переполнений еще не может быть.

И это после компиляции. А старый .ex5 файл работает нормально. Кстати и на  EURUSD, М1 точно также хорошо.

Кроме того, это же происходит и на других индикаторах. Полагаете, что вдруг все индикаторы перестали работать из-за ошибок в коде ?

 
Renat Fatkhullin:

Код полностью вырезается оптимизатором до состояния, когда функция OnTick становится пустой.

Ужас. 

 
Yurixx:

На штатном символе проверил с самого начала. Те же проблемы.

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

Чтобы понимать, что распечатывать. Не буду же я вообще все переменные распечатывать.

Этот код работает уже 15 лет. Никаких переполнений в нем не может быть. Диапазоны всех переменных учтены.

Да и искать корень проблемы в переполнениях, имхо, ложный путь.

Индикатор принципиально неверно отрисовывает.

Код ничего особенного не делает. Даже вычислений там почти нет.

Он просто позиционирует вершину зигзага и переносит ее по мере поступления тиков.

По картинке видно, что вершины расположены как попало, с большими интервалами.

То есть алгоритм убит и что там происходит неизвестно. И происходит это с самого начала графика, где никаких переполнений еще не может быть.

И это после компиляции. А старый .ex5 файл работает нормально. Кстати и на  EURUSD, М1 точно также хорошо.

Кроме того, это же происходит и на других индикаторах. Полагаете, что вдруг все индикаторы перестали работать из-за ошибок в коде ?

Детальнее будем разбираться в понедельник.

У меня правильно(насколько я понимаю) отрисовывает на любом таймфрейме EURUSD на MetaQuotes-Demo. Билд 2605.