記事"データの交換方法:10分で書くMQL5のためのDLL"についてのディスカッション - ページ 2

 
LEHayes:

...

あなたがそれを持ち出すのは良いことだが、解決策や目標達成のための提案さえ提示する気がないのであれば、文句を言っても誰も得をしない。

...

実際、pfxがこの問題を提起し、文句を言ったのは良いことで、MetaQuotesはこの問題を解決すべきだ。誰かがそれを持ち出したからといって、その人が問題の解決策を持っているわけではありません。

また、.dllがすべてのティックで 呼び出されているにもかかわらず、「頻繁に呼び出さない方がいい」と 言うのは意味がないという点には同意する。MetaQuotesのCEOからそのようなことを聞くのは良いことです。

pfxでは、あなたが引用したパラグラフが変更されているようです。

5.DLL呼び出しラッパーと呼び出し時の速度低下

すでに説明したように、DLL関数の呼び出しはすべて、安全性を確保するために特別なラッパーに包まれます。

このバインディングは、基本コードをマスクし、スタックを置き換え、stdcall / cdecl協定をサポートし、呼び出された関数内の例外を監視します。

この作業は必然的に呼び出し関数の遅延につながる。

したがって、小さな操作のために非常に頻繁に(1秒間に数百回から数千回)DLL関数を呼び出すことは推奨されません。

あまり頻繁に呼び出さない方がよいでしょう。

...これに...

5.DLL呼び出しラッパーと呼び出し時の速度低下

すでに説明したように、DLL関数の呼び出しはすべて、安全性を確保するために特別なラッパーに包まれます。このバインディングは、基本コードをマスクし、スタックを置き換え、stdcall / cdecl協定をサポートし、呼び出された関数内の例外を監視します。

この作業量は、関数呼び出しの大幅な遅延にはつながらない。

質問を避けるために記事の一部の段落を変更するだけでなく、この失われた.dllの呼び出し速度の問題を本当に解決してくれることを願っている。

質問について言えば、レナト・ファットフーリンには、「つまり、どういう意味なんだ」というpfxの質問に答えてほしい!私はどんな質問にも答える用意があります。

私たちもあなたの答えを聞きたいと思っています。)

時間があるときに、もっと詳しく書くつもりだ。

 

Renatがいつこの記事を書いたか知らないが、マイクロソフトはVisual Studio 2005の提供を終了した。彼らはVisual Studio 2010と2011のベータ版を提供しており、2008を捨てようとしているようだ。

インストーラーはウェブインストーラーで、インターネット接続が遅い場合は面倒です。オフラインインストーラはISOイメージで提供されているが、それにはVisual Studio C#とVisual Basicも含まれている。インストール後、両スタジオはいくつかのアップデートを必要とし、MBサイズも大きくなる。

Visual Studioをインストールするのが嫌な人には、https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments。 私のお気に入りはNetBeansと Code::Block だ。NetBeansはOracleによってサポートされており、Oracle Solaris Studioのベースとなっています。しかし、NetBeansにはコンパイラが付属していないので、CygwinやMinGWコンパイラを使う必要があります 有名なDevC++の最新の安定版は7年前のもので、今ではウェブサイトはデッドリンクだらけで、もう誰も管理していないようです。

Visual Studioを使ったほうがいい。

Download Overview
  • www.microsoft.com
Download free 90-day trials of Visual Studio products, free Visual Studio Express products, and additional Visual Studio software.
 
onewithzachy:

質問といえば、レナト・ファトフーリンには、pfxの質問である「つまり、どういう意味なんだ? 私はどんな質問にも答える用意がある。
DLLの呼び出しに減速はありません。
 
64ビットのDLLを作成する方法、またはMQL5に32ビットのDLLを読み込ませる方法をご存知の方はいらっしゃいますか?私のDLLが "64ビットではない "という理由で、MQ5が私のテスト・スクリプトを読み込んでくれません。ありがとうございます。
 
それはいいことだ。
 

非常に良いチュートリアル!

リファレンスファイルを作成する必要がありますか?

 

Fann2MQl.dll(http://fann2mql.wordpress.com)はMT5では機能しないので、修正する必要があります。MT5ではファイルを好きな場所で開くことができないからです。ファイルは2つのデフォルトの場所(フォワードモードとテストモード)で開く必要があります。

そこで、 fopenの代わりにどの関数を呼び出すか、また、どのヘッダーファイルをインクルードするかという 問題があります。ファイルはMT5内部から開く必要があるようです。terminal.exe をバイパスしてファイルを開こうとすると(dll から fopen を使用して起こるように)、terminal.exe の起動モード(アイコンをクリックするか、パラメータ /portable を指定したコマンドラインから)に応じて、インストールディレクトリまたはデスクトップに自動的に転送されます。

この転送は奇妙なもので、結果のファイル名はそのファイルへのパスの最初のレターにしかない。

About
  • fann2mql.wordpress.com
Fann2MQL is a Neural Network processing package for MetaTrader4. It enables you to write your own Expert Adviser or Indicator taking advantage of Fast Artificial Neural Network Library. It’s very simple and efficient. You can use up to 1024 network simultaneously without recompiling it and in case you need more power it lets you perform...
 
RyanLeland:

64ビットのDLLを作成する方法、またはMQL5に32ビットのDLLを読み込ませる方法をご存知の方はいらっしゃいますか?私のDLLが "64ビットではない "という理由で、MQ5が私のテスト・スクリプトを読み込んでくれません。ありがとうございます。

こちらの手順で修正できます:ソリューションエクスプローラー -> ソリューションを右クリック -> コンフィギュレーションマネージャー -> アクティブソリューションプラットフォームドロップダウンメニュー -> x64を選択 -> 閉じるをクリック -> ソリューションの再構築

お役に立てれば幸いです。

頑張ってください。

 

こんにちは、

Microsoft Visual Studio 2013 Express Editionで作成されたDLLでは動作しません。

ライブラリのMSVCR120D_APP.DLLが見つからないようで、KERNEL_32にも問題があるようです。

同じような問題をお持ちの方はいらっしゃいますか?どうすれば回避できますか?

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

 

mql5はコールバック関数を 含むインポートDLLをサポートしていますか?

例えば

tclient.dllというdllがあり、以下の関数が含まれています:

typedef TCLIENT_API void(*call_back)(Tick* p);

TCLIENT_API int sub_tick(CTX ctx, const char* insId, call_back f);

では、mql5でどのようにsub_tickを宣言し、呼び出せばいいのでしょうか?

#import "tclient.dll"

//"sub_tick" 関数の宣言方法

#インポート

void ontick(Tick &ticks[])

{}

int OnInit()

{

//"sub_tick" 関数を呼び出すには?

}