Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 667

 
Leo59:
Leider funktioniert es nicht.

init();
if(IsTradeAllowed()) Print("Handel ist erlaubt");
if(!IsTradeAllowed()) Print("Handel ist NICHT erlaubt");


Hier steht: "Handel zugelassen"

Es muss einen anderen Weg geben. Wie?

Versuchen Sie es so:

starttime=(int)TimeCurrent()+sec; // например +5 секунд. Эту строку в OnInit

if(TimeCurrent()>starttime) {
...
}

Ich denke, das Prinzip ist klar, und solange es keinen Tick gibt, wird sichTimeCurrent nicht ändern

 
Vitaly Muzichenko:

Versuchen Sie es auf diese Weise:

starttime=(int)TimeCurrent()+sec; // например +5 секунд

if(TimeCurrent()>starttime) {
...
}

Ich denke, das Prinzip ist klar, und solange es keinen Tick gibt, wird sichTimeCurrent nicht ändern

Ja, für Forex ist das gut, denn Zecken kommen oft. Was, wenn es nicht für Forex ist?
 
Leo59:
Ja, für Forex ist es gut, weil die Zecken oft kommen. Was, wenn es nicht für Forex ist?
Der Punkt ist, dass während der Initialisierung die Variable "starttime" ein paar Sekunden länger ist als die Serverzeit. Wenn alsodie Ticks bei der Markteröffnung kommen, dannwirdTimeCurrentimmer größer sein alsstarttime, und die Ticks spielen keine Rolle - die Bedingung ist erfüllt und wird bis zur nächsten Reinitialisierung erfüllt sein, z.B. durch einen Wechsel des Zeitrahmens oder ein Neuladen des Terminals.
 
Vitaly Muzichenko:
Der Punkt ist, dass während der Initialisierung die Zeit der Variablen "starttime" einige Sekunden länger ist als die Serverzeit.
Ich muss die Informationen jetzt verarbeiten, bevor der erste Tick eintrifft, damit beim Eintreffen des neuen (ersten) Ticks alles betriebsbereit ist.
 
Leo59:
Das ist es nicht. Prüfen Sie es jetzt, wenn es Ihnen nichts ausmacht). Aber das ist nicht der Punkt. Ich muss die Informationen jetzt verarbeiten, bevor der erste Tick eintrifft, damit beim Eintreffen des neuen (ersten) Ticks alles bereit ist.
Ich verwende diese Methode schon seit mehreren Jahren, aber ich brauche nichts zu bearbeiten, solange es keine Zecke gibt. Sie brauchen eine andere Lösung, und der Link, den ich Ihnen gegeben habe, sollte
 
Vitaly Muzichenko:
Ich benutze das schon seit einigen Jahren, aber ich muss nichts bearbeiten, solange es keine Zecken gibt. Sie brauchen eine andere Lösung, und nach dem Link, den Sie angegeben haben, sollte das sein
Sie haben Recht, "starttime=(int)TimeCurrent()+sec; // z.B. +5 Sekunden" ist natürlich größer als TimeCurrent(). Ich habe überreagiert, mein Gehirn scheint komplett geschmolzen zu sein ))
Der Link, den ich dort angegeben habe, sagt nur TimeLocal(), aber ich wollte es vermeiden.
 
Leo59:
Sie haben Recht, "starttime=(int)TimeCurrent()+sec; // zum Beispiel +5 Sekunden" ist natürlich größer als TimeCurrent(). Ich habe überreagiert, mein Gehirn scheint komplett geschmolzen zu sein ))
Der Link führt nur zu TimeLocal() und das wollte ich vermeiden.

Je nach Aufgabe können Sie versuchen, eine Kombination ausTimeCurrent()+OnTimer() oder TimeCurrent()+TimeGMT()+TimeGMTOffset() zu verwenden

Sie können alle Bedingungen durch Timer und Handel durchTimeCurrent() Es gibt viele Lösungen, aber die Wahl ist bis zu Ihnen für Ihre individuelle Aufgabe.

 
Vitaly Muzichenko:

Je nach Aufgabe können Sie versuchen, eine Kombination ausTimeCurrent()+OnTimer() oder TimeCurrent()+TimeGMT()+TimeGMTOffset() zu verwenden

Sie können alle Bedingungen per Timer ausführen und perTimeCurrent() handeln. Es gibt viele Lösungen, aber die Wahl bleibt Ihnen für Ihre individuelle Aufgabe überlassen.

Und wie, in meiner Frage, kann OnTimer() angewendet werden?
 
Leo59:
Und wie, in meiner Frage, kann OnTimer() angewendet werden?
Lassen Sie das Sperrkennzeichen so lange eingeschaltet, bis alles berechnet ist, zum Beispiel...
 
Artyom Trishkin:
Halten Sie die Nicht-Arbeitsfahne, bis alles berechnet ist, zum Beispiel...
Artyom, die Frage war, wie man einen freien Tag programmatisch definieren kann, ohne auf TimeLocal() zurückgreifen zu müssen. ))