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

 
Реter Konow:

通常のチャート(OBJ_CHARTではない)にコピーしたリソースを使ったコミュニケーションはうまくいくでしょうか?それとも、そこに何らかの制約があるのでしょうか?

よくわからない。もし、そのような実験をしたら、ここで結果を教えてください。

 
Andrey Barinov:

この実装では、OnTradeのアプローチは論外という理解でいいのでしょうか?スレーブでトレード注文の結果を待つべき?

 
fxsaber:

この実装では、OnTradeのアプローチは論外という理解でいいのでしょうか?また、スレーブでトレードオーダーの結果を待つ必要があるのでしょうか?

私はOnTradeを使っていません(私はクロスプラットフォームのコードを書いており、MT4にはそれがありません)。でも、私もあまり待っていません(sleepとwhileは使っていません)。OrderSend() が返すもので十分です。

 
Реter Konow:

通常のチャート(OBJ_CHARTではない)にコピーしたリソースを使ったコミュニケーションはうまくいくでしょうか?それとも、そこに何か制約があるのでしょうか?

各EAエージェント・コピーは、固有のリソース名を作成するための自分の番号だけを知っていればよい。

 
Andrey Barinov:

OrderSend()が返すもので十分です。

Result.deal = 0 - 十分ですか?あと、MT5でOrderSend 直後に取引履歴が同期されないクセがある。

OnTradeは4で動作するようです。

 
fxsaber:

Result.deal = 0 - これでいいのか?

まだ、(result.order==0 && result.deal==0)にはなっていません。

https://docs.mql4.com/ru/runtime/running
Выполнение программ - Программы MQL4 - Справочник MQL4
Выполнение программ - Программы MQL4 - Справочник MQL4
  • docs.mql4.com
Каждый скрипт и каждый эксперт работает в собственном отдельном потоке. Все индикаторы работают в одном интерфейсном потоке терминала. Обработка тиков и синхронизация истории также производится в интерфейсном потоке. Если пользовательский индикатор вызван при помощи функции iCustom(), то этот индикатор работает в потоке вызвавшей его программы...
 
Andrey Barinov:

意識していない。もし、そのような実験をしたら、ここで結果を教えてください。

そうします。

一般的には、このような状況はおかしいと思います。リソースを介してデータを読み出す場合、そのリソースがあるプログラムのアドレスを指定する必要があります。しかし、同じEAのコピーが実行されるので、同じアドレスを持つことになります。この場合、データの読み書きはどのように行われるのでしょうか?不思議なことに...

 
fxsaber:

各EAエージェントのコピーは、固有のリソース名を作成するために、自身の番号だけを知っている必要があります。

同意見です。
 
Andrey Barinov:

まだ、(result.order==0 && result.deal==0)になっていない。

5点くらいです。

 
fxsaber:

5点くらいです。

そういうことなんです。

OnTradeは4で動くというコメントに対する答えとして、4へのリンクを貼りました。