Fragen zu MQL4. - Seite 8

 
Abbildung 6
Dateien:
zigtester.jpg  16 kb
 
ANK:
Wer weiß, ob das richtig ist?
eine Datei darf nur einmal im Code enthalten sein.
so muss es sein:
- oder mehrere Dateien mit unterschiedlichen Namen für globale Variablen und Funktionen erstellen (dies ist eine lahmere Version =)
- oder die Logik so zu gestalten, dass es keine Überschneidungen beim Aufruf aus verschiedenen Funktionen gibt (dies kann etwas Arbeit erfordern, ist aber eine gute Lösung ;)

Und etwas genaueres kann man ohne Beispiele, Fehlerbeschreibungen oder kompletten Code (am besten) nicht sagen =)
 
Der Expert Advisor und das Schleifenskript laufen gleichzeitig im Fenster.
Ist es richtig anzunehmen, dass während der Expert Advisor auf die Antwort des Servers auf eine Handelsoperation wartet
das Skript wie gewohnt ohne Unterbrechungen und Verzögerungen weiterarbeitet, seine Berechnungen durchführt (keine Handelsoperationen)?
 
SKif:
Der Expert Advisor und das Schleifenskript laufen gleichzeitig im Fenster.
Ist es richtig anzunehmen, dass während der Expert Advisor auf die Antwort des Servers auf eine Handelsoperation wartet
das Skript ohne Unterbrechungen und Verzögerungen weiterläuft und seine Berechnungen (keine Handelsoperationen) durchführt?
Ja.
sowohl der Expert Advisor als auch das Skript arbeiten in ihren eigenen Threads.
 
OK, vielen Dank.
Sollten wir es als normal betrachten, wenn die Startzeit des Indikators und des EA nicht übereinstimmt, wenn die EA-Taste eingeschaltet wird?
Vielleicht habe ich etwas falsch verstanden oder mache etwas falsch, aber ich verstehe, dass der Zeitunterschied mehr als 250 ms betragen kann.

Auch. Hat der Status der EA-Schaltfläche einen Einfluss auf den Betrieb des Indikators?
Ist es möglich, den Zustand dieser Schaltfläche über den Indikator zu verfolgen?
 
Ich habe ein wenig nachgeforscht...

Setzen Sie einen Indikator in das Fenster:
int start() { GlobalVariableSet(GV_Tick, 1); return; }

Stellen Sie einen EA in das Fenster:
int start() { GlobalVariableSet(GV_Knopka, 1); return; }

Und ein Skript mit einem Snippet wie diesem:
... 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 ); // Обнуляем прошлые события


Und hier sind die Ergebnisse:
Während des rot markierten Zeitraums bewegte sich die Maus einfach mit 3 Umdrehungen pro Sekunde in einem Kreis von 50 mm Durchmesser.
Es gab keine Auswirkungen auf das Terminal.

Es stellt sich heraus, dass in einer "normalen" ruhigen Zeit die Verzögerung ca. 20-60 ms, und noch mehr während der Zeit, in der der Benutzer mit dem Terminal in Kontakt ist.
Außerdem habe ich herausgefunden, dass die Funktion start() des Indikators in der Zeit der Größenänderung des Fensters und beim Wechsel zwischen den Fenstern gestartet wird.
---------------
Ich interessiere mich vor allem für die Rechtmäßigkeit dieser Verzögerung, ob sie "normal" oder "ungewöhnlich" ist.
Und ich würde gerne einige Kommentare von den Entwicklern hören, inwieweit sie der Absicht angemessen sind.
Dateien:
1.png  21 kb
 
Ich werde die Tests selbst durchführen und über die Ergebnisse berichten.
 
GUT.
In Ermangelung einer anderen Möglichkeit habe ich mich an der Messung der Verzögerungszeit von EA- und Indikatorsignalen orientiert, um zu beurteilen, ob der EA-Button ausgeschaltet war. Diese Zeit sollte sehr kurz sein. Aber sie variiert zu stark.

Es ist sehr interessant, was Sie herausfinden werden.
(Im Allgemeinen brauche ich diese ganze Küche, um eine einfache Frage zu beantworten: Status der EA-Taste )
 
Experten arbeiten in ihren eigenen Threads unabhängig von anderen Aufgaben.
Es stellte sich heraus, dass die CPU-Belastung durch Mausbewegungen verursacht wird, wenn Hunderte von Mausbewegungsbefehlen en masse gesendet werden. Unter diesen "Maus"-Befehlen befinden sich auch Befehle zur Aktualisierung von EAs, was zu Verzögerungen führt.
 
Wir sollten also davon ausgehen, dass der nicht gleichzeitige Betrieb des Skripts, des Indikators und des Expert Advisors ein allgemeines Phänomen ist?
Also... wie lebt man in dieser Welt?