7

Metatrader にインポートした独自の DLL から MQL4 または MQL5 関数を呼び出したいと考えています。

出来ますか?

4

3 に答える 3

9

森、

私が過去 2 年間 MetaTrader を使用して経験した限りでは、外部 DLL から MQL 関数を呼び出す実際の方法はありません。しかし、あなたが達成したいことに非常によく似たカスタムビルドの API がいくつかあります。

MT4 API

MetaTrader™ Java / .Net API

これらの API により、MQL 機能をすぐに使用できるようになります。

于 2012-12-19T10:43:25.553 に答える
2

原理

FX ドメインで数百人年を費やした後、MT4 ターミナルと他のプロセスとのスムーズでエレガントな連携を調整する別のアプローチがあります。ビルド 524-> ビルド 562-> ビルド 586-> ビルド 600-> ビルド 609-> ビルド 624->... が再び移動すると、次の衝撃時にすぐに機能します。

存在しないおもちゃ

はい、MT4 アーキテクチャは、DLL などを介して外部の低レベル呼び出しを処理するという非決定論的な義務によって自己が「妨害」されることを可能にする独自のインターフェイスを公開していません。

修正方法

それにもかかわらず、アーキテクチャを逆にして、MT4 ターミナルを軽量のシンクライアントとして機能させ、スマート メッセージング ライブラリを操作することは可能です。これにより、MT4 機能がリモート呼び出し ( RPC ) 用に公開されます。

このようにして、Pythonノードは数値処理のために MT4 データを収集することができます。

PHPノードがリモート syslog を並行して処理するのと同じ方法で、

C++ノードが別のタスクを統合するのと同じ方法で、

同じように、別のPythonノードは、カスタム固有のスクリプト構文言語を使用して CLI ターミナル インターフェイスとして機能し、コマンドライン / stdio を介して MetaTrader 側のアクティビティを命令できます。

簡単に言えば、アプリケーション インフラストラクチャのニーズはすべてこの方法で実現できます。

(ネイティブ MT4 スレッドの貧弱なリアルタイム機能を改善して、はるかに優れたソフト リアルタイム予測可能性と低レイテンシの超並列アーキテクチャを取得することさえできます..それでもなお、魚雷から保護され、より安全な側にいることができます任意の次の「新しい」-MQL4 によって)

注意:目に見えない脅威を想像するだけで、「新しい」でのヘッドバン衝突MQL4.56789は、他のものに加えてstring、構文が文字列として提案されている間、実際には a ではstringなく、struct以前のすべての DLL 関連の作業が単純に持っていることです。 string-as-struct または新しい DLL インターフェイスをエミュレートするために作り直してラップアラウンドする必要がある場合は、バッファリングされた で値を返す場合、ArrayOfBYTEsどちらMQL4.56789の側で受信および処理できるが、解放できない場合に備えて設計する必要があります。それ自体でメモリリークが発生します。

于 2014-06-13T21:55:30.030 に答える
1

DLL が .NET DLL であることが許容される場合は、 NQuotes と呼ばれるこの MT4 .NET統合ライブラリを試すことができます。

このライブラリを使用すると、DLL から任意の MQL4 関数にアクセスできます。

于 2016-12-04T17:28:02.580 に答える