見出し画像

macOSでのMQLの開発環境について

  • 更新履歴:

    • 2025/01/29:新規作成

    • 2025/05/22:誤字および一部表現修正

    • 2025/08/15:KegworksをSikarugirに変更

    • 2025/08/21:

      • 「1.開発用PC」macOSのバージョンを15.6.1に修正

      • 過去のOSのバージョン更新履歴を削除

    • 2025/09/16:「1.開発用PC」macOSのバージョンを15.7に修正

    • 2025/09/30:「1.開発用PC」macOSのバージョンを15.7.1に修正

    • 2025/11/04:「1.開発用PC」macOSのバージョンを15.7.2に修正

    • 2025/11/30:VSCode拡張機能を最新の利用状況を反映して更新

    • 2025/12/13:「1.開発用PC」macOSのバージョンを15.7.3に修正

    • 2026/02/12:「1.開発用PC」macOSのバージョンを15.7.4に修正

    • 2026/03/09:VSCode拡張機能を最新の利用状況を反映して更新

    • 2026/03/27:「1.開発用PC」macOSのバージョンを15.7.5に修正

    • 2026/05/12:

      • 「1.開発用PC」macOSのバージョンを15.7.7に修正

      • 「9.その他」AI開発環境としてAntigravityを追加

    • 2026/05/20:Anitigravity 2.0 に伴う修正

    • 2026/07/06:開発用PCの変更


はじめに

本記事では、私が利用しているMQLの開発環境の以下の点について紹介します。MQLとは「MetaQuotes Language」の略で、MetaTraderのプログラミング言語です。(「MetaTrader」を「MT」と記載することがあります。「MT4」「MT5」のようにバージョンを付けることもあります。)

  1. 開発用PC

  2. 取引口座

  3. 使っているエディタ

  4. フォント

  5. ソースコード管理

  6. ソースコード整形

  7. シェルの設定

  8. Vimの設定

  9. その他

参考までに、どんな風に開発しているのかについて、記事の最後に紹介しました。興味のある方はご覧ください。

1.開発用PC

現在、開発に使用しているメインPCは、MacBook Air (M5) です。キーボードはJIS配列を選択しています。スペックは以下の通りです。

チップ :Apple M5(10コア:高性能 4 / 高効率 6)
メモリ :32GB
SSD  :1TB
OS    :macOS Tahoe 26.5.2

このMacBookの技術仕様については、こちらを参照してください。

(参考)以前の開発環境
以前まで開発用として使用していた、2020年モデルの Intel版MacBook Air の情報も参考までに残しておきます。キーボードはUS配列にカスタマイズしていました。

CPU :1.2 GHz クアッドコアIntel Core i7
メモリ:16GB
SSD :512GB
OS   :macOS Sequoia 15.7.7

詳細な技術仕様については、こちらを参照してください。CPU、メモリ、SSD、キーボードをそれぞれカスタマイズして購入したものです。現在のApple Silicon(Mシリーズ)搭載モデルと比較すると、CPUの処理性能はかなり控えめ(ロースペック)に感じられます。

2.取引口座

使用する取引口座を選ぶ場合、期間に縛りのないデモ環境、スプレッド、1週間が日足5本、プラットフォームの安定性、証券会社の安全性などを考慮する必要があります。また、サーバー時間は海外で一般的なGMT+2またはGMT+3であれば、海外と同じチャートの見え方になります。

私の使用している取引口座は以下の通りです。

本番用口座:楽天MT4
開発用口座:楽天MT4のデモ口座、
XMTrading MT5のデモ口座

楽天MT4は上記の条件を満たしていますが、EAから複数ポジションを連続で約定させる場合には、1つの約定(OrderSendやOrderClose)に2秒程度かかってしまうようなので注意が必要です。

そろそろ楽天証券もMT5をサポートしてくれないでしょうかね…

3.使っているエディタ

コーディング用

コーディングには、MicrosoftのVisual Studio Code(VSCode)を使用しています。最初はCotEditorでコーディングしていましたが、現在はVSCodeを使用しています。VSCodeは無料とは思えない優秀なエディタだと思います。CotEditorもシンプルで優れたエディタです。

VSCodde には、以下の拡張機能をインストールしています。

  • Bookmarks
    行をマークして、その行にジャンプできる。

  • Compare Folders
    フォルダーを比較して差分を表示できる。

  • Gemini CLI Companion
    VSCodeからGemini CLIを便利に使うことができる。

  • Git Graph
    リポジトリのGitグラフを表示し、グラフから簡単にGitアクションを実行できる。

  • Git History
    Git履歴確認をGUIで直感的に行える。

  • GitHub Copilot Chat
    コーディング作業に特化した対話型のAIアシスタント

  • GitLens — Git supercharged
    Gitの各種操作をしやすくする。リポジトリの状態、ブランチ管理を視覚的に行える。

  • indent-rainbow
    インデントを読みやすくする。

  • Japanese Language Pack for Visual Studio Code
    VSCodeのUIを日本語化する。

  • Markdown All in One
    Markdownを記述する際の便利機能を提供する。

  • Markdown Preview Enhanced
    マークダウンのプレビュー拡張機能です。

  • MQL4 Syntax Highlight
    MQL4と5の構文をハイライトする。

  • Pine Script Syntax Highlighter
    Pine Scriptの構文をハイライトする。

  • Print
    印刷機能を提供する。

  • Rainbow CSV
    CSVファイルをデータ項目の色付けなどで見やすくする。

  • vscode-pdf
    PDFを表示する。

  • zenkaku
    全角スペースを視覚化する。

印刷&メモ帳用

VSCodeは優秀ですが、印刷は拡張機能を使ってもショボいため、CotEditorを使っています。またVSCodeの起動は少し遅いので、メモ帳的な使い方にもCotEditorを使っています。

4.フォント

VSCode、CotEditorおよびMetaEditorのフォントには、日本語等幅フォントのPlemolJPを使用しています。

VSCodeでは、フォントファミリーに「PlemolJP HS Text」 を指定して少し太めに、CotEditorは標準の「PlemolJP HS Regular」を指定しています。

MetaTraderのEAやインジケーターで等幅フォントが必要な場合は、Moralerspaceを使っています。指定しているフォント名は「Moralerspace Xenon HWJPDOC」です。

これらのフォントは、macOSに登録するだけでOKです。つまり「/System/Library/Fonts」フォルダ配下、あるいは「~/Library/Fonts」フォルダ配下に展開済みのフォントファイルを置くだけです。MetaTraderやMetaEditorでも使えます。

5.ソースコード管理

ソースコード管理にはGitを使用しており、個人で履歴を管理しています。複数人での共同作業は行いませんが、GitHubと連携しています。実際には、ノンベアディレクトリだけでも十分な運用が可能です。

大体の操作は、VSCodeの拡張機能のGit GraphやGit Lensで行っています。

6.ソースコード整形

ソースコードの整形は、ClangFormatを使用しています。HomeBrewを使ってインストールします。

brew install clang-format

このソースコード整形ツールは、主にC++を対象としていますが、MQL4やMQL5はC++と似た文法を持つため、概ね問題なく動作します。ただし、私が使用した範囲では、以下の 3 点で問題が発生しました。

  1. 日付型の値の指定
    「D」から始まり、シングルクォーテーションで囲んだ日付時刻の指定方法がNGでした。例えば「D'31.12.3000 23:59:59'」という記述です。整形処理を行うと、「D」とシングルクォーテーションの間にスペースが挿入され、コンパイルエラーが発生します。

  2. カラー型の値の指定
    RGB形式で、「C」から始まりシングルクォーテーションで囲んだカラー値を指定した場合がNGでした。例えば「C'255, 0, 0'」という記述です。これも日付型の値の指定と同様にコンパイルエラーが発生します。

  3. ファイルの文字コード
    整形対象のファイルがUTF-16 LEに対応していませんでした。これに対処するため、UTF-8に統一して使用します。MetaTraderでファイルを保存すると、UTF-16 LE形式になる場合があり、注意が必要です。

 上記の1.と2.に対処するため、日付時刻指定やカラー指定の部分を「// clang-format off」と「// clang-format on」で囲み、整形対象から除外します。以下のように記述します。

// clang-format off
// 囲まれた部分は整形しない。以下のケースは整形しては駄目。
#define END_TIME D'31.12.3000 23:59:59'
#define MY_RED C'255, 0, 0'
// clang-format on

ClangFormatをMQL4やMQL5のソースコードに対して実行するときは、以下のシェルスクリプトを使っています。VSCodeの拡張機能のClang-Formatは使っていません。

#!/bin/bash
/usr/local/bin/clang-format -i -style="{BasedOnStyle: Google, ColumnLimit: 220, AlignConsecutiveAssignments: true, AlignTrailingComments: true, AllowShortFunctionsOnASingleLine: false, SortIncludes: false}" $*

スタイルの指定方法については、こちらを参考してください。なお、列数が220と結構長いです。理由としては、input変数がコメントまで含めると長くなることが多く、これを折り返してしまうとプロパティ表示に影響するからです。

7.シェルの設定

シェルはzshを使っていますので、その設定を紹介します。

.zprofileの設定は、個人用のbinフォルダへのパス追加と、最小限のaliasを指定しています。

# add my exec path
export PATH=~/bin:$PATH

# aliases
alias ls='ls -F'
alias ll='ls -alF'
alias pu='pushd'
alias po='popd'
alias so='source'
alias rm='rm -i'

.zshrcの設定では、プロンプトは2行表示、時刻はコマンド実行すると開始時刻に書き換わるようにしています。余分な履歴は不要なので、重複は保存しない、そしてエラーも残さないようにしています。また、長くて面倒なコマンドはaliasに追加しています。具体的には以下の設定です。

# prompt
re-prompt() {
  zle .reset-prompt
  zle .accept-line
}
zle -N accept-line re-prompt
# black background
#PROMPT='%F{white}%L%f %F{yellow}%D{%H:%M:%S}%f %F{green}%n@%m%f %F{cyan}%~%f
# white background
PROMPT='%F{black}%L%f %F{magenta}%D{%H:%M:%S}%f %F{green}%n@%m%f %F{blue}%~%f
$ '

# history
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt hist_ignore_all_dups
setopt hist_ignore_dups
setopt share_history
setopt inc_append_history
setopt hist_no_store
setopt hist_reduce_blanks
setopt hist_ignore_space
#setopt auto_pushd
#setopt pushd_ignore_dups

# remove error history if not needed
autoload -Uz add-zsh-hook
remove_last_history_if_not_needed () {
  local last_status="$?"
  local HISTFILE=~/.zsh_history
  if [[ ${last_status} -ne 0 ]]; then
    fc -W
    ed -s ${HISTFILE} <<EOF >/dev/null
d
w
q
EOF
    fc -R
  fi
}
add-zsh-hook precmd remove_last_history_if_not_needed

# aliases for development
alias ced='open $1 -a "/Applications/CotEditor.app"'
alias go-mt='cd ~/MySpace/FX/MT/SourceCode/Master'
alias dev-mt='go-mt;code .;'
alias pine='cd ~/MySpace/FX/TradingView/PineScript;code .'

以下が実際の画面です。

zshの画面例

これらは、以下のサイトを参考にして作成しました。

8.Vimの設定

Vimの設定も紹介しておきます。.vimrcの設定は以下のサイトを参考にして、ほぼそのままで使用しています。

9.その他

その他にMac上で使っている開発関連のアプリケーションを洗い出してみました。

$$
\small
\begin{array}{|c|l|} \hline
\\[-0.8em] \textnormal{ブラウザ} & \textnormal{Safari, Chrome} \\ \hline
\\[-0.8em]\textnormal{AI開発環境} & \begin{matrix*}[l] \textnormal{Claude} \\ \textnormal{Antigravity, Anitigravity IDE, Anitigravity CLI} \end{matrix*} \\ \hline
\\[-0.8em] \textnormal{オフィスソフト} & \textnormal{LibreOffice} \\ \hline
\\[-0.8em] \textnormal{付箋} & \textnormal{スティッキーズ} \\ \hline
\\[-0.8em] \textnormal{ウイルス対策} & \textnormal{VirusBarrier} \\ \hline
\\[-0.8em] \textnormal{VPN} & \textnormal{ProtonVPN} \\ \hline
\\[-0.8em] \textnormal{FTPクライント} & \textnormal{FileZilla} \\ \hline
\\[-0.8em] \textnormal{クリーナーソフト} & \textnormal{AppCleaner} \\ \hline
\\[-0.8em] \textnormal{メッセージングアプリ} & \textnormal{LINE, Discord} \\ \hline
\\[-0.8em]\textnormal{︙} & \textnormal{  ︙} \\ \hline
\end{array}
$$

最後に

MetaTraderの開発環境の紹介は以上になります。全部を書ききれていませんが、少しでも役立つことがあれば幸いです。

MacBookを購入した約半年後にM1 MacBook Airが登場したので、結構ショックでした。でも、M1 MacBook Airは、各種アプリケーションがApple Silicon対応するのに時間がかかりました。

なので「まだまだ実用にはIntel版でしょ!」と、しばらくは自分を納得させてきました。まるでイソップ寓話の「狐と葡萄」ですね。

しかし、あっという間にApple Siliconの時代になりました……(T_T)

1kg以下のMacBookを待っていますが、出ないのかぁ…
諦めてApple Siliconに買い替えるかなぁ…

それでは、また。


参考:どんな風に開発しているのか?

Mac上の開発ではMT5をメインに使っています。バックテストの処理速度が圧倒的に高いからです。本番およびフォワードテストは安定稼働を確保したいので、Windows PC上のMT4で行っています。つまり開発環境はMacで、運用はWindows PCというクロス環境です。

Mac上のMetaTraderはSikarugirで動かしています。詳細は以下の記事を参考にしてください。

MacとWindows PC間の運用で困りそうな点については、以下の記事で紹介しています。参考になるかもしれません。

それで開発の流れはどうなっているかというと、以下のような感じで行っています。

MetaTraderは統合開発環境の機能を持っているので、MetaTraderだけで開発を完結することができます。しかし私の場合、MT4とMT5でのクロス開発ということもあり、本記事で紹介したMetaTrader以外のツールも使って開発しています。

Mac上のソースコード管理フォルダ配下でコード作成

Mac上のMT4とMT5のデータフォルダにファイルをコピー

Mac上のMT4のデモ口座でコンパイル&簡単な動作確認

Mac上のMT5のデモ口座でコンパイル&動作確認

Mac上のMT5のデモ口座でバックテスト

Windows上のMT4のデータフォルダにMac上のファイルをアップロード

Windows上のMT4のデモ口座でコンパイル&フォワードテスト

Windows上のMT4のリアル口座で本番運用

MT4とMT5でのクロス開発となるため、ソースコードは可能な限り、MQL4とMQL5で共通のコードを記述するようにしています。


いいなと思ったら応援しよう!

SORA PAPA よろしければ応援お願いします!