MT4でも Visual Studio を使ってMQL4用のdllを作成できます。
ただ、MQL4がC言語的なのでいくつか気を配る必要があり、またVisual Studio がアップグレードされているためにやり方が微妙に異なったりします。
MQL4 dll
ここでは Visual Studio 2017 を使用しました。
Visual Stuido 2022 はこちらで、これから始めるなら2022の方が簡単です
新規プロジェクト
スタートページあるいは
メニューの「ファイル」「新規作成」「プロジェクト」から
新しいくプロジェクトを作成します。
「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) ファイルは未作成なので、
装飾された関数名で関数が保持されていることになります。
- MQL4 dll を Visual Studio 2022 で作成
- MQL4 dll を作成 (Visual Studio 2017編)
- MQL4 dll から複数の値を戻す方法
- MQL4 dllから文字列を戻す