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

Andrey:
Добрый день !  МТ5 на Android 4.4 перестал обновляться. Невозможно даже открыть приложение. Если кто сталкивался , буду благодарен за помощь. 
Спасибо! 

Минимум - Android 5, об этом недавно писали разработчики.

fxsaber:

Лучше примером.

Ну пример стандартный для этого метода, типа:

    EXPERT::Parameters(0, parameters, names);
    for(int i = 0; i < ArraySize(parameters); i++)
    // здесь parameters[i].type всегда равно TYPE_STRING, вне зависимости от фактического типа параметра

Это видно и по исходнику самой библиотеки Expert.mqh.

PS. Перевел обсуждение в топик библиотеки.

Очередной баг с ParameterGetRange/ParameterSetRange.

Вызов ParameterSetRange не меняет флаг включения параметра в оптимизацию для последующего вызова ParameterGetRange:

// параметр "name" изначально включен в оптимизацию
// в одной части кода...
ParameterSetRange("name", false, value, start, step, stop);
...
// в другой части кода финализация проверок
ParameterGetRange("name", enabled, value, start, step, stop); // получаем enabled=true, т.е. изменения внесенные ParameterSetRange не применились
Stanislav Korotky:

Очередной баг с ParameterGetRange/ParameterSetRange.

Вызов ParameterSetRange не меняет флаг включения параметра в оптимизацию для последующего вызова ParameterGetRange:

Помню, что когда увлекался этой темой, было много нюансов. Что-то правильно или неправильно показывало, в зависимости от OnTester*-функции. Попробуйте в разных On-функциях вызвать.

fxsaber:

Помню, что когда увлекался этой темой, было много нюансов. Что-то правильно или неправильно показывало, в зависимости от OnTester*-функции. Попробуйте в разных On-функциях вызвать.

Как это в разных? Мне нужно в OnTesterInit - других вариантов нет.

Stanislav Korotky:

Как это в разных? Мне нужно в OnTesterInit - других вариантов нет.

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

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

fxsaber, 2017.08.15 17:49

ParameterGetRange не работает в OnTesterInit.
sinput int Range = 5;

#define PRINT(A) Print(#A + " = " + (string)(A));

void PrintParameter( const string Name, const string From )
{
  PRINT(From)
  
  bool Enable;
  long Value, Start, Step, Stop;
  
  if (ParameterGetRange(Name, Enable, Value, Start, Step, Stop))
  {
    PRINT(Start)
    PRINT(Step)
    PRINT(Stop)
    PRINT(Value)
    PRINT(Enable)
  }   
}

void OnTesterInit()
{
  ParameterSetRange("Range", true, 5, 1, 2, 3); // Задали ненулевыми все значения
  
  PrintParameter("Range", __FUNCTION__); // Возвращает одни нули
}

void OnTesterDeinit()
{
  PrintParameter("Range", __FUNCTION__); // Работает нормально
  
  ChartClose();
}

void OnTesterPass()
{
  PrintParameter("Range", __FUNCTION__); // Работает нормально
}

int OnInit()
{
  uchar Data[];
  
  FrameAdd(NULL, 0, 0, Data);
  
  return(INIT_FAILED);
}
fxsaber:

Это только подтверждает мой тест-кейс: установка параметра в MQL не влияет на его последующее чтение в OnTesterInit. В других обработчиках уже поздно что-либо настраивать, т.к. проходы определяются начальными настройками.

Недоработка
#import "z.ex5" //(1) Error: '#import' - #import was not closed
#import
/*
.
.
.
*/
#import "z.ex5" //(2)

Не закрыт 2-ой #import, а ошибку выдает на 1-ом - cоответственно неправильно показано реальное место ошибки - долго не мог понять в чем дело

Ошибка при компиляции:
class A {};
class B {
public:
    static A a;
} b;  //Error: unresolved static variable 'B::a'
A B::a;
void OnStart() {}
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам".