Ошибки, баги, вопросы - страница 2291

 
Alexey Navoykov:

определить программно, какой объект находится выше или ниже, невозможно.

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

Не загружается библиотека .ex5, если она находится в общей директории всех клиентских терминалов MetaTrader 5 (Common\MQL5\Libraries) как об этом сказано в Документации - "Поиск импортируемой библиотеки EX5 производится в следующей последовательности: пункт 3"

#import "Test.ex5"
        void f();
#import
void OnStart()
{
        f();
}

Результат: cannot open file 'Test.ex5'

при том что 'Test.ex5' находится в папке Common\MQL5\Libraries

 
fxsaber:
Возможно, стоит посмотреть, в какой последовательности сохраняются объекты в шаблоне. Думаю, чем позже там прописан объект, тем выше он над остальными.
Чтобы поместить объект над всеми остальными вне зависимости от порядка прописки, необходимо сначала сделать его невидимым на всех таймфреймах, а потом обратно вернуть видимость
 
Tetyana Shcherba:

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

""80% прироста сделано за 16 дней. Это 4% от общего срока жизни сигнала 376 дней.""


Как это может быть? или я что-то не так понимаю?

Я тоже вчера это заметил. Наверное формулу правят. 
 

Проходы, что возвращают INIT_PARAMETERS_INCORRECT при Оптимизации имеют в логе такие записи

Core 3  pass 90 tested with error "incorrect input parameters" in 0:00:00.000
Core 3  pass 91 tested with error "incorrect input parameters" in 0:00:00.125
Core 3  pass 92 tested with error "incorrect input parameters" in 0:00:00.141


При этом они зачем-то попадают в результаты Оптимизации


На скрине видно, что идет сортировка по прибыли, но Incorrect-проходы не поддаются этой сортировке. Соответственно, когда перехожу вниз списка, то вместо отрицательных проходов вижу некорректные. А значение ноль якобы показывает, что отрицательных и нет. Приходится искать прокруткой эти самые отрицательные, если не введен в заблуждение таким поведением GUI.


Раньше обломы OnInit и ExpertRemove в результатах Оптимизации можно было не показывать. А если и показывались, то их строки в таблице помечались красным цветом. Возможно ли вернуть это поведение?


При XML-экспорте передается информации, что некоторые строки таблицы являются Incorrect-результатами? Если правильно понимаю, то в еще не открытом opt-формате этот флаг корректности хранится.

Хорошо бы его все таки уметь получать в OnTesterPass

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

Ошибки, баги, вопросы

fxsaber, 2018.09.13 06:16

В конце Оптимизации Тестер выдает такое
Tester  optimization finished, total passes 691200 (successful 673286 passes)

successfull - проходы, дошедшие до конца. Остальные - прерванные по ExpertRemove.


По какому флагу Тестер классифицирует полученные от Агентов проходы? Как в OnTesterPass прочесть этот флаг?


ЗЫ И на графике Оптимизации хорошо бы не показывать Incorreсt-проходы


 

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

Ошибки, баги, вопросы

fxsaber, 2018.09.13 06:16

В конце Оптимизации Тестер выдает такое
Tester  optimization finished, total passes 691200 (successful 673286 passes)

successfull - проходы, дошедшие до конца. Остальные - прерванные по ExpertRemove.


Не понимаю, почему Тестер ни слова не говорит про successful- проходы

Tester  optimization finished, total passes 1800

Прерванные по ExpertRemove-проходы есть, но реакция по итогу совсем не такая, как видно в цитате выше.

 
Slava:
Чтобы поместить объект над всеми остальными вне зависимости от порядка прописки, необходимо сначала сделать его невидимым на всех таймфреймах, а потом обратно вернуть видимость
Я уже написал об этом на прошлой странице. Вопрос был в другом: как потом определить это программно?
 
Alexey Navoykov:
Я уже написал об этом на прошлой странице. Вопрос был в другом: как потом определить это программно?
Никак
 
Ошибка при компиляции
typedef void (*fn1)();
void f1() {}
void g()
{
        fn1 f = f1; //(1) нормально
}
/*...*/
typedef void (*fn2)();
void f2() {}
void OnStart()
{
        fn2 f = f2; //(2) Error: 'f2' - type mismatch
}

А какая разница?!?

 
Slava:
Никак
// В комментарии к чарту выводит текущую Z-глубину всех графических объектов чарта

#define private public
  #include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003
#undef private

#define STRING_END "\r\n"
#define OBJECT_NAME "name="
#define OBJECT_BEGIN ("<object>" + STRING_END)

int GetZObjects( string &Names[], const long Chart_ID = 0 )
{
  const int Size = ArrayResize(Names, ObjectsTotal(Chart_ID));
  string Template = EXPERT::TemplateToString(Chart_ID);  
  
  for (int i = 0; i < Size; i++)
  {
    Template = EXPERT::StringBetween(Template, OBJECT_BEGIN);
    
    Names[i] = EXPERT::StringBetween(Template, OBJECT_NAME, STRING_END);
  }
  
  return(Size);
}

void OnChartEvent( const int id, const long&, const double&, const string& )
{
  if ((id == CHARTEVENT_OBJECT_CHANGE) ||
      (id == CHARTEVENT_OBJECT_CLICK) ||
      (id == CHARTEVENT_OBJECT_CREATE) ||
      (id == CHARTEVENT_OBJECT_DELETE) ||
      (id == CHARTEVENT_OBJECT_DRAG) ||
      (id == CHARTEVENT_OBJECT_ENDEDIT))
  {
    string ZObjects[];
    
    string Str = NULL;
    
    for (int i = GetZObjects(ZObjects) - 1; i >= 0; i--)
      Str += (string)i + " Z: " + ZObjects[i] + "\n";
      
    Comment(Str);
  }
}
Причина обращения: