Вопросы от "чайника" - страница 229

 
Rosh:

Свойство #property tester_file предназначено именно для того, чтобы ручками ничего никуда не класть.

tester_file

string

Имя файла для тестера с указанием расширения, заключенное в двойные кавычки (как константная строка). Указанный файл будет передан тестеру в работу. Входные файлы для тестирования, если необходимы, должны указываться всегда


Если для работы программы требуется некоторый файл с данными  datafile.csv, который лежит в папке каталог_терминала\MQL5\Files, то файл будет автоматически перенесен тестером в каталог_агента_тестирования\MQL5\Files (для этого и необходимо указание  #property tester_file datafile.csv).

То же самое относится и когда файл для тестирования лежит в общей папке терминала?

Если добавляю в код строку:

#property tester_file "Test.txt"

...то получаю вот такую ошибку:


//---

Я хочу передать файл в облако из общей папки терминала. Как это сделать?

 
tol64:

То же самое относится и когда файл для тестирования лежит в общей папке терминала?

Если добавляю в код строку:

...то получаю вот такую ошибку:


//---

Я хочу передать файл в облако из общей папки терминала. Как это сделать?

Помоему это уже обсуждали и выяснили что пока-что файлы нельзя передать в облако
 
lazarev-d-m:

 


Помоему это уже обсуждали и выяснили что пока-что файлы нельзя передать в облако

Нужна ссылка на обсуждение этого вопроса тогда. Где это обсуждалось?

Сам я отталкиваюсь от некоторых прошлых обсуждений и от статьи: MQL5 Cloud Network ускоряет расчеты, но что-то не получается.

Вы нажимаете кнопку "Старт" и процесс оптимизации запускается. Терминал готовит задачу для тестерных агентов, в которую входят:

  • скомпилированный файл эксперта в виде EX5;
  • индикаторы и библиотеки EX5, подключаемые директивами #property tester_indicator и #property tester_library (библиотеки DLL безусловно запрещены в облаке);
  • файлы данных, необходимые для проведения тестирования, подключаемые директивой #property tester_file;
  • условия тестирования/оптимизации (название финансового инструмента, интервал тестирования, режим моделирования и т.д.);
  • торговое окружение (свойства символов, условия торговли и т.д.);
  • набор параметров эксперта, которые формируют всё множество необходимых проходов - заданий.

Терминал MetaTrader 5 связывается с узлами сети MQL5 Cloud Network и отдает каждому узлу отдельный пакет заданий на выполнение конкретных проходов. Каждый узел фактически является прокси-сервером, так как он получает задачу и пакет заданий (одиночных проходов), и после этого начинает распределять эти задания по подключенным к нему агентам. При этом сами файлы экспертов, индикаторов, библиотек и файлы данных не сохраняются на жестких дисках серверов MQL5 Cloud Network. 

//---

Перенёс пока файл для оптимизации в локальную папку терминала. Вышеприведённой ошибки в таком случае не возникает. Тестирование во всех режимах и оптимизация проходит нормально, но при попытке включить оптимизацию в облаке журнал заполняется вот такими сообщениями:

 

//---

И изредка приходят нулевые результаты оптимизации. Довольно долго ждал (минут десять), но ничего не происходит.

//---

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

NZDUSD,GBPUSD,EURJPY,EURGBP

Стоит их убрать из списка, всё начинает работать. Но радовался я рано. Как только увеличил кол-во истории, снова та же самая ситуация (нулевые результаты). Памяти эксперт использует столько:

 

 //---

Куда смотреть, что делать? 

 
tol64:

Нужна ссылка на обсуждение этого вопроса тогда. Где это обсуждалось?

Сам я отталкиваюсь от некоторых прошлых обсуждений и от статьи: MQL5 Cloud Network ускоряет расчеты, но что-то не получается.

//---

Перенёс пока файл для оптимизации в локальную папку терминала. Вышеприведённой ошибки в таком случае не возникает. Тестирование во всех режимах и оптимизация проходит нормально, но при попытке включить оптимизацию в облаке журнал заполняется вот такими сообщениями:

 

//---

И изредка приходят нулевые результаты оптимизации. Довольно долго ждал (минут десять), но ничего не происходит.

//---

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

NZDUSD,GBPUSD,EURJPY,EURGBP

Стоит их убрать из списка, всё начинает работать. Но радовался я рано. Как только увеличил кол-во истории, снова та же самая ситуация (нулевые результаты). Памяти эксперт использует столько:

 

 //---

Куда смотреть, что делать? 

 

Я правильно понимаю, что вам удается как-то отправлять на чужие компьютеры файл и папки терминала для использования в работе эксперта?
 
lazarev-d-m:
Я правильно понимаю, что вам удается как-то отправлять на чужие компьютеры файл и папки терминала для использования в работе эксперта?
Да, если файл не в общей папке терминала, то его можно использовать в облаке. 
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5
 
tol64:

... Тестирование во всех режимах и оптимизация проходит нормально, но при попытке включить оптимизацию в облаке журнал заполняется вот такими сообщениями:

...

Промелькнула ошибка в журнале: history send error

Что-то с историей. Что нужно делать в этом случае? Я хочу оптимизировать параметры от 2000 года по множеству символов. 

 
lazarev-d-m:

вынесите обьявление переменной за функцию OnInit и присвойте значение bool - у меня сразу и в тестере и в отладке все заработало

Вы часто даете такие "полезные" советы в данном разделе? А если бы на моем месте был новичок - он после такого совета ещё пол года бы искал где косяк :)

Тип bool предназначен для хранения логических значений true (истина) или false (ложь), числовое представление которых 1 или 0 соответственно.

Т.е. вы переменную делаете заведомо либо 0 либо 1, а потом сравниваете с отрицательным числом и делаете вывод о том что всё работает.

Вопрос в силе - почему данный код отказывается работать в тестере:

int OnInit()
  {
int cl_ctx;
if((cl_ctx=CLContextCreate(CL_USE_ANY))==-1)
  {
    Print("OpenCL not found! Err: ", GetLastError());
    return(-1);
  }
Print("Ok!!!");
return(0);
  }

void OnTick() {} 
 
MigVRN: почему данный код отказывается работать в тестере:

А какую ошибку возвращает? 

Я не разбираюсь в OpenCL, но как-то на глаза уже попадалась тема про OpenCL и тестер. Может, тестер просто не поддерживает эту особенность? Посмотрите тему OpenCL: внутренние тесты реализации в MQL5 

 
Yedelkin:
А какую ошибку возвращает? 

В данном варианте - 0 :)

  OpenCL not found! Err: 0
 
Yedelkin:

Я не разбираюсь в OpenCL, но как-то на глаза попадалась тему про OpenCL и тестер. Может, тестер просто не поддерживает эту особенность? Посмотрите тему OpenCL: внутренние тесты реализации в MQL5 

Вот тут говорят что работает.
Причина обращения: