もう一度、マルチスレッドについて - ページ 4

 
meat:

まあ、あなたが挙げたものがすべてmql5ツールに関連しているわけではない、ということにしておきましょう :)そして、この問題をどう解決(回避)するかという問題ではありませんでした。必ず回避できる道がある、それは間違いない。問題は、なぜ必要な機能を詳細不明なままmql5に追加しようとしなかったかということです。

MQL5には必要なものがすべて揃っているので、あとは使いこなすだけです。

計算の一部をインジケータに 移し、Expert Advisorから実行する。

また、2数十人(楽観的)のユーザーに対して、基本的なパラレリングをする人はいないでしょう。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
TheXpert:
マルチスレッドに対応したスクリプトがあります。また、テスターでは必要ありません

Expert Advisorからスクリプトを実行するにはどうすればよいですか?

 
komposter:

計算の一部をインジケータに 転送し、Expert Advisorから実行します。

また、タンバリンダンスですか。普通に実装した場合の話です。

そして、2ダース(楽観的)のユーザーには、誰も通常のパラレリングを行わないでしょう。

MQL5は、mql4とは対照的に、多少なりとも熟練したプログラマー向けの言語として位置づけられているように、当初から感じられました。つまり、アルゴリズムの最適化、複数のスレッドにまたがる並列化は、日常的に必要なことなのです。だから、冒頭でこの点に注意を促したのです。そして、レナートはなぜかそれにとても痛烈に反応したのです。

多くの人が言うように、最適化の問題を一箇所で常に解決することは、全くやりたくないことです。

それに、普通のパラレリングをやれとは言わないと、もう最初に言っているんです。WinApiを使って、自分ですべてを並列化することが完全に可能なんです。必要なのはファンクションアドレスだけです。だから、関数へのポインタだけを追加するようにお願いしたんです。もちろん,__stdcall 指令に対応することが望ましいが,その必要はなく,必要な操作は自前で行えばよい.

関数へのポインタは、実はとても便利なものなんです。糸を作るために使うのは、さまざまな使い方のひとつに過ぎません。また、様々な非同期処理におけるコールバック関数の指定などにも使用される。また、それらはDLLにアーチ状に転送され、DLLとそれをインポートしたExpert Advisorの間の通信を簡素化し、すなわち完全な統合を実現します。実行時に、DLLは直接MQL関数を呼び出して、そこから必要な情報を得ることができます。そのためには、イベント(例:ティック)を生成し、Expert Advisorを呼び出して、必要な情報をDLLに渡す必要があります...。全体として、余分な手間と時間の消費

 
マルチスレッドについて。
  1. 言語にマルチスレッドを追加することは、マルチスレッドをサポートする特別なAPIを作成することを意味します。
    その結果、そのようなサポートがないAPIよりも動作が遅くなることが、おわかりいただけたかと思います(lokiなど)。
  2. MQL5コンパイラのオプティマイザーを書き直さなければならない - 実際は最適化が悪化する。
  3. なかなか見つからないユーザーのバグを紹介する場所です。
さて、最後になりますが、必要とするユーザーはそれほど多くなく、サポート不足も迂闊に解消されます。


関数へのポインタについて。
MQL5コード内での 使用については未定です。
残念ながら、DLLへのポインタを渡すことはできません。クロスプラットフォームx86/x64のために、呼び出しの合意を犠牲にしなければならなかったのです。
 
mql5:
マルチスレッドについて。

この人は机上の空論で荒らしているだけで、言語の応用性もマルチスレッドの結果も理解できていない(と思った)。

実際、彼は平行移動の実作業も行っていない。

 

mql5:
 ...Ну и последнее, нужно это не очень малому числу пользователей и отсутствие поддержки можно обойти.

スクリプトを使うのはいいのですが、EAからどのように呼び出すのでしょうか?

 
DC2008:

スクリプトを使うのはいいのですが、EAからどのように呼び出すのでしょうか?

残念ながら、MQL5からスクリプトを起動する機能はありません。

しかし、Expert Advisorの代わりにチャートのテンプレートを使って、そこにスクリプトを書けば、方法はあるのです。
このようなテンプレートを新しいチャートに適用すると、スクリプトが起動する(ただし、これは「文書化されていない機能」であり、いつか利用できなくなるかもしれない)...。

あなたの仕事は何ですか?
イベントを受信した後に仕事をするExpert Advisorを隣接するチャートに実行する準備ができていないのですか?
EX5ファイルの保護のため、新しいMQL5プログラムの 起動にはコストがかかります。
 
mql5:
残念ながら、MQL5からスクリプトを起動することはできません。

しかし、チャートテンプレートを通じて、Expert Advisorの代わりにスクリプトを入れれば、方法はある。
このようなテンプレートを新しいチャートに適用すると、スクリプトが起動する(ただし、これは「文書化されていない機能」であり、いつか利用できなくなるかもしれない)...。

あなたの仕事は何ですか?
イベントを受信した後に仕事をするExpert Advisorを隣接するチャートに実行する準備ができていないのですか?
EX5ファイルの保護のため、新しいMQL5プログラムの 起動にはコストがかかります。

何千ものグラフィカルなオブジェクトがあり、不要なものを削除したり、プロパティを変更したり、統計的特性を計算したりと、分析することができます。1枚のチャートでもラグがあるのに、それが何枚もあったらどうするんだ?

 
グラフィカルなオブジェクトの場合、マルチスレッドは理論上も役に立ちません。

グラフィカルなオブジェクトを扱う問題は、アルゴリズム的に解決する必要があります。経済的で、オブジェクトの変更と読み込みのコマンドを混在させないこと。例えば、1000回の読み出しと1000回の書き込みを行うよりも、1000回の読み出しと1000回の書き込みのみを行う方が、はるかに高速になります。
 
mql5:
マルチスレッドについて。
  1. 言語にマルチスレッドを追加することは、マルチスレッドをサポートする特別なAPIを作成することを意味します。
    その結果、そのようなサポートがないAPIよりも動作が遅くなることが、おわかりいただけたかと思います(lokiなど)。
  2. MQL5コンパイラのオプティマイザーを書き直さなければならない - 実際は最適化が悪化する。
  3. なかなか見つからないユーザーのバグを紹介する場所です。
さて、最後になりますが、必要とするユーザーはそれほど多くなく、サポート不足も迂闊に解消されます。


関数へのポインタについて。
MQL5コード内での 使用については未定です。
残念ながら、DLLにポインタを渡しても動作しません。x86/x64クロスプラットフォーム用の呼び出し規約を犠牲にしなければなりませんでした。
丁寧な対応ありがとうございました。すべてがクリアになりました。DLLにポインタを渡すことができないというのは、システムDLLのことでしょうか(つまり、__stdcallの規約)?そして、自分のDLLには、他のどんな契約も書くことができます。それとも、どの規格にも準拠しない排他的なものなのでしょうか?