見出し画像

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

作成日:2025.01.29
更新日:2025.02.18

はじめに

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

  1. 開発用PC

  2. 取引口座

  3. 使っているエディタ

  4. フォント

  5. ソースコード管理

  6. ソースコード整形

  7. シェルの設定

  8. Vimの設定

  9. その他

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

1.開発用PC

開発に使用しているPCは、Intel版MacBook Airの2020年モデルです。スペックは以下の通りです。キーボードはUS配列です。

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

このMacBookの技術仕様については、こちらを参照してください。CPU、メモリ、SSD、キーボードはカスタマイズしています。今どきのPCと比較すると、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
    行をマークして、その行にジャンプできる。

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

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

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

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

  • IntelliCode
    TypeScript/JavaScriptおよびPythonが対象。機械学習に基づいてコード補する。

  • IntelliCode API Usage Examples
    TypeScript/JavaScriptおよびPythonが対象。ワンクリックで10万以上のAPIの使用例にアクセスできる。

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

  • 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++と似た文法なので、大体うまく行きます。

私が使っている範囲では、日付指定を「D」から始まりシングルクォーテーションで囲む日付時刻定数がNGでした。例えば「D'31.12.3000 23:59:59'」という記述です。整形すると「D」とシングルクォーテーションの間にスペースが入ってしまい、コンパイルエラーになります。これ以外は大丈夫でした。

対処する方法は、日付時刻定数の部分を「// clang-format off」と「// clang-format on」で挟み込んで、整形対象から外します。以下のように記述します。

// clang-format off
// 囲まれた部分は整形しない。以下のケースは整形しては駄目。
#define END_TIME D'31.12.3000 23:59:59'
// 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上で使っている開発関連のアプリケーションを洗い出してみました。

ブラウザ       → Safari、Chrome
オフィスソフト    → LibreOffice
付箋         → スティッキーズ
ウィルス対策     → BitDefender 、VirusBarrier
VPN           → ProtonVPN
FTPクライント       → FileZilla
クリーナーソフト   → AppCleaner
メッセージングアプリ → LINE、Discord 
    ⋮           ⋮

最後に

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はWineskinで動かしています。詳細は以下の記事を参考にしてください。

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
よろしければ応援お願いします!

ピックアップされています

MetaTraderの備忘録

  • 9本

コメント

ログイン または 会員登録 するとコメントできます。
macOSでのMQLの開発環境について|SORA PAPA
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1