MetaTrader拡張モジュール(DLL)の作成 - ページ 5

 

私はあなたが大きな実業家であることを参照してください?

これはあなたが持っているそのようなたわごとを販売することができるフォーラムではありません。

DGC OZFX EAで具体的に何を改造したのですか?

firedoji:
簡単に!FXのe-bookを全部ダウンロードして、中の説明を見てください。私はそこから200以上の電子書籍といくつかのEAを取得します....そこにあるすべてのEAは編集され、変更されています...

-----------------------------------------

すべてのEAをダウンロード するすべてのインジケータを ダウンロードする E-bookをダウンロード する
 
prasxz:
MT4のDLをウェブサービスに接続し、PHPスクリプトを作成して、ウェブサイトを通じてMT4のオープンポジションを表示することは可能ですか、そうすれば、MT4を持っていない人でもウェブサイトからリアルタイムで見ることができますか?

しばらく前に誰かが投稿したMQL/MySQLの例はとてもうまくいきました。唯一の問題は、ほとんどのホスティング会社がデータベースサーバーへのリモートアクセスを許可していないことです。しかし、もしあなたがサーバーに完全にアクセスし、コントロールできるのであれば、データベースに接続し、それぞれの新しい注文のデータを挿入するEAを書くことができるでしょう。その後、あなたのウェブサイトからデータベースに接続し、データを読み取るだけです...私の意見では、これが最良の方法でしょう。

MT4のDLLはphpスクリプトに接続することができますが、EAからウェブサイトに情報を渡すことを試したことがありません、しかし、私はそれを他の方法で成功させることができました...WindowsソケットやHTTP_GET/HTTP_POSTのような関数を 調べる必要があります。

パトリック

 
Mistigri:
そのライブラリは見覚えがあるのですが、ウェブサイトに接続するためにそれを使っているのですか?代わりにwininet.libを使ってみましたか?

この問題はdefファイルではないと思いますし、あなたのDLLはロードして正しく動作しません。もし、もっと詳しい情報(例えば、あなたがDLLで使用しているコードの一部)を提供していただけるなら、お役に立てるかもしれません。

パトリック

こんにちは、Patrick!

ライブラリとソースコードはここにあります。

https://www.mql5.com/en/forum/178272

私はそこに投稿しましたが、管理者はそれをこのスレッドに移動させました...。

ありがとうございます。

 

インターネット上にあるファイルの読み込み

こんにちは。

ローカルマシンではなく、インターネット上にあるファイルをEAに読み込ませたいのですが、どうすればよいでしょうか?

FileOpenは、ファイルがmetatraderディレクトリにあるときのみ動作します。

c#-dllでそれを疲れさせましたが、「cannot callfunction」というエラーメッセージが表示されます。

この問題に対する簡単な解決策はありますか?

ありがとうございます。

 

エラー127の解決方法 - 関数を呼び出すことができない

エラー127の解決方法 - 関数を呼び出す ことができない

わかりました。

昨夜、ようやくこの問題を調べることができました。 この問題は、間違ったdefファイルまたはnodef ファイルをDLLに関連付けることと関係があります。

Visual Studio 2008 Expressでこの問題を解決する方法は以下の通りです。

1) プロジェクトを開き、プロパティ、またはalt-F7を押します。

2) リンカをダブルクリックすると、ドロップダウンリストが表示されます。

3) 「入力」を選択します。

4) Module Definition Fileをdefファイルの名前に変更します。

4) Module Definition File を、def ファイルと同じ名前に変更します。

2008 Express 版では、Professional 版のような自動生成は行われません。

これが主な原因です。 他のリンカー/コンパイラーの問題で、まだ問題が発生する可能性があります。 Metatrader4に同梱されているExportFunctionのサンプルプロジェクトをロードする必要があります。これは experts/DllSample フォルダにあります。 次に、そのプロパティを1ページずつ、項目ごとに見て、ExportSample、またはExpertSampleと書いてあるところ(あるいは命名規則に従って使用しているもの)すべて、自分の命名規則に合うようにプロパティを変更します。 私はこの作業を項目ごとに行い、127エラーが発生するかどうかを確認しました。 正しいモジュール定義ファイルが依存関係として明示されるまで、このエラーは出続けました。私はサンプルに合わせてすべてを変更したので、それ以外のものがないとは言いませんが、defファイルが明示されると、それで解決しました。

dllはlibフォルダになければならないことを忘れないでください。 インクルードディレクトリにmqhファイルを置いて、DLLを明示的にインポートし、関数名とパラメータ、戻り値の型などをリストアップする必要があります。 そして、インジケーターやエキスパートで、そのヘッダーファイルをインクルードしなければなりません。 これで完了です。

CodersGuruとMistigriの両方がこの方法の良い例を持っていますが、プロフェッショナルでないExpressバージョンは、依存関係としてdefファイルを明示的に追加しておらず、これがExpressバージョンを使用しているすべての人が抱える問題の根源です。(少なくとも、この問題を抱える私たちが選択した特定のプロジェクトを選択する際に、明示的に追加されることはありません)。

添付の画像を 参照してください。 なお、コンパイラとリンカの値は、Metatraderに付属するexportfunctionサンプルの値と一致させることをお勧めします。

ありがとうございました。

MG

ファイル:
properties.jpg  75 kb
 
fedecosta:
Patrickさん、こんにちは。

ライブラリとソースコードはここにありました。

https://www.mql5.com/en/forum/178272

私はそこに私の記事を置いたが、管理者はこのスレッドにそれを移動...

ありがとうございます。

申し訳ありませんが、私はまだそれを見る機会を持っていなかった、私は忙しかったが、私は忘れていなかったと私はそれについてあなたに戻って取得しようとします。

Peco07です。

私はEAがローカルマシンではなく、インターネット上にあるファイルを読み取るようにしたい。

2つのオプションがあります、ウェブサイトに接続するC#アプリを書き、あなたのコンピュータにデータファイルを書き、それをMT4から読み取るか、ウェブサイトに接続してデータを読み取るC++ dllを書くか・・・。

C#のルートを行く場合、今のところ、DLLのルートよりずっと速いと思われます.もし、c++のDLLを書きたいなら、ここにいくつかのコードがあります。

MT4 DLL ウェブコネクト|ミスチル

MG_1です。

問題は、DLLに間違ったdefファイルを関連付けるか、defファイルがないことに関係します。

これは、Visual Studio 2008 Express -でそれを修正する方法です。

情報ありがとうございます。もしよろしければ、あなたの投稿の一部を私のサイトでも再現してみたいと思います...

 
Mistigri:
情報をありがとうございます。もしあなたが気にしないなら、私のサイトにあなたの投稿の一部を再現します...

問題ありません。多くの人が学ぶためにそこに行っていると思いますので、Expressユーザーやgnuなどのユーザーの助けになればと思います。

-MG

 
fedecosta:
こんにちは、皆さん。

このライブラリを使おうとすると問題が発生します。

I put them in metatraderexperts ╱library

.defファイルへのパスを正しく定義しました。

... しかし、私のEAはこのエラーを登録に印刷します:-65495

何が問題なのでしょうか?

そして、それを解決する方法を教えてください。

.defファイルが破損している可能性はありますか?

よろしくお願いします...

Fedecostaさん、こんにちは。

defファイルをc:⇄ドライブの下に直接コピーしてみてください。私はそれでうまくいくようです。

これはDLLプログラミングとは関係なく、このEAに特化したものであることに注意してください...

パトリック

 
Mistigri:
こんにちは、Timです。

dev-c++を使用する場合、defファイルは自動的に生成されますが、問題は、以下のような関数名になってしまうことです。

EXPORTS

_Z11GetSMAArrayP8RateInfoiiPd@16 @ 1

_Z12GetHighValueP8RateInfoii = _Z12GetHighValueP8RateInfoii@12 @ 2

_Z12GetHighValueP8RateInfoii@12 @ 3

_Z13GetCloseValueP8RateInfoii = _Z13GetCloseValueP8RateInfoii@12 @ 4

_Z13GetCloseValueP8RateInfoii@12 @ 5

_Z11GetSMAArrayP8RateInfoiiPd = _Z11GetSMAArrayP8RateInfoiiPd@16 @ 6[/PHP]

Now you need to make sure you add the following check around your code

[PHP]

#ifdef __cplusplus

extern "C" {

#endif

#ifdef __cplusplus

}

#endif

VS2008で作成したサンプルファイルを添付しますが、今回はdev-c++を使用しています ...

これが役に立つといいのですが

ということは、DLLファイルを作成するときに

ということは、defファイルの関数は、先頭に_z12をつけるということですか?

つまり、.mq4ファイルでは

関数: get_max_deviation を呼び出す。

そして、.def ファイルで

転送された関数 : _z12get_max_deviation?

関数名の後の@の意味は何ですか?

感謝

 
Mistigri:

VS2008で作成したサンプルファイルを添付しますが、今回はdev-c++を使用しています ...

参考になれば幸いです。

添付ファイル

MistigriFX Sample Debug.mq4 (2.1 KB, 15 views)

MSFXDEV.zip (8.6 KB, 17 views )

あなたのファイルをdlして、.cppを画像ショーでコンパイルしてみました。

しかし、エラーが起こる

私のコンパイルの方法は間違っていますか、私はdllにそれをいかにコンパイルするか。(私はc++の初心者である ^^)

ファイル:
dev_dll.jpg  298 kb