Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 144

 
DC2008:

Читаем внимательно:

Возвращаемое значение

Функция возвращает индекс найденного элемента с учетом серийности массива. В случае неудачи функция возвращает -1. 

поэтому, надо так:

1. Поправьте, если не правильно усвоил.

Нашли в промежутке все минимумы:

double Low[];
CopyLow(_Symbol,_Period,tss,tspp,Low);

 Так как массив с минимумами есть, то ищем с помощью функции ArrayMinimum только минимум из массива, без перечисления  промежутка во времени (tss,tspp)

double min= Low[ArrayMinimum(Low)];  
Alert("min=",min);

2. В скрипте код расположил в функцию:

void OnDeinit(const int reason)

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

 
forexman77:

1. Поправьте, если не правильно усвоил.

Нашли в промежутке все минимумы:

 Так как массив с минимумами есть, то ищем с помощью функции ArrayMinimum только минимум из массива, без перечисления  промежутка во времени (tss,tspp)

2. В скрипте код расположил в функцию:

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

В области действия переменной. Сделайте её глобальной.
Документация по MQL5: Основы языка / Переменные / Локальные переменные
Документация по MQL5: Основы языка / Переменные / Локальные переменные
  • www.mql5.com
Основы языка / Переменные / Локальные переменные - Документация по MQL5
 
zfs:
В области действия переменной. Сделайте её глобальной.
Перенес переменную "double min;"  в глобальные все равно =0.0
 
forexman77:
Перенес переменную "double min;"  в глобальные все равно =0.0

Скрипт:

void OnStart()
  {
   double Low[];
   CopyLow(_Symbol,_Period,0,10,Low);
   double min=Low[ArrayMinimum(Low)];
   Alert("min=",min);
  }
В скриптах нет OnInit и OnDeinit.
 

У вас ошибка в документации  https://www.mql5.com/ru/docs/constants/chartconstants/charts_samples

int ChartFirstVisibleBar(const long chart_ID=0)
  {
//--- подготовим переменную для получения значения свойства
   long result=-1;
//--- сбросим значение ошибки
   ResetLastError();
//--- получим значение свойства
   if(!ChartGetInteger(chart_ID,CHART_WINDOW_YDISTANCE,0,result))   тут должно быть CHART_FIRST_VISIBLE_BAR
     {
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
     }
//--- вернем значение свойства графика
   return((int)result);
  }

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком - Документация по MQL5
 
DC2008:

Скрипт:

В скриптах нет OnInit и OnDeinit.

Спасибо Вам огромное!!!

 У меня все получилось!!

 

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

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

 

При тестировании советника, столкнулся со следующей сложностью.

Советник не торгует (так необходимо) если:

 if(Stop <=Start) { return;}

При тестировании задаю параметры  Stop от 1 до 33, Start от 1 до 33.

Естественно тестер выводит примерно 2/3 результатов нулевых, так как при переборе в тестере бывает  Stop > Start.

Уходит много времени на эти нулевые тесты.

Вопрос следующий, как в коде советника запретить тестирование нулевых тестов?

По логике время тестирования после запрета должно сократиться?

 
forexman77:

При тестировании советника, столкнулся со следующей сложностью.

Советник не торгует (так необходимо) если:

При тестировании задаю параметры  Stop от 1 до 33, Start от 1 до 33.

Естественно тестер выводит примерно 2/3 результатов нулевых, так как при переборе в тестере бывает  Stop > Start.

Уходит много времени на эти нулевые тесты.

Вопрос следующий, как в коде советника запретить тестирование нулевых тестов. 

https://www.mql5.com/ru/docs/common/expertremove

это работает в тестере.  // по крайней мере в позапрошлом билде работало.  давно не проверял.

Документация по MQL5: Общие функции / ExpertRemove
Документация по MQL5: Общие функции / ExpertRemove
  • www.mql5.com
Общие функции / ExpertRemove - Документация по MQL5
 
MetaDriver:

https://www.mql5.com/ru/docs/common/expertremove

это работает в тестере.  // по крайней мере в позапрошлом билде работало.  давно не проверял.

Мне нужен пропуск в тестировании. Советник не торгует если:

if(Stop <=Start) { return;}

 Это я хочу сделать, чтобы сократить время тестирования.

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

 Если попалось Stop <=Start, пропускаем данный проход.