Zeitschaltuhr - Seite 3

 
TheXpert:

Verwendung des Timer-Managers. Ich wollte einen Artikel schreiben, aber dann kam ich vom Thema ab. Auch wenn es vielleicht nicht für einen Artikel reicht.

Aufgrund des Single-Thread-Codes und der Ereignis-Warteschlange werden Sie es nicht in einer bestimmten Zeit erhalten, aber mit einem durchschnittlichen Fehler von weniger als einer Sekunde (das Maximum wird durch die maximale Zeit der Ereignisausführung durch den Code begrenzt).

Zumal es nur eine Zeitschaltuhr gibt.

Brauchen Sie es?

Ja, die Fehlerquote ist fast unmerklich. Vielleicht wollen Sie es gleich in Code Base hochladen? Es wird im Forum verloren gehen, und jemand anderes wird es dort brauchen.
 
Yedelkin:
Ja, der Fehler ist fast nicht wahrnehmbar. Warum stellen Sie es nicht gleich in Code Base ein? Es wird im Forum verloren gehen, und jemand anderes wird es brauchen.

Ich bin noch nicht ganz fertig, ich bin mit meinem File Unlimited für 5 beschäftigt. Ich werde bald fertig sein.

Es geht nicht darum, ob wir sie brauchen werden oder nicht. Das ist die einzige normale und korrekte Art, mit mehreren Zeitschaltuhren zu arbeiten.

 
TheXpert:

Ich bin noch nicht ganz fertig, ich bin mit meinem File Unlimited für 5 beschäftigt. Ich werde bald fertig sein.

Das ist okay, wir warten. Ich werde mich mit SD in Verbindung setzen, vielleicht ermöglichen sie es, das erste Timer-Ereignis mit einer gewissen Verzögerung zu starten.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
 
Yedelkin:

Gibt es eine Möglichkeit, den EA dazu zu bringen, Timer-Ereignisse zu einer bestimmten Zeit zu erzeugen? Zum Beispiel zu Beginn der letzten Minute der Stunde oder des Tages.

Wo liegt das Problem? Lassen Sie einen normalen Timer laufen und analysieren Sie die Zeit. Wenn die Zeit nicht passt, verlassen Sie OnTimer sofort.
 
TheXpert:

Auch dies ist ein großartiger Ersatz für die Sleep-Funktion in den Truthähnen, und auch hier ist eine Sekunde ein bisschen viel.

Das Thema ist offen für Diskussionen. Was meinen Sie dazu?

Es gibt noch eine Nuance. Der Timer im Indikator funktioniert nicht, wenn er nicht mit dem Diagramm verbunden ist. Daher ist selbst ein zweiter Timer bei Indikatoren oft nutzlos.

Hier ist eine Lösung für die Überwachung von Ereignissen von weniger als einer Sekunde. Vielleicht kann ein Timer in Verbindung mit GetTickCount() verwendet werden.

 
stringo:
Was ist das Problem? Sie müssen einen normalen Timer laufen lassen und die Zeit auswerten. Wenn die Zeit nicht passt - beenden Sie OnTimer sofort.

Und warum sollte ich die Warteschlange mit sekündlichen Timer-Ereignissen bombardieren und meine Zeit damit verschwenden, OnTimer() jede Sekunde zu überprüfen, wenn ich OnTimer() einmal pro Tag (pro Stunde usw.), aber zu einer bestimmten Zeit ausführen möchte?

Ich glaube, dass es viel rationeller und eleganter wäre, diese Funktion mit zwei Parametern zu verwenden:

   bool EventSetTimer(
                   int seconds,      // количество секунд для OnTimer
                   int задержка=0     // количество секунд задержки запуска первого события Timer 
                   );

Das hat der SD auch vorgeschlagen.

Zusatz: Der Wert des Verzögerungsparameters kann einfach und einmalig in OnInit() berechnet werden.

 
Yedelkin:

Und warum...

Nun, genau das habe ich vorgeschlagen. Nur verpackt in einem praktischen Paket.

Einmal pro Sekunde ist ein erschreckend geringer Betrag, vor allem, wenn man unnötige Ereignisse auslässt.

 
Sie müssen nur die Verzögerung in Sekunden in Millisekunden umrechnen.
bool EventSetTimer(1000);// количество миллисекунд для 1 секунды задержки для OnTimer

und dies.

int задержка=0     // количество секунд задержки запуска первого события Timer 

es überhaupt nicht zu tun, weil es einfach Blödsinn ist.

 
pusheax:

int задержка=0     // количество секунд задержки запуска первого события Timer 

es überhaupt nicht zu tun, weil es einfach Blödsinn ist.

Ich frage als Experte für Bullshit. Welche Idee steckt hinter dieser Verzögerung(int delay=0), und zu welchem Zweck wurde sie (delay) vorgeschlagen? Wie haben Sie das verstanden?

Und zweite Frage, die ich klären möchte, was ist der Sinn der Angabe von"Anzahl der Millisekunden für 1 Sekunde Verzögerung für OnTimer"? Welches Ziel wollen Sie erreichen? Zum Beispiel, um jede Sekunde in OnTimer um drei Millisekunden zu verzögern?

 
TheXpert:

Nun, genau das wollte ich damit sagen. Nur verpackt in einem praktischen Paket.

Einmal pro Sekunde ist ein erschreckend geringer Betrag, vor allem, wenn man unnötige Ereignisse auslässt.

Wie Sie verstehen, lautet in diesem Fall mein Motto: "Nieder mit allen Miesmachern, wenn man auf sie verzichten kann". Das Einzige, was Sie tun müssen, ist die Verzögerung der Erzeugung des ersten Timer-Ereignisses auf der Terminalebene für die vom Benutzer gewählte Zeit zu ermöglichen. Damit will ich die Bedeutung Ihres Codes nicht schmälern, zumal ich ihn einfach nicht gesehen habe.
Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
Программы MQL5 / События клиентского терминала - Документация по MQL5
Grund der Beschwerde: