MQL4に関する質問です。 - ページ 8

 
図6
ファイル:
zigtester.jpg  16 kb
 
ANK:
これが正しいかどうか、誰が知っていますか?
1つのファイルを複数回コードに含めることはできません。
ということで、そうでなければならない。
- あるいは、グローバル変数や関数の名前を変えたファイルを複数作る (これはもっといいバージョンです =)
- または、異なる関数から呼び出す際に重複がないようにロジックを設計する(これには多少の作業が必要かもしれませんが、良い解決策です ;)

そして、あなたは例、エラーの説明、または完全なコード(すべてのベスト)なしでより正確な何かを言うことはできません =)。
 
Expert Advisorとループスクリプトは同時にウィンドウ内で実行されています。
Expert Advisor が取引操作に対するサーバーの応答を待っている間、次のように考えてよいでしょうか。
スクリプトは、停止や遅延なしに通常通り動作し、計算を実行します(取引操作では ありません)?
 
SKif:
Expert Advisorとループスクリプトは同時にウィンドウ内で実行されています。
Expert Advisor が取引操作に対するサーバーの応答を待っている間、次のように考えてよいでしょうか。
スクリプトは、停止や遅延なく、計算を実行し続けます(取引操作では ありません)?
はい。
Expert Advisor とスクリプトの両方が、それぞれのスレッドで動作します。
 
OK、ありがとうございます。
EAボタンをONにした時に、インジケーターとEAの開始時刻が一致しないのは正常と考えるべきでしょうか?
何か勘違いしているか、やり方が間違っているのかもしれませんが、時間差が250ms以上になることがあるというのはわかりました。

またEAボタンの 状態は、インジケーターの動作に影響を及ぼしますか?
このボタンの状態をインジケータから追跡することは可能でしょうか?
 
ちょっと調べてみたら...。

ウインドウにインジケーターを付けました。
int start() { GlobalVariableSet(GV_Tick, 1); return; }

ウィンドウにEAを配置。
int start() { GlobalVariableSet(GV_Knopka, 1); return; }

そして、こんなスニペットを持つスクリプト。
... T_Tick=0; T_Knopka=0; while (Tick==0 || Knopka==0 ) // Ждём тика и разреш. кнопки советн. { Tick = 0; Knopka = 0; Tick = GlobalVariableGet(GV_Tick ); Knopka = GlobalVariableGet(GV_Knopka ); if (Tick>0 && T_Tick==0)T_Tick=GetTickCount(); if (Knopka>0) { T_Knopka=GetTickCount(); Alert("T_Tick=",T_Tick, " T_Knopka=",T_Knopka, " Запазд= ",T_Knopka-T_Tick); } } ... GlobalVariableSet(GV_Knopka, 0 ); // Обнуляем прошлые события GlobalVariableSet(GV_Tick, 0 ); // Обнуляем прошлые события


そして、その結果がこちらです。
赤で示した時間帯は、マウスが直径50mmの円の中を1秒間に3回転して移動するだけです。
端末への影響はありませんでした。

通常の」静かな時間帯では、ラグがおよそ1.5倍であることが判明しました。20~60msで、ユーザーが端末に接触している間はさらに多くなります。
また、ウィンドウのサイズ変更時やウィンドウの切り替え時にインジケータのstart()が開始されることがわかりました。
---------------
私は、この遅延の合法性、「普通」と「異常」に主に興味があります。
そして、開発者からのコメントも欲しいですね。どの程度、意図に合っているのか。
ファイル:
1.png  21 kb
 
自分でテストをして、結果を報告します。
 
OKです。
他に選択肢がない中で、EAボタンがOFFになっているかどうかを判断するために、EAとインジケーターのシグナルのラグタイムを計測するという選択肢を導き出しました。この時間はとても短いはずだった。でも、あまりに差がありすぎる。

何が出てくるか、とても興味深いです。
(一般的には、EAボタンの状態 という単純な1つの質問に答えるために、このキッチン全体が必要なのです)
 
専門家は、他のタスクから独立して自分のスレッドで作業します。
CPUの負荷はマウスの動きによって発生し、何百ものマウス移動コマンドが一斉に送信されます。 この「マウス」コマンドの中には、EAを更新するコマンドも含まれており、これが遅延の原因となっていることが判明しました。
 
つまり、スクリプトとインジケータとExpert Advisorの非同時動作は共通の現象であると考えるべきでしょうか。
では...人はどうやって生きていくのでしょうか?