MetaEditorのヘルプ → プロジェクトおよびMQL5ストレージ → ストレージの活用

MQL5 Algo Forgeでの作業

MQL5 Algo Forgeは、MetaEditorに組み込まれた、Gitベースのバージョン管理およびストレージ機能です。主にMQL5フォルダ(すべてのアルゴリズムを含む)と、すべての公開プロジェクトを格納する専用のShared Projectsディレクトリを中心に機能します。

Gitはバージョン管理システムの一つで、ファイルがそれぞれの時点でどのような状態だったかを記録します。重要な変更の損失を防ぎ、簡単にロールバックできるほか、実験用のブランチ作成をサポートし、複数の開発者が同じプロジェクトで共同作業できるようにします。Gitの基本については、公式ドキュメントを学習しておくと役立ちます。

コミット(commit)とは、ある特定の時点におけるファイルの状態を記録したものです。それぞれのコミットには一意の識別子と、変更内容を説明するメッセージが付けられます。プロジェクトの履歴は、コミット、ブランチ、およびそれらの間の関係によって管理されます。

変更がいつ行われたか、誰が変更したか、どのファイルが変更されたか、また各コミットにどのような変更が含まれているかを確認できます。さらに、異なるバージョンのファイルを比較したり、以前のファイルの状態を復元したり、別のブランチに切り替えたり、必要に応じて特定の変更を取り消したりすることもできます。

共有プロジェクトや共同作業スペースで作業する場合は、定期的にPull(プル)することを強く推奨します。これにより、リモート側で行われた変更がローカルのコピーに取り込まれ、競合しない変更であればGitが自動的にマージしてくれます。ただし、2人のユーザーが同じコード行を変更した場合や、互いに両立しない変更を行った場合には、競合が発生することがあります。その場合は、コミットまたはリモートへのPush(プッシュ)を行う前に、競合を解決する必要があります。

基本ワークフロー:

  1. まずリモートから変更をPull(プル)します。作業を開始する際は、ローカルの作業コピーがMQL5 Algo Forgeのリモート版と一致している状態にしてください。
  2. ファイルを編集・変更します。コードを編集したり、新しいファイルを追加したり、バグを修正したり、新しい機能を実装したりします。MetaEditor は変更を自動的に検出します。
  3. 変更をローカルで Commit(コミット)します。利便性のため、MetaEditor は追加したコミットを自動的にリモートへ Push(プッシュ)します。

始め方 #

MetaEditorにMQL5.communityアカウントでログインしていることを確認してください。Gitが有効になっているディレクトリで作業を開始するには、次のいずれかを行います。

  • 次のコマンドを使用してファイル/フォルダをGitに追加します。対象は、MQL5フォルダ内にあり、Shared Projectsの外側にあるファイルまたはフォルダです。新しいコミットがMQL5リポジトリに作成されます。
  • 新しいプロジェクトを作成します。作成場所は Shared Projectsです。新しいプロジェクトは、MQL5 Algo ForgeのWebサイト上で、あなたのアカウントの下に独立したリポジトリとして表示されます。
  • 公開プロジェクトをフォークするには、MQL5 Algo ForgeのWebサイトで行い、その後MetaEditorでクローンします。プロジェクトのすべてのファイルがShared Projectsの下に表示されます。

Git はコマンドラインプログラムですが、MetaEditorではクリック操作によってGitを便利に利用できるインターフェースが提供されています。Gitコマンドには、さまざまな場所からアクセスできます。

1. ナビゲータ内のファイル/フォルダを右クリックします。

ファイル/フォルダのコンテキストメニュー

2. タブを右クリックします。

タブのコンテキストメニュー

3. コードエディタ内の任意のテキストまたは空白部分を右クリックします。

コードエディタのコンテキストメニュー

4. 上部メニューで[Git]をクリックします。

上部メニューのGitオプション

これらのコマンドを使用すると、Gitの操作を実行し、MQL5 Algo Forgeと連携できます。

  • Git Pull - リモートから最新バージョンまたは変更を取得します。Gitはサーバーから最新のコミットをダウンロードし、それらをローカルプロジェクトにマージします。
  • Git Push — ローカルの変更をリモートへ送信します。MetaEditor は各Git Commitの後に自動的にGit Pushを実行しますが、自動プッシュに失敗した場合は手動で実行することもできます。
  • Git Commit - プロジェクトの現在の状態をバージョン履歴に保存し、MetaEditorが自動的に変更をリモートへプッシュします。コミットはチェックポイントとして機能し、必要に応じて後からそのバージョンに戻ることができます。
  • Git Add File/Folde - フォルダ全体または特定のファイルをステージングに追加し、MetaEditorが自動的に変更をリモートへプッシュします。
  • Git Difference - コミットする前に、ステージングされている変更済みファイルを確認します。比較パネルには、追加、削除、または変更された行が表示されます。
  • Git Revert — まだコミットされていない、ステージング済みの変更を削除します。
  • Git Log - すべてのコミットを、その日付、作成者、コミットメッセージとともに表示します。これにより、誰が、何を、いつ変更したのかを追跡できます。
  • Git Branch - 新しいブランチを作成したり、ブランチを切り替えたりするためのメニューを表示します。各ブランチは独立した開発ラインであり、テストに使用した後、不要になれば破棄したり、メインブランチにマージしたりできます。

ファイルの追加 #

ローカルのフォルダまたはファイルをMQL5リポジトリに追加するには、それを右クリックして[Git Add File/Folder]を選択します。追加するファイルの一覧を表示するダイアログボックスが表示されます。

  • MetaEditor はGitに適したファイルを自動的に選択し、バイナリファイルなどの項目を除外します。
  • Gitはフォルダではなく、ファイルを追跡します。フォルダをリポジトリに追加すると、Gitはその中にあるファイルを追加します。
  • 空のフォルダには追跡対象となるファイルがないため、追加することはできません。

フォルダをストレージに追加する

追加するファイルが選択されていることを確認し、[OK]をクリックします。MetaEditorはコミットによってファイルを追加し、そのコミットを直ちにリモートへプッシュします。

追加された(追跡対象となった)ファイルはNo changesと表示されます。

ファイルまたはフォルダの追加

ブランチの作成 #

ブランチは、安定したコードベースに影響を与えることなく、新しい機能や修正を安全に開発できる並行したサンドボックスとして機能します。新しいブランチでの作業が完了し、十分にテストしたら、そのブランチをメインプロジェクトにマージできます。

ファイル/フォルダを右クリックし、[Git Branch]を選択して[New]を選びます。表示されたダイアログでブランチ名を入力し、[OK]をクリックします。

新しいブランチの作成

その後、新しいブランチに切り替えて、そこで作業を開始できます。

ブランチの切り替え #

ブランチを切り替えることで、リポジトリ内の異なるサンドボックスやタイムラインの間を安全に移動できます。選択したブランチの正確な状態に合わせて、作業中のファイルが即座に更新されます。

ファイル/フォルダを右クリックし、[Git Branch]を選択します。ブランチの一覧から、切り替えたいブランチを選択します。

変更のコミット #

変更されたファイルとフォルダは、Changedとして表示されます。

変更されたファイルのマーク

コミットする前に、ファイルを右クリックして[Git Difference]を選択すると、そのファイルの変更内容を確認できます。

ファイルの変更内容

コミットする準備ができたら、ファイル/フォルダを右クリックし、[Git Commit]を選択します。

コミットダイアログでは、コミットする変更済みファイルを選択し、コメントを追加できます。詳細なコメントを残しておくと、将来、変更内容を簡単に分析できるようになります。

ストレージへのコミット

[OK]をクリックすると、MetaEditor が変更をコミットすると同時に、リモートリポジトリにもプッシュします。

コミットとプッシュが正常に完了すると、該当するフォルダとファイルはNo changesとして表示されます。

変更のPull #

共同作業をしている場合、他のユーザーがあなたより先にプロジェクトを更新することがあります。また、あるコンピュータで変更をコミットし、別のコンピュータで作業を続けることもあります。変更をPullすると、ローカルプロジェクトにリモートリポジトリからの最新の更新が確実に反映され、競合を回避するのに役立ちます。

リモート側のすべての変更を取得するには、フォルダを右クリックして[Git Pull]を選択します。[操作ログ]タブには、リモートから取得した具体的な変更内容など、関連するログが自動的に表示されます。

Git操作のログを表示している[操作ログ]タブ

変更を元に戻す #

編集したコードを保存した後やファイルを削除した後でも、変更前の状態にプロジェクトを簡単に復元できます。

ファイル/フォルダに加えた変更を取り消すには、ファイル/フォルダを右クリックし、[Git Revert]を選択します。

複数のファイルに変更があるプロジェクトで変更を取り消すと、ダイアログが開きます。そこで、変更を取り消したいファイルを選択して[OK]をクリックします。

ファイル変更の復元ウィンドウ

すでに取り消したい変更をコミットしている場合は、そのコミットを取り消す操作を行います。

コミットを元に戻す #

特定のコミットによってプログラムが正常に動作しなくなった場合や、そのコミットによる変更が不要になった場合は、その変更をすばやく取り消すことができます。

影響を受けたファイル/フォルダを右クリックし、[Git Log]を選択して、コミット履歴を表示するダイアログを開きます。取り消したいコミットを右クリックし、[Revert to This Revision]を選択します。

コミットを元に戻すウィンドウ

MetaEditor は新しいコミットを作成し、選択したコミットによる変更を反映して取り消します。その際、コミット履歴は保持されます。

ファイルの削除 #

ファイル/フォルダを削除するには、対象を右クリックして[Delete]を選択します。この操作により、ファイル/フォルダがローカルから削除されます。

同じファイル/フォルダをリモートストレージからも確実に削除するには、プロジェクトを更新し、その後削除の変更をコミットします。すべてのコミットと同様に、MetaEditorは削除のコミットを自動的にリモートへプッシュします。

共有プロジェクトの削除 #

Shared Projects内のプロジェクトを削除するには、プロジェクトを右クリックして[Delete Shared Project]を選択します。

ローカルコピーが削除されます。プロジェクトの作成者本人である場合は、リモートコピーも削除されます。

コミット履歴の表示 #

特定のファイル/フォルダのコミット履歴には、コメント、作成者、日付が表示され、ファイル/フォルダが時間の経過とともにどのように変更されたかを追跡できます。

ファイル/フォルダを右クリックし、[Git Log]を選択します。

上部の列には、次の情報が表示されます。

  • コメント — コミットに追加された説明
  • 作成者 — コミットを行ったユーザー(MQL5.community アカウントのログイン名)
  • 日付 — コミットが行われた日時。

コミット履歴ウィンドウ

一覧からコミットをクリックすると、変更、追加、または削除されたファイルが下のセクションに表示されます。

特定のコミットの変更内容ウィンドウ

アイコンは変更の種類を示します。

  • Added— ファイルが追加された
  • Changed— ファイルが変更された
  • Deleted— ファイルが削除された

コミットを右クリックすると、次のオプションが表示されます。

  • Compare with Working Copy — 現在の状態とそのコミットとの差分を表示するウィンドウを開きます。
  • Compare with Previous Revision — 前のコミットと選択したコミットとの差分を表示するウィンドウを開きます。
  • Revert to This Revision — 変更を取り消す特定のコミットで行われた変更を取り消します。