erklären
MQL4 verwendet TimeLocal(); TimeCurrent(), die auf Tick pro Tick sogar iTime.... basieren.
Was ich wirklich will, ist in der Lage sein, auf meinem Diagramm eine Echtzeituhr anzuzeigen, die jede Sekunde aktualisiert wird, wahrscheinlich mit meiner Computeruhr oder einem Remote-Server.
TimeCurrent() ist nicht tickbasiert.
Aber die Startfunktion ist tickbasiert. Sie können eine Endlosschleife in Kombination mit sleep verwenden. Es gibt einen Artikel hier auf mql4.com, der die Vorteile und Lösungen erklärt.
Da das gesamte mt4 tickbasiert ist, mag ich es nicht, zeitabhängige Logik zu implementieren. In der Vergangenheit habe ich diese beiden in meinen Custom Timeframe Indikatoren kombiniert. Es ist nur eine einfache Arbeit, aber Sie bekommen vielleicht eine Idee. Wenn Sie eine Uhr wollen, die jede Sekunde aktualisiert wird, dann ist meine Arbeit nutzlos für Sie. https://www.mql5.com/en/code/10080
//z
Die Idee ist, eine Uhr dazu zu bringen, jede Sekunde zu aktualisieren und nicht nur Funktionen in Start() aufzurufen, wie Ihr Programm, z.B.
if(TimeCurrent()>(t+TimeInSeconds))
Nach Ihrer Erklärung kann ich eine while-Schleife in der init()-Funktion verwenden, und wenn ich sie dann in der start()-Funktion aufrufe, wird sie immer noch Tick für Tick aktualisiert!
Sie benötigen so etwas wie die folgende Startfunktion. Die Schleife wird beim ersten Tick ausgeführt. Danach wird sie tickunabhängig sein
while(true){ updateWatch(); Sleep(1000); }
zzuegg; dies wird eine Endlosschleife sein und wird den Metatrader-Indikator auf eine Sache beschränken... zählen.
Wenn Sie also die Sleep-Funktion in Kombination mit dem TimeCurrenet verwenden, das von einer Funktion aufgerufen wird, um alle Sleep(1000) eine Sekunde hinzuzufügen, kann dieses Programm nichts anderes tun.
Es wird nur zählen....so dass Sie sich auf eine Funktion beschränken.
und ja Metatrader mag keine Endlosschleifen; es stürzt ab, wie ich jetzt erfahren habe lol es sollte irgendwo eine Pause haben :)
Sie sind nicht auf eine Funktion beschränkt. Sie können alles tun, was Sie innerhalb der Schleife wollen. Sie könnten einige Neuberechnungen benötigen, um 1sec Ausführungszeit zu garantieren. aber im Allgemeinen funktioniert es.
Ich habe es nie mit Indikatoren gemacht, aber in EA's funktioniert es.
Eine andere Möglichkeit ist, ein externes Programm zu verwenden, um falsche Ticks in einem 1-Sekunden-Intervall an Ihr Terminal zu senden. Damit haben Sie sichergestellt, dass die Startfunktion mindestens einmal pro Sekunde aufgerufen wird. In Kombination mit meinem Code aus den Custom Timeframe Candles sollten Sie Ihr Ergebnis erhalten.
while( !(IsTesting() || IsStopped()) ){ updateWatch(); RefreshRates(); if (...) doTrading(); Sleep(1000); }
MQL5 verwenden
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Meines Erachtens arbeitet die Funktion Start() tick by tick.
Gibt es eine Möglichkeit, Echtzeitdaten von der Computeruhr zu verwenden und jede Sekunde zu aktualisieren? Nicht Tick für Tick, sondern jede Sekunde?
Wenn ja, helfen Sie mir bitte weiter.
Danke