もう一度、マルチスレッドについて

 
開発者の皆様へ マルチスレッドについて検索したところ、「MQL5にスレッド生成・管理の機能を追加するつもりはない」というフレーズを見つけました。1年半以上前に言われたことです。当時と見方が変わったのでしょうか?
それでも煩わしいと思うのであれば、ユーザー自身に実装してもらえばいいのではないでしょうか。 そのためには、関数ポインタが必要です。そのような機能を追加してみてはいかがでしょうか。例:GetPointer(myfunc)

また、MQL5でマルチスレッドを実装しなかった理由について、特に難しいことはないと思いますが、いかがでしょうか? それとも、主義主張の問題だったのでしょうか?
今はもう2000年ではありません。マルチコアプロセッサはとっくにすべての人の常識になっており、コア数は年々増える一方であることをお忘れなく。今は4人、数年後には6~8人など。 そして、ユーザーが実行中のプログラムでプロセッサを適切に使用することを許さないのです。
1つのスレッドでの作業を比較しているだけなのに、それならMQLとC++の速度を常に比較することに何の意味があるのでしょうか?結局のところ、合理的なC++プログラマは、性能を何倍にも高めることができる複数のプロセッサがあるときに、1つのスレッドから資源集約的なタスクをぶら下げることはしない。だから、すべてのテストは実生活とほとんど関係がないのです。数年後にはプロセッサコアが10コアに成長しても、シングルスレッドのMQLテストを誇りに思うのでしょうか?

OpenCLを使う ことについては、特にここではテキストラインを介して実装されているため、シャーマニズムです。つまり、どこかでデバッグして、そのコードをMQL5にコピーする...。なんというサーカスでしょうか。そうすれば、DLLにすべてを実装し、それをインポートすることが容易になります。しかも、複数の言語でプログラムを書きたいと思う人はほとんどいないでしょう。
OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 
meat:
開発者の皆様へ マルチスレッドについて検索したところ、「MQL5ではスレッドを作成・管理する関数を追加するつもりはない」という文言を見つけました。1年半以上前に言われたことです。当時と見方が変わったのでしょうか?
それでも煩わしいと思うのであれば、ユーザー自身に実装してもらえばいいのではないでしょうか。 そのためには、関数ポインタが必要です。そのような機能を追加してみてはいかがでしょうか。例:GetPointer(myfunc)

また、MQL5でマルチスレッドを実装しなかった理由についても、よろしければ教えてください。 特に困難と感じたのはなぜでしょうか? それとも、主義主張の問題だったのでしょうか?
今はもう2000年ではありません。マルチコアプロセッサはとっくにすべての人の常識になっており、コア数は年々増える一方であることをお忘れなく。今は4人、数年後には6~8人など。 そして、ユーザーが実行中のプログラムでプロセッサを適切に使用することを許さないのです。
1つのスレッドでの作業を比較しているだけなのに、それならMQLとC++の速度を常に比較することに何の意味があるのでしょうか?結局のところ、合理的なC++プログラマは、性能を何倍にも高めることができる複数のプロセッサがあるときに、1つのスレッドから資源集約的なタスクをぶら下げることはしないのだ。だから、すべてのテストは実生活とほとんど関係がないのです。数年後にはプロセッサコアが10コアに成長しても、シングルスレッドのMQLテストを誇りに思うのでしょうか?

OpenCLを使う ことについては、特にここではテキストラインを介して実装されているため、シャーマニズムです。だから、どこかでデバッグして、そのコードをMQL5にコピーする...。なんというサーカスでしょうか。そうすれば、DLLにすべてを実装し、それをインポートすることが容易になります。しかも、複数の言語でプログラムを書きたいと思う人はほとんどいないでしょう。

MQL5でもマルチスレッドは利用可能ですが、C++とは異なり、チャートと呼ばれる仮想実行環境として実装されています。

これは、スレッド間の同期やデータアクセスなど、スレッド間の通信で発生する面倒な問題からユーザーを解放するために、各チャートが別々のスレッドで実行されるようになっています。

でも、(言語の複雑さについてすでに不満を抱いている)大衆的なユーザーにとっては、ちょうどいいことなんです。

OpenCLに関しては、別の問題です。プラットフォームの開発計画にもなかったことです。当初、この話題で先進的なフォーラムユーザーが開発者の関心を集めたが、公式の回答は「ない、これからもない」だった。しかしその後、MQの指導者たちは怒りを慈悲に変えました(Ilyazに感謝)。

Dllについて:MQでは、潜在的に危険なものであると考え、可能な限り回避するように、特に公共性の高いサービスについては、実装するようにしています。しかし、プログラマーは一般大衆のためだけでなく、対話者のためにも書くので、一般的には禁止していない。

 

全体として、純粋な机上の空論にしか見えません。

端末でマルチスレッドやプロセッサをフル活用するのは悪いことではありません。ターミナルでいくつのスレッドが動いているか、また、スレッドの数が時間的にどう変化しているかを見てください。マルチスレッドの原理は、これまで何度も説明され、実証されてきました。例えば、インジケータの再計算、シンボルの再計算、チャートデータのページング、すべてのExpert Advisorとスクリプトの独立した操作の独立したスレッドがどのように動作するのかです。

何でもかんでも計算を並列化するためには、まず、数学のごく一部しか並列化できないことを認識する必要があります。

マルチコアテスター、MQL5 Cloud NetworkとOpenCLをご覧ください。特にクラウドコンピューティングの分野では、これまでずっと先を行ってきました。今すぐ、テスターでMQL5 Cloud Networkを オンにすると、最大14,000CPUの支援が受けられます。

あなたもOpenCLについて何も知らないようですね。OpenCLコンパイラに送るプログラムコードをソース形式で提示するのが、通常かつ標準的な作業方法です。異なるOpenCLハンドラ(Ndivia、AMD、Intelなど)がコードを取得し、自分用に作り直す必要があることに留意してください。

Статистика - MQL5 Cloud Network
Статистика - MQL5 Cloud Network
  • cloud.mql5.com
Произведенный объем работы, распределение агентов по странам, RAM, CPU и битности OS
 

MetaTrader 5のマルチスレッドとは何ですか?

テストをクリックするだけで、瞬時に5,743のエージェント/CPUが動作し、オプティマイザで381,468のパスを6分間で実行したのです。1回のパスの実行時間は1〜2秒。もし、8コアのコンピュータでテストを実行したら、6分ではなく、800~1600分を費やしたでしょう(381468 / 8 = 47683秒 = 794分)。

そして、スタートボタンを押す以外は、何もする必要がなかったのです。どこかのスカイネットが立ち上がり、必要なチャート履歴をすべて自前で同期させ、その作業を世界中の何千台ものコンピュータに分散させ、一斉に作業を行ったのです。

ようこそ現実へ...。

 

レナート

MQL5 Expert Advisor内のスレッド作成に関する質問です。

 
sergeev:

レナーテ

MQL5 Expert Advisor内部でのスレッド作成についての質問です。

それは承知しています。

ただ、応用計算 言語にマルチスレッドがないことを理解していない人にマルチスレッドの話をしない方がいいとは書いていません。端末のインフラであるマルチスレッドを全面的かつ効果的に実装しています。

本当のマルチスレッドは、実際にタスクを並列化できる場所で必要です。これはテスターです。そして、多くの人が仕事の質や管理、量を把握することから遠ざかっているところに、このような形で実装したのです。

私のクロードとの例は、課題の質と精巧さのレベルを簡単に証明するものです。

 

はい、レナートさん、私の投稿をよく読んでいないようですね。MT5のマルチスレッド化ではなく、MQL5のマルチスレッド 化の話です。このスレッドを実行中のプログラムの中に自分たちで作ることはできない。インジケータで新しいチャートを開くプログラムは、タンバリンダンスであり、解決策にはならない。

すごいですね、MQL5ではマスユーザーを意識して余計なものをたくさん作ってしまったんですね。そして、私が知る限り、あなたは主にダミーに焦点を当て、リテラシーの高いプログラマーには焦点を当てないのです。そのため、多くの制約があり、メモリを直接操作することは不可能です。では、なぜダミーに授業などが必要なのか、ということです。

もし、あなたが製品を初心者向けだけでなく、経験豊富なプログラマーにもシステム資源を有効に活用する機会を与えることができないでしょうか?

マルチスレッドの不足は、どのクラスでも補うことはできない。どんなにスマートなプログラムでも、システムリソースを非効率的に使っていたら、それだけで残念なことになります。MQL言語は、トレーディングや分析用のプログラムを書くためのものであり、プログラミングのためのプログラミングではないことを、イノベーションを追い求める皆さんは忘れてしまったのかもしれませんね。したがって、コードを書くスピードよりも、プログラムのスピードや効果を最優先すべきなのです。データサイズが大きい作品は事前に想定されているからです。

MQL4の機能は、大多数のユーザーにとってかなり十分なものだと思います。唯一足りなかったのは、構造体のサポート、変数へのポインタ、関数へのポインタ(またはコールバック関数の組み込みサポート)でした。そして、それだけです。この武器があれば、非常に効果的に動作する任意のプログラムを作成し、必要な数のスレッド、コールバックなどを作成することができます。

 

肉、悪気はないのですが、この程度の問題 意識では、幼稚園で

全部じっくり読んでいますが、本格的な教育をする可能性はないですね。MQL/MQL2/MQL4/MQL5言語において11年の経験があります。

 
meat:

MT5のマルチスレッドには全く関係なく、MQL5のマルチスレッドに 関係することです。このスレッドを実行中のプログラムの中に自分たちで作ることはできません。また、ソフトウェアがインジケータを使用して新しいチャートを開くことは、あなたも同意するように、タンバリンダンスであり、解決策ではありません。

VinAPIは助かります。MQL5ではマルチスレッドは必要ありません。つまり、まったく必要ないのです。
 
meat:


すごいのは、マスユーザーのことを考えたら、MQL5でこれだけ不要なものを作ってしまったということです。

一人のユーザーを対象にした場合、不要なものが多いかもしれません。そして、視野が広がり、追加機能が必要になってくると、逆に「すでにあるもので、何かが足りない」ということが分かってくるのです。

MQL5は現在も開発中です。少しずつ新しいものが加わっています。もちろんデメリットもありますが。例えば、独自のイベントを作れない、例外ハンドラがない、マルチスレッドがないなどです。いつかこのすべてが明らかになるといいのですが?しかし、明日からすべて実施されるとは思えません。

もし本当に望むなら、OpenCLでもテストエージェントのマルチスレッド化が可能です。完全に便利というわけではありませんが、それでもそこにあって、タスクを並列化する ことができます。

 
Renat:

肉、悪気はないのですが、幼稚園の問題を この程度の理解で

そして、コーポレートスタンダードではないとおっしゃる))

質問が出るということは、答えが表面に出ていないということ...。