10分でできるMQL5用DLLの書き方、データのやりとり」についてのディスカッション。

 

掲載記事MQL5のDLLを10分で書いてデータ交換する方法とは?:

そのため、簡単なDLLの書き方や、異種システム間のリンクの特殊性などを覚えている開発者はほとんどいないのが現状です。10分間で、簡単なDLLを作成する全工程を実演し、私たちのバインディング実装の技術的な詳細について説明しようと思っています。Visual StudioでDLLを作成する手順を、さまざまな種類の変数(数値、配列、文字列など)を渡す例と、カスタムDLLでクライアント端末をクラッシュから保護する例を挙げて、順を追って紹介します。

著者:Renat Fatkhullin

 

とても興味深い記事です。完全性のために欠落しています。

1.見積もりはどこから取得するのか、hstファイルから取得することができるのか。

2.このライブラリを2009aまたは2009bのメイトラボのものと互換性を持たせるにはどうしたらいいですか?そこにはCやC++もあるんですよね?

とても大きなお願いです。

 
  1. 端末からの引用 - 細かくも深くもなりました(10年以上)。

    いかなる場合でも、端末ストレージのバイナリファイルを直接見てはいけない。データアクセスの深刻なコンフリクトを引き起こすだけだ。仮に「問題なく動作する」ことが確認できたとしても、端末と外部プログラムが同時にこのデータにアクセスする瞬間が訪れ、その結果、誰かが必ずクラッシュすることになる。人々は何度もつまずきながら、それを乗り越えてきた。

  2. DLLコールのstdcall/cdecl規約の透過的サポートにより、MQL5でのライブラリのドッキングがより簡単になりました。

    もし誰かがMetaTrader 4/5とMatlabをDLLでリンクさせるための詳細で良い記事を書けば、200ドル以上の収入を得ることができます。

    MQL4.comでは、Matcad - MetaTrader 4 bundleに関する記事がすでに掲載されています。

Взаимодействие между MеtaTrader 4 и MATLAB Engine (виртуальная машина MATLAB) - Статьи по MQL4
  • www.mql5.com
Взаимодействие между MеtaTrader 4 и MATLAB Engine (виртуальная машина MATLAB) - Статьи по MQL4: особенности автоматических торговых стратегий
 
Renatさん、DLLの呼び出し速度はどうでしょうか?
2台の端末をリンクして、リアルタイムで見積書をExcelに変換する必要があります。
MT4では、DDEでできました。MT5では、DLLを介するしかないようです。
しかし、もし受信した各ティックがDLLに渡されるとしたら......。想像を絶する遅さになるのではと思います。もちろん、まだ実装してみたわけではありませんが...。が、正直なところ、試したくない。悪夢になりそうだ。
要するに、DDEをMT5に戻そうということです。時代錯誤ですが、時には必要かもしれません。

P.S. 非常にタイムリーな記事をありがとうございました。ちょうどそんな素材が恋しくなってきました。
 
ありがとうございました !!!
 
benik:
Renatさん、DLの呼び出し速度はどうでしょうか?

通話速度の確認はとても簡単です。例えば、ざっくりとした計算でこんな感じです。

_DLLAPI int __stdcall fnCalcSpeed(int var1,int var2,int var3)
  {
   return(0);
  }


#import "MQL5DLLSamples.dll"
int  fnCalcSpeed(int var1,int var2,int var3);
#import

   int calls=0;
   int ticks=GetTickCount();
   
   while(GetTickCount()-ticks<1000)
     {
      for(int i=0;i<1000;i++)
         fnCalcSpeed(1,2,3);
      calls++;
     }
   Print(calls * 1000, "вызовов в секунду");

Quad Q9400 @2.66Ghzで57,000回/秒の通話ができました。MetaTrader 4では、制御や配管がないため、同じコードで1秒間に約20,000,000回呼び出すことができます。

MetaTrader 5のDLL呼び出しのロスを必ず減らすようにします。

 
Renat писал(а) :

57,000コール/秒

あ、そうか、1秒間に5万回程度の呼び出しがあれば、DLLで引用を流すことも可能なんですね。損はさせない。

コードをありがとうございました。

 
次のビルドでは、DLLの呼び出し速度がMQL4のように毎秒20 000 000の「空」呼び出しに引き上げられる予定です。
 

もし、dllを通してのみ相場をエクスポートできるのであれば、エクスポートする各商品にスクリプトを配置する必要があるということでしょうか。たくさんあったらどうする?例えば、50?

一つのスクリプトで多くの楽器の気配値を渡すことが可能なのは理解できますが、ティックが失われないDDEの本格的な代替にはならないでしょう。

 

要は、「見積もりインターフェイスを提供する」ことが使命ではないのです。

私たちは、分析システムを開発するための完全な自給自足の環境を作ることを目標としています。このような環境であれば、サードパーティ製のプログラムであっても使用する必要はない。

 
いずれにせよ、Mql5は嬉しいですね。感謝