Справка по MetaEditorПроекты и MQL5 StorageРабота с хранилищем

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

Хранилище MQL5 Storage работает только с папкой MQL5 (или MQL4) торговой плтатформы, а также со специальным каталогом Shared Projects, предназначенным для групповых проектов.

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

Меню MQL5 Storage

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

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

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

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

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

Версионное хранение данных

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

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

Общая схема работы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Извлечение данных и получение обновлений из хранилища #

Первичное извлечение данных происходит при активации хранилища в MetaEditor. После того, как вы выполните команду "Активировать MQL5 Storage Активировать MQL5 Storage", MetaEditor поверит наличие данных в вашем хранилище.

  • Если в хранилище есть данные из каталога MQL5 (MQL4), они будут сразу же загружены на компьютер.
  • Если в хранилище есть доступные групповые проекты, они отобразятся в разделе "Shared Projects". Чтобы загрузить файлы проекта на локальный компьютер, нажмите "Получить обновления из хранилища Получить обновления из хранилища" в его контекстном меню.

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

Если в хранилище есть папки, которых еще нет в вашей рабочей копии данных, выполните команду "Получить обновления из хранилища" на корневом элементе "MQL5" (или "MQL4") в окне "Навигатор". Все данные из хранилища будут загружены в соответствующие локальные папки. Все данные будут иметь ту же ревизию, что и данные в хранилище.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Удаление #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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