Справка по MetaEditor

Работа с хранилищем

Работа с хранилищем

Хранилище MQL5 Storage работает только с папкой MQL4/MQL5 клиентского терминала. Все операции с хранилищем MQL5 Storage осуществляются через контекстное меню окна "Навигатор" и через контекстное меню редактора исходного кода:

Меню MQL5 Storage

Команды меню позволяют выполнить следующие действия в MQL5 Storage:

Начало работы

Хранилище содержит информацию в виде дерева файлов. Подключаясь к хранилищу, пользователь MetaEditor читает и записывает эти файлы. Пользователь всегда работает только с локальной копией данных и по мере необходимости отсылает свои изменения в хранилище.

Каждая транзакция изменений фиксируется в журнале хранилища, и в последующем пользователь может просмотреть когда, кем и какие файлы были изменены. Каждой транзакции изменений соответствует определенный номер ревизии. Ревизия представляет собой состояние хранилища в определенный момент времени. При каждой отправке изменений в хранилище создается новая ревизия (повышается ее номер). По номеру ревизии хранилище определяет состояние данных и осуществляет их слияние. Пользователь также может обновлять до выбранной ревизии локальную копию данных и откатываться к любой ревизии.

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

  • Если вы только что создали хранилище, оно пусто. Вам необходимо добавить в него каталог. После этого для указанного каталога в хранилище будет создан соответствующий каталог (по тому же пути относительно папки /MQL4 или /MQL5). Данный каталог будет корневым. Именно внутри него будет происходить дальнейшая работа с файлами.
  • Если в хранилище уже имеются какие-либо данные, то вы можете извлечь их в локальный каталог. Например, в хранилище уже имеется папка /Personal/имя_учетной_записи/MQL5/Experts. Вы можете извлечь данные, хранящиеся в ней, в локальный каталог /MQL5/Experts.

Самый верхний каталог в иерархии, который привязан к хранилищу является корневым. Работа с хранилищем осуществляется только в его пределах. Необязательно привязывать к хранилищу самый верхний каталог /MQL4 или /MQL5. Любой подкаталог в пределах каталога /MQL4 или /MQL5 может быть корневым. Корневых каталогов может быть несколько, например, /MQL5/Experts и /MQL5/Images.

  • Хранилище MQL5 Storage работает только с файлами следующих типов: mq4, mq5, mqh, cpp, h, bmp, wav. Остальные типы файлов невозможно добавить в хранилище.
  • В хранилище нельзя добавить файлы размером более 64 МБ.

Добавление в хранилище

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

Добавление файлов происходит только локально. Для отправки данных изменений в хранилище выполните команду "Отправить изменения в хранилище Отправить изменения в хранилище".

Добавление папки в хранилище

Отметьте галочками нужные файлы и папки, а затем нажмите кнопку "ОК".

  • Принцип работы хранилища таков, что не позволяет добавлять файлы без папки, в которой они находятся. Нельзя добавить файл, находящийся в папке, которая не добавлена в хранилище.
  • Нельзя добавить отдельные файлы в корневую директорию /MQL4 или /MQL5.
  • В папке, связанной с хранилищем, можно добавлять только ее непосредственно дочерние каталоги. Папки, находящиеся ниже в иерархии, не могут быть добавлены без их родительских папок.

Добавленные файлы и папки помечаются значком Добавлено в хранилище:

Добавленные файлы и папки

Следующим шагом данные изменения должны быть отправлены в хранилище. Выберите добавленную папку/файл и выполните команду "Отправить изменения в хранилище Отправить изменения в хранилище".

Отправка в хранилище

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

После отправки текущих изменений в хранилище соответствующие папки и файлы помечаются значком Нет изменений. Это означает, что локальная копия данных не отличается от той, что находилась в хранилище на момент последней отправки/получения изменений.

  • Если папка аналогичная добавляемой уже существует в хранилище, вы увидите ошибку вида "Folder already exists, update it from storage". В таком случае для этой папки необходимо выполнить команду "Получить обновления из хранилища Получить обновления из хранилища". После этого она будет привязана к хранилищу, и в нее будут добавлены данные из хранилища. Далее вы сможете отправить собственные изменения в хранилище командой "Отправить изменения в хранилище Отправить изменения в хранилище".
  • Если размер файла превышает 1МБ, в диалоге отправки изменений в хранилище с него автоматически снимается выделение. Следует внимательно относится к загрузке больших файлов во избежание чрезмерной нагрузки на систему хранения.

Извлечение из хранилища

Еще одним способом связывания локальной папки с аналогичной папкой в хранилище является выполнение команды "Получить файлы из хранилища Получить файлы из хранилища". Однако в данном случае содержимое загружается в локальную папку из аналогичной папки в хранилище.

Получение данных из хранилища

  • Отдельные файлы не могу быть извлечены из хранилища. Извлечь можно только папку, находящуюся в корневой директории /MQL4 или /MQL5, или саму корневую директорию /MQL4 или /MQL5.
  • Если выбранная папка не существует в хранилище по такому же пути, при выполнении команды "Получить файлы из хранилища Получить файлы из хранилища" вы получите ошибку вида 'Target path does not exist'. В таком случае следует добавить папку командой "Добавить в хранилище Добавить в хранилище".
  • Если локальная папка содержит данные, то при извлечении они будут дополнены данными, полученными из хранилища. Новые файлы будут добавлены. Для файлов с совпадающими именами и путями будет проведена попытка слияния данных.

Обновление данных из хранилища

Для получения последней ревизии данных из хранилища, необходимо выбрать папку или файл и выполнить команду "Получить обновления из хранилища Получить обновления из хранилища".

Обновление данных

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

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

Обновление до ревизии

MQL5 Storage сохраняет всю историю изменений, отправленных пользователем в хранилище. Каждая транзакция изменений — это новая ревизия (состояние хранилища на определенный момент времени). При параллельной работе нескольких пользователей с данными через хранилище вам необходимо периодически получать изменения, сделанные другими пользователями. Команда "Обновить до ревизии Обновить до ревизии" позволяет поэтапно обновлять локальную копию данных из хранилища.

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

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

Обновление до ревизии

В открывшемся окне выберите необходимую ревизию и выполните команду "Обновить до ревизии Обновить до ревизии".

  • Локальную копию данных можно обновить только до более старшей (поздней) ревизии.
  • Локальная копия данных дополняется данными, полученными из хранилища. Для файлов с совпадающими именами и путями будет проведена попытка слияния данных. Если в ревизию были добавлены файлы, они добавятся в локальную копию. Если в ревизии были удалены файлы, они также будут удалены из локальной копии.

Откат к ревизии

MQL5 Storage сохраняет всю историю изменений, отправленных пользователем в хранилище. Каждая транзакция изменений — это новая ревизия (состояние хранилища на определенный момент времени). В любой момент пользователь может вернуться к одному из предыдущих состояний файла или папки.

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

Откат к ревизии

В открывшемся окна выберите необходимую ревизию и нажмите "Откатиться к ревизии Откатиться к ревизии".

После отката к ревизии выбранный файл/папка будет полностью возвращена к указанному состоянию. Откат возможен как на более ранние, так и на более поздние ревизии.

Фиксация изменений в хранилище

Как уже указывалось ранее, вся работа с данными осуществляется в их локальной копии. Для переноса локальных изменений в хранилище используется команда "Отправить изменения в хранилище Отправить изменения в хранилище". Файлы и папки, в которых сделаны изменения относительно копии, хранящейся в хранилище, помечаются иконкой Изменен.

Перед фиксацией изменений вы можете их просмотреть, выбрав файл и выполнив команду "Изменения Сравнить ревизии" в контекстном меню.

Отправка в хранилище

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

  • Локальные изменения имеют больший приоритет, они в любом случае добавляются в хранилище.
  • Если номер ревизии данных в хранилище выше номера локальной ревизии (внесены изменения из другого источника и локальные данные не обновлены из хранилища), то при попытке фиксации изменений вы получите ошибку вида "Out of date". В таком случае сначала выполните команду "Получить обновления из хранилища Получить обновления из хранилища" для слияния данных, а затем "Отправить изменения в хранилище Отправить изменения в хранилище".
  • Будьте внимательны при обновлении файлов bmp и wav. При слиянии такие файлы полностью заменяются версией из старшей ревизии. Таким образом, при обновлении они могут быть заменены файлами из хранилища. Во избежание подобных ситуаций, сохраните копии этих файлов отдельно, выполните команду "Получить обновления из хранилища Получить обновления из хранилища" для поднятия номера локальной ревизии, перенесите ранее скопированные файлы обратно и зафиксируйте изменения в хранилище.

Удаление

Если требуется удалить файл или папку, выполните команду "Удалить из хранилища Удалить из хранилища". При этом папка/файл будет удален из локальной копии данных. Чтобы произвести удаление из хранилища, отправьте эти изменения командой "Отправить изменения в хранилище Отправить изменения в хранилище".

  • Удаление файла или папки стандартной командой "Удалить Удалить" окна "Навигатор" не влияет на хранилище MQL5 Storage. При последующем обновлении из хранилища, удаленные данные будут восстановлены.
  • Невозможно удалить корневой каталог, привязанный к хранилищу.

Откат изменений

Если требуется отменить изменения, сделанные в текущей локальной копии данных, выполните команду "Отменить изменения из этой ревизии Отменить изменения из этой ревизии" для необходимой папки или файла. После этого файл/папка будет возвращена к состоянию, которое было сохранено локально при предыдущей синхронизации данных с хранилищем.

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

Журнал изменений

Каждая фиксация изменений в хранилище командой "Отправить изменения в хранилище Отправить изменения в хранилище" записывается в журнал. Это позволяет легко анализировать историю изменений того или иного проекта. Чтобы просмотреть журнал изменений файла/папки, выполните для нее команду "Журнал Показать журнал изменений".

Просмотр журнала

В верхней части отображается список изменений:

  • Ревизия — уникальный номер фиксации изменений;
  • Автор — имя пользователя (совпадает с логином аккаунта на MQL5.community), который внес данные изменения;
  • Дата — дата фиксации изменений в формате UTC;
  • Комментарий — комментарий к изменениям.

При помощи команды контекстного меню "Обновить до ревизии Обновить до ревизии" вы можете обновить локальную копию данных до выбранной ревизии.

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

  • Добавлен — файл добавлен;
  • Изменен — файл изменен;
  • Удален — файл удален.

При помощи контекстного меню списка измененных файлов можно осуществлять анализ изменений:

  • Сравнить с рабочей копией Сравнить с текущей копией — сравнить выбранный файл с рабочей копией этого файла.
  • Сравнить с предыдущей ревизией Сравнить с предыдущей ревизией — сравнить выбранный файл с его предыдущей ревизией.
  • Сравнить ревизии Сравнить ревизии — сравнить две ревизии файла, предварительно выбрав их в верхней части окна.