MT4でも Visual Studio を使ってMQL4用のdllを作成できます。
ただ、MQL4がC言語的なのでいくつか気を配る必要があり、またVisual Studio がアップグレードされているためにやり方が微妙に異なったりします。
MQL4 dll
Visual Studio 2017 を使用しました。2022版もあったのですが、日ごろからVisual Studio を扱っている方はそちらでもできると思います。
こちらの記事を参考にさせていただきました。
- 【MT4】いちばん簡単なDLLの作り方
- HOW TO EXCHANGE DATA: A DLL FOR MQL5 IN 10 MINUTES
- f()10分でできるMQL5 のためのDLL (パート II): VISUAL STUDIO 2017で作成
新規プロジェクト
スタートページあるいは
メニューの「ファイル」「新規作成」「プロジェクト」から
新しいくプロジェクトを作成します。
「Visual C++」「Windows デスクトップ」
「ダイナミックリンクライブラリ(DLL) Visual C++」
を選択
プロジェクト名を例として、Test_dll
場所はデフォルトで C¥Users¥source¥repos¥
以下に新しくフォルダ MQL4_dll を作成して保存先を設定します
コードの記述
「ソリューションエキスプローラー」の「ヘッダーファイル」「stdafx.h」を選択
stdafx.h ファイルの最後尾に追加
1 2 3 |
... #define _DLLAPI __declspec(dllexport) |
タブを変えて Test_dll.cpp を選択
テスト用の関数を記述
Test_dll.cpp
1 2 3 4 5 |
... _DLLAPI int Plus(int a, int b){ return(a + b); } |
mq4からの呼び出しはこのようにします
xxx.mq4
1 2 3 4 5 6 7 8 |
#import "Test_dll.dll" int Plus(int a, int b); #import ... void OnTick(){ Print("1+2 =", Plus(1,2)); ... } |
プロパティ設定
メニューの「プロジェクト」「XXXのプロパティ」を選び
「構成プロパティ」「C/C++」「詳細設定」から以下のように設定
- 呼び出し規約
- __stdcall(/Gz)
- コンパイル言語の選択
- Cコードとしてコンパイル(/TC)
- ランタイムライブラリ
- マルチスレッド(/MT)
ソリューションのビルド
「Release」「x86」を設定
「ビルド」「ソリューションのビルド」からビルドする
ビルドが正常終了し、
「出力」にReleaseフォルダ以下に Test_dll.dll が生成されました
dllの確認
MT4のデータフォルダを開き
..¥MQL4¥Libraries¥
以下にTest_dll.dll に配置して mq4 を起動して動作を確認します。
一応MT4では動きますがモジュール定義 (.def) ファイルは未作成なので、
装飾された関数名で関数が保持されていることになります。