Работа с файлами из эксперта в тестере - страница 2

 
hrenfx:

1. Это шутка такая? Конечно, MT5+MQL5 не знаю совсем, но неужели элементарщину, о которой в MQL4 даже не задумываешься, нельзя сделать в MT5? Что-то не стыкуется с фразами о всепревосходстве пятерки. Хотелось бы понять причины существующего решения.

2. Так автоматом данные в исходник запихивать и компилить. Юзер ничего даже не заметит. 

1. Если бы читали внимательней, можно заметить, что было предположение о причине - обеспечение оптимизации в облаке.  

2. Здесь только словами аля Шекспир.. А ю'зер кто? Так же вспомнить барона Мюгхаузена, вытаскивающего себя за волосы. Знаете почему в метро сексом не занимаются? Советами зумучают.

 
MetaDriver:
В общей папке (FILE_COMMON) ??

Тоже самое.

ps. что-то перепутал вчера, вроде можно, не тоже самое. 

 

 

При работе с локальными агентами можно использовать файлы, открываемые с помощью флага FILE_COMMON. Но при этом надо думать о совместном доступе, если в эти файлы идет запись.

При работе с клаудом или удаленными агентами, используемые (для чтения) файлы нужно явно указывать через #property tester_file "myfile1.dat". В этом случае тестер передает эти файлы в клауд вместе с исходным экспертом, причем контролируется изменение этого файла и он кешируется на клауд серверах и агентах.

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

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

 
TheXpert:
Если прописать файл как ресурс наверное будет передаваться.
Можно просто через #property tester_file "xxxx" передавать нужное количество файлов. Так описать можно несколько файлов.
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Спасибо за подробное разъяснение. Стоит отразить его в справке.
 
hrenfx:
Спасибо за подробное разъяснение. Стоит отразить его в справке.

Кстати да. Честно не понятно, что так можно несколько файлов вписать, я как и Дмитрий подумал что только один.

А еще напутал с ресурсами. Надо начинать актуализироваться.

 
hrenfx:
Спасибо за подробное разъяснение. Стоит отразить его в справке.

Вроде как есть https://www.mql5.com/ru/docs/basis/preprosessor/compilation:

tester_indicator

string

Имя пользовательского индикатора в формате "имя_индикатора.ex5". Необходимые для тестирования индикаторы определяются автоматически из вызова функций iCustom(), если соответствующий параметр задан константной строкой. Для остальных случаев (использование функции IndicatorCreate() или использование неконстантной строки в параметре, задающем имя индикатора) необходимо данное свойство

И еще Тестирование торговых стратегий:

Обмен данными между терминалом и агентом

При запуске тестирования терминал готовит для отправки агенту несколько блоков параметров:

  • Входные параметры тестирования (режим моделирования, интервал тестирования, инструмент, критерий оптимизации и т.д.)
  • Список выбранных в "Обзоре рынка" инструментов
  • Спецификация тестируемого инструмента (размер контракта, допустимые отступы от рынка для установки StopLoss и Takeprofit, и т.д)
  • Тестируемый эксперт и значения его входных параметров
  • Информация о дополнительных файлах (библиотеки, индикаторы, файлы данных - #property tester_...)

tester_indicator

string

Имя пользовательского индикатора в формате "имя_индикатора.ex5". Необходимые для тестирования индикаторы определяются автоматически из вызова функций iCustom(), если соответствующий параметр задан константной строкой. Для остальных случаев (использование функции IndicatorCreate() или использование неконстантной строки в параметре, задающем имя индикатора) необходимо данное свойство

tester_file

string

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

tester_library

string

Имя библиотеки с расширением, заключенное в двойные кавычки. Библиотека может быть как с расширением dll, так и с расширением ex5. Необходимые для тестирования библиотеки определяются автоматически. Однако, если какая-либо библиотека используется пользовательским индикатором, то необходимо использовать данное свойство

И там же:

Использование общей папки всех клиентских терминалов

Все тестерные агенты изолированы друг от друга и от клиентского терминала: у каждого  агента есть собственная папка, в которую записываются логи агента. Кроме того, все файловые операции при тестирования агента происходят в папке имя_агента/MQL5/Files. Однако можно реализовать взаимодействие между локальными агентами и клиентским терминалом через общую папку всех клиентских терминалов, если при открытии файла указать флаг FILE_COMMON:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- общая папка всех клиентских терминалов
   common_folder=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//--- выведем имя этой папки
   PrintFormat("Откроем файл в общей папке клиентских терминалов %s", common_folder);
//--- откроем файл в общей папке (указан флаг FILE_COMMON)
   handle=FileOpen(filename,FILE_WRITE|FILE_READ|FILE_COMMON);
   ... дальнейшие действия
//---
   return(0);
  }

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Renat:

При работе с локальными агентами можно использовать файлы, открываемые с помощью флага FILE_COMMON

...


Хорошо было бы в меню "Файл" иметь не только команду "Открыть каталог данных", а еще "Открыть общий каталог данных".

 
Renat:
Можно просто через #property tester_file "xxxx" передавать нужное количество файлов. Так описать можно несколько файлов.

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

Хорошо бы функцию такую - в ините перечислять все файлы нужные.

 

 
Integer:


Хорошо было бы в меню "Файл" иметь не только команду "Открыть каталог данных", а еще "Открыть общий каталог данных".

Справка по MetaEditor → Пользовательский интерфейс → Главное меню → Файл 

Открыть общую папку данных

Открыть общую папку данных

Открыть папку, где хранятся общие данные всех клиентских терминалов на компьютере: Системный_диск:\ProgramData\MetaQuotes\Terminal\Common

Причина обращения: