コラム 簡単だと思っていたら結構はまったDLL Nozomu.Kon 2016年4月6日 / 2017年7月28日 今回、ご縁があってMetaTrader4の外部DLLを作成するお仕事をいただきました。 普段ふれることが少ないツールのDLLを作成するなかで確認できたことを書いておきます。 MetaTrader4とは? FX(外貨証拠金取引)において自動売買を手伝ってくれるツールです。通称はMT4のようですね。その中で自動売買のサインやタイミングを知らせるEA(Expert Advisor)をオリジナルで作ることができます。 MT4にはMQLと呼ばれるプログラム言語が搭載されていますので、MT4単独でオリジナルEAを作成することができます。MQLはC++ライクな言語らしく、言語表現もC++に似ています。また、C/C++で作成したDLLをインポートする機能も備わっています。 DLLインポートは、処理速度を要求される課題(もしくはMQL単独では解決し難い課題)において、C++で作成したDLLをリンクして処理するようです。 はまったこと MQLのリファレンスを読みますと作成したDLLの配置場所は[…\MQL\Experts/Libraries」になっています。しかし、こちらに作成したDLLを配置してもDLLに含まれる関数をCALLした時点で 「Unhandled Exception」が発生したり、「Cannnot Load …」や「Cannot Call …」などで怒られちゃったりします。どうしてでしょう? いろいろ調べる内に解決策を見つけました。もう7年も前の記事です。 »参考にしたサイト 内容をかいつまむと「MQLの実行環境にDLLを配置しないと動かないよ」と言うことでした。 早速、該当DLLをMT4インストールフォルダに配置すると…動きました。 注意点 今回はC#で作成したDLLをC++/CLIのDLLでラップしました。つまり、DLLが二つある状態です。 MQL -> DLL(C++/CLI) -> DLL(C#) なので、DLLは両方ともMT4のインストールフォルダに配置してくださいね。 C C# C++/CLI Cannnot Load Cannot Call CLI DLL DLLインポート Expert Advisor Libraries MetaTrader4 MQL MQLExperts MQL単独 MT4 MT4インストールフォルダ MT4単独 Unhandled Exception プログラム言語 リファレンス 外貨証拠金取引 自動売買 ABOUT ME Nozomu.Kon 集客導線、SNS導線、広告数値自動取得、LP/HP/CSS、ファネルツールなどなど個人・法人のスモールビジネスをIT/AIのチカラでフルサポートしています。 BLOG:https://embedded-property.net