MQLによる非同期・マルチスレッドプログラミング - ページ 27

 
Roman:

このテーマを読み直し始めたら、イゴールさんがすでに書かれていました。

メモリ確保とスレッド登録が必要というのは、そういうことだよ、ユーリ。
イゴールはアロケーションと登録が必要だと言っていますが、あなたは何もする必要がないと言っています。
だから、頭がクラクラするんです。その結果、デッドロックに陥ってしまうのです。

イゴールは大学で専門的に勉強したのだから、私たち独学組よりは理解しているはずだ。
私も当初は、メモリを確保して初期化するという考えに傾いていました。
初期化とメモリの確保は、流れてはいけない、ゴミになってはいけないということで、正しいコーディングのための重要なポイントです。

そこでIgorに質問なのですが、C++でどうやるか説明してください。
言葉でなく、例で、何も理解できない ))

まーたプロでマルチスレッドできないのかよ、悪気はないんだよ。でも、鉄板の気分なら、読んでみて分かるはずです。

https://en.cppreference.com/w/cpp/thread

https://en.cppreference.com/w/cpp/atomic

例が必要な場合は、以下を参照してください。

https://en.cppreference.com/w/cpp/thread/thread/join

https://en.cppreference.com/w/cpp/thread/async


繰り返しになりますが、これは厄介な問題で、ナゴコロしやすいものです(例えば、共有データよりも遅く破壊されるスレッドからフックを外す、適切な同期がない場合のコンパイラの最適化、その他いろいろとあります)。

 
Реter Konow:
インジケータはGUIのキャリアとして、リソースはExpert Advisorとの通信用として使用することを提案します。また、MT4では、Expert Advisorのテスターをパネルを使って標準のチャートから操作することができるようになる予定です。ボタンだけでなく、すべてのコントロールが機能します。テスト中のEAにテキストでも何でも送れるようになります。すでにテスト済みです。すべてがうまくいく。

ピーター、あなたはわかっていない。

アドバイザーは1 人です。また、エージェントモードのみで、見えないチャート上で自分自身を 追加実行します。エージェント上で実行されているイベントはありません。つまり、リソースが呼び出せない、タイマーが始まらない、ティックが来ない。

インジケータがEAをトリガーする場合、これらは2つの存在となります。

Expert Advisorは、これらのエージェントを好きなだけ作成することができます。それぞれが独立したスレッドになる。

 
Andrey Barinov:

ピーター、あなたはわかっていない。

アドバイザーは1 人です。また、エージェントモードのみで、見えないチャート上で自分自身を 追加実行します。エージェント上で実行されているイベントはありません。つまり、リソースが呼び出せない、タイマーが始まらない、ティックが来ない。

インジケータがEAをトリガーする場合、これらは2つの存在となります。

Expert Advisorは、これらのエージェントを好きなだけ作成することができます。それぞれが独立したスレッドになる。

見えないチャートにエージェントモードで勝手に起動するとか?それは新しいことです。私は知りませんでした。
 
Реter Konow:
見えないチャートの上でエージェントモードで勝手に動くってこと?それは新しいことです。私は知りませんでした。

ChartApplyTemplate

 
Andrey Barinov:

ピーター、あなたはわかっていない。

...

アドバイザーは、このエージェントをいくつでも持つことができます。それぞれ別の流れとして出てきます。

マルチスレッドはすでに存在しているのですね。ここでは誰もそのことを知らないのか?

 
Andrey Barinov:

アドバイザーは1 人です。また、自走も します。

KBテスターも同じ原理です。このようなEAのデバッグの問題は解決できたのでしょうか?この原理でテスターを作ると、書くことの不便さはデバッグのしにくさにあった。

 
Реter Konow:

では、マルチスレッドがすでに存在することがわかったのですか?ここでは誰もそのことを知らないのか?

これを「対談を聞いていない」と言います。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MQLによる非同期・マルチスレッドプログラミング

fxsaber さん 2019.07.25 12:16

MQL単体では、EAカウントの自動実行により、この2つの課題を解決しています。

 
Реter Konow:

マルチスレッドがすでに存在しているということでしょうか。ここでは誰もそのことを知らないのか?

よく知られた手口ですね。私が発明したわけではありません。数年前、ある掲示板で私が考案したものです。

 
fxsaber:

CBテスターも同じ原理です。このようなEAのデバッグの問題は解決できたのでしょうか?この原理でテスターを作っていた時、書いていて不便だったのはデバッグのしにくさでした。

プリント、ASSERT、DEBUG。この場合、標準のデバッガは使わないのですが...。

 
Andrey Barinov:

よく知られた手口ですね。私が発明したわけではありません。数年前、ある掲示板で教えてもらったものです。

この「マルチスレッド」は、その概念にどの程度対応しているのでしょうか。この機能を使って、プログラムのタスクをスレッドに分割することは可能でしょうか?