MQL4を開発する環境を整える(Notepad++)

プログラミング
この記事は約7分で読めます。
スポンサーリンク

はじめに

MQL4を開発しやすい環境を整えたので、特につまずいた部分を備忘録として残しておきます。

環境は以下の通りです。

  • Wintows10
  • MT4 build 1260
  • Notepad++ v7.8.5

普段使用している VS CodeIntelliJ IDEA も試してみましたが、Notepad++ が最も要求を満たすことができました。

設定内容

コンパイル

Notepad++ からショートカットキーでコンパイルをできるようにします。

まず以下内容のバッチファイルを作成してください。

ログ内容表示.bat を作成します。

type %1

引数で受け取ったファイルの情報を表示させるだけです。

※何故か Notepad++ のコマンド実行で type が認識されなかったのでバッチファイルを作成して実行させることにしています。

次にプラグインの NppExec を導入します。

導入した後、F6キーを押すとコマンドを入力する画面が出るので以下を入力します。

NPP_SAVE
"C:\{MT4インストールフォルダ}\metaeditor.exe" /compile:"$(FULL_CURRENT_PATH)" /log
{先程作成したバッチファイルのパス} "$(CURRENT_DIRECTORY)$(NAME_PART).log"

{MT4インストールフォルダ} と {先程作成したバッチファイルのパス} は適宜変更してください。

OKボタンを押すとコンパイルが実行されます。

Result: 0 errors, 0 warnings, 119 msec elapsed

上記のようなメッセージがコンソールに出力されれば成功です。

もう一度F6キーを押し、内容を保存します。

save > 名前を入力 > save

最後にショートカットの登録を行います。

設定 > ショートカット管理 > プラグインタブ で先程保存した名前がありますので、お好みのショートカットを設定します。

シンタックスハイライト

構文によって文字の色を変える設定をします。

基本的には下記サイトを参考にさせて頂きました。

NotePad++でmq4ファイルをMetaEditor風にシンタックスハイライトする方法 - MT4 EA開発・運用ブログ
前々回の記事では、MQL4言語のソースコードをWeb上でハイライト表示する方法をご紹介しました。 今回は、Notepad++でmq4ファイルをMetaEditor風にシンタックスハイライトする方法をご紹介します。 手順はとっても簡単で、ハイライト用の定義ファイル(xml)を読み込むだけです。 MQL4用の定義...

コード補完

MQL4でデフォルト定義されている関数等を最初の何文字かを入力することで自動的に補完するようにする設定をします。

基本的には下記サイトを参考にさせて頂きました。

NotePad++でMetaEditor風にMQL4言語の関数を自動補完する方法 - MT4 EA開発・運用ブログ
MetaEditorの自動補完と同じような機能をNotepad++に実装する方法をご紹介します。 手順はとっても簡単で自動補完用の定義ファイル(mql4.xml)をAPIsディレクトリに設置するだけです。 MQL4用の定義ファイルを作るのは大変ですが。。。 まず下記内容をコピーし、mql4.xmlの名前で...

一部違うところがありましたので、その部分だけ記載いたします。

作成した mql4.xml の配置場所は以下になります。

C:\Program Files\Notepad++\autoCompletion

MQL4のヘルプ表示

MQL4でデフォルト定義されている関数等にカーソルがある際に指定したショートカットキーを押すことでヘルプが出るようにします。

まずはプラグインの LanguageHelp を導入します。

次に設定です。

プラグイン > Language Help > Options… > Add…

Name: mql4
Extension/file mask: *.mq4;*.mqh
Extended help file path: C:\Users\{ユーザ名}\AppData\Roaming\MetaQuotes\Terminal\Help\mql4.chm

{ユーザ名} は適宜変更してください。

この段階でテストボタンを押下してヘルプが開くことを確認すると良いかと思います。

最後にショートカットの登録を行います。

設定 > ショートカット管理 > プラグインタブ > Help(プラグイン列が LanguageHelp.dll になっているもの)

関数リストの表示

表示 > 関数リスト をチェックした際に右側に表示されますが、最初は中身が空っぽになっているので、表示できるように設定をします。

以下ファイルの編集を行います。

C:\Users\{ユーザ名}\AppData\Roaming\Notepad++/functionList.xml

修正箇所は2箇所です。

associationMap タグ内に以下を追加する。

<association id= "mql4_function" userDefinedLangName="MQL4" />

parsers タグ内に以下を追加する。

<parser
displayName="MQL4"
id ="mql4_function"
commentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)"
>
<classRange
mainExpr ="^[\t\x20]*(class|struct)[\t\x20]+\w+\s*(final)?\s*(:\s*(public|protected|private)\s+\w+\s*)?\{"
openSymbole ="\{"
closeSymbole="\}"
>
<className>
<nameExpr expr="(class|struct)[\t\x20]+\w+" />
<nameExpr expr="[\t\x20]+\w+" />
<nameExpr expr="\w+" />
</className>
<function
mainExpr="^[\t\x20]*((static|const|virtual)\s+)?(\w+(\s+\w+)?(\s+|(\*|\*\*|&)\s+|\s+(\*|\*\*|&)|\s+(\*|\*\*|&)\s+))?(\w+\s*::)?(?!(if|while|for|switch))[\w~]+\s*\([^\)\(]*\)(\s*const\s*)?(\s*(final|override|final\s*override|override\s*final)\s*)?[\n\s]*\{"
>
<functionName>
<funcNameExpr expr="(?!(if|while|for|switch))[\w~]+\s*\(" />
<funcNameExpr expr="(?!(if|while|for|switch))[\w~]+" />
</functionName>
</function>
</classRange>
<function
mainExpr="^[\t\x20]*((static|const|virtual)\s+)?\w+(\s+\w+)?(\s+|(\*|\*\*|&)\s+|\s+(\*|\*\*|&)|\s+(\*|\*\*|&)\s+)(\w+\s*::)?(?!(if|while|for))\w+\s*\([^\)\(]*\)(\s*const\s*)?[\n\s]*\{"
>
<functionName>
<nameExpr expr="(?!(if|while|for))\w+\s*\(" />
<nameExpr expr="(?!(if|while|for))\w+" />
</functionName>
<className>
<nameExpr expr="\w+(?=\s*::)" />
</className>
</function>
</parser>

Notepad++ を再起動すると関数リスト内に関数が表示されているかと思います。

mqhファイル(MQL4の共通処理を集めたファイル)を自作している方は下記設定を行うことで同様に関数リストに表示されるようになります。

言語 > ユーザー定義 > 言語を定義…

言語名をMQL4に変更します。

拡張子の入力欄に mq4 だけ入力されていると思いますが、以下に変更してください。

mq4 mqh

コードフォーマット

インデント等をショートカットキーを押すことでフォーマットできるように設定します。

まずはプラグインの Indent By Fold を導入します。

そしてショートカットの登録を行います。

設定 > ショートカット管理 > プラグインタブ > Reindent File

課題

現時点での改善したいポイントを書いておきます。

ワークスペース上での指定ファイル非表示

現状、ex4ファイルやlogファイルまで表示されてしまっていて、大変邪魔なので表示させないようにしたい。

コメント

タイトルとURLをコピーしました