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

 
Renat Akhtyamov:

nun, dann der Indikator Zyklus, in dem die Anzahl der Balken ist diese sehr Linie.

Ich frage mich - was ist klar(?), dh wo man über die Besonderheiten der MT5 im Offline-Modus zu lesen, könnten Sie mir bitte sagen?

Der Indikator rates_total - erfolgreich verwendet anstelle von Bars() in der OnCalculate()-Schleife
 
Artyom Trishkin:
Im Indikator rates_total - er wird erfolgreich anstelle von Bars() in der Schleife in OnCalculate() verwendet

Ja. Ja, so etwas gibt es.

Gibt es die gleiche Anzahl von Balken für verschiedene Instrumente/Zeitrahmen, da ich einen Mehrwährungsindikator habe?

Ich kann hier Parameter ändern

Bars(_Symbol,_Period);

Aber was ist mit rates_total, um den Indikator für verschiedene Zeitrahmen und Symbole zu berechnen?

 
Renat Akhtyamov:

Ja. Ja, so etwas gibt es.

Gibt es die gleiche Anzahl von Balken für verschiedene Instrumente/Zeitrahmen, da ich ein Multiwährungstool habe?

Um die Anzahl der Balken der Historie für einen nicht aktuellen Zeitrahmen oder ein nicht aktuelles Symbol in einem Multi-Währungs-/Multi-Timeframe-Indikator zu erhalten, sollten wir Bars() verwenden
 
Artyom Trishkin:
Um die Anzahl der Balken der Historie für einen nicht aktuellen Zeitrahmen oder ein nicht aktuelles Symbol in einem Multi-Währungs-/Multi-Timeframe-Indikator zu erhalten, sollten Sie Bars() verwenden

Das ist genau das, worüber ich schreibe - dass diese Funktion nicht offline funktioniert, obwohl es einen Zitatverlauf gibt

Daher kann der Indikator nicht offline getestet werden.

Es stellt sich heraus, dass das Zitat in MT5 persönlich an jede IP gesendet wird und kann sich von der Geschichte des Kurses, die bereits auf dem Chart gezeichnet wird, unterscheiden? //And so the logic goes...

 
Renat Akhtyamov:

und dann den Indikator, bei dem die Anzahl der Balken genau dieser Linie entspricht.

Ich frage mich - was ist klar(?), d.h. wo über die Besonderheiten von MT5 im Offline-Modus zu lesen, könnten Sie bitte sagen?

Es ist klar, dass MT5. Es ist nicht klar, was vor dem Aufruf von Bars() getan wurde. Dieses einfache Skript funktioniert und gibt auch dann keine Null zurück, wenn keine Verbindung zum Server besteht oder wenn es überhaupt kein Netzwerk gibt.

Ich habe es nicht mit Indikatoren versucht, deshalb habe ich gefragt, wie es in Ihrem Fall gemacht wird. Wenn der erneute Aufruf die tatsächliche Anzahl von Takten ist, wird der erste Aufruf höchstwahrscheinlich eine Aktualisierung der Daten im Cache verursachen.

void OnStart()
  {
        Print("Bars on chart - ",Bars(_Symbol,PERIOD_CURRENT));  
  }
 
Vitalie Postolache:

Es ist klar, dass MT5. Es ist nicht klar, was vor dem Aufruf von Bars() getan wurde. Dieses einfache Skript funktioniert bei mir und liefert auch dann keine Null, wenn keine Verbindung zum Server besteht oder überhaupt kein Netz vorhanden ist.

Ich habe es nicht mit Indikatoren versucht, deshalb habe ich gefragt, wie es in Ihrem Fall gemacht wird.

void OnStart()
  {
        Print("Bars on chart - ",Bars(_Symbol,PERIOD_CURRENT));  
  }
eindeutig
 

Was ist der beste einfache Weg, um einen Link zu einer Kerze schließen, um die EA laufen? Um Indikatoren neu zu berechnen, Aufträge zu entfernen/zu platzieren, usw.?

Per Zeitschaltuhr?

Aber wie kann man den Timer zum richtigen Zeitpunkt starten, so dass er stündlich um HH:00:00? ausgelöst wird und nicht jede Stunde nach der Aktivierung des Timers?

 
dimnik:

Was ist der beste einfache Weg, um einen Link zu einer Kerze schließen, um die EA laufen? Um Indikatoren neu zu berechnen, Aufträge zu entfernen/zu platzieren, usw.?

Per Zeitschaltuhr?

Aber wie kann man den Timer zur richtigen Zeit starten, so dass er stündlich um HH:00:00? ausgelöst wird und nicht jede Stunde nach der Aktivierung des Timers?

Überprüfen Sie die Öffnungszeit der aktuellen Kerze und vergleichen Sie sie mit der Öffnungszeit der letzten Überprüfung. Wenn sie gleich sind, bedeutet dies, dass noch kein neuer Balken geöffnet wurde und OnTick() zurückkehrt. Wenn nicht gleich - wir haben die Eröffnung einer neuen Bar identifiziert - tun Sie alles, was in der Expert Advisor geschrieben ist und merken Sie sich die neue Öffnungszeit für die nächste Überprüfung.
 
Vitaly Muzichenko:

Grafische Frage:

Es gibt einen Entwurf wie diesen

for(long currChart = ChartFirst();currChart != -1; currChart=ChartNext(currChart)) {
 if(currChart == график тестера) continue; // Что сюда написать?
  ObjectSetInteger(currChart,"Sync",OBJPROP_BGCOLOR,clrGreen);
}

Wie kann ich herausfinden, dass die Karte nicht die Hauptkarte ist, sondern im Testmodus geöffnet ist, und sie überspringen?

Als Anregung.

Erstellen Sie eine Vorlage für das Diagramm und fügen Sie eine Beschriftung mit dem Namen ein, z. B. "TesterChart" oder ein beliebiges anderes Objekt, das Sie mit Nullkoordinaten versehen können, damit es nicht sichtbar ist. Nennen Sie diese Vorlage "Tester". Jetzt haben alle Diagramme aus Tests ein Objekt mit diesem Namen. Als nächstes fragen Sie, ob das Diagramm dieses Objekt hat, wenn ja, ist es "Unser Tester", überspringen Sie es.

Durch und durch, aber ich kenne keinen anderen Weg.

 
Vasiliy Pushkaryov:
Als Anregung.

Erstellen Sie eine Vorlage für das Diagramm und beschriften Sie es mit einem Namen wie "TesterChart" oder einem anderen Objekt, möglicherweise mit Null-Koordinaten, damit es nicht sichtbar ist. Nennen Sie diese Vorlage "Tester". Jetzt haben alle Diagramme aus Tests ein Objekt mit diesem Namen. Als Nächstes fragen Sie, ob der Graph dieses Objekt hat, wenn ja, ist es "Unser Tester", überspringen Sie es.

Ich weiß nicht wie, aber ich kenne keinen anderen Weg.

Vielen Dank, aber diese Lösung ist nicht geeignet, in dem Sinne, dass ich auf mehr als eine Vorlage testen, aber das ist die Hälfte der Mühe, aber die Tatsache, dass dieser Indikator nicht nur für mich arbeiten, die Menschen einfach müde zu füllen Etiketten in der Tester.

Es stellt sich heraus, dass es keine Möglichkeit gibt, programmatisch zu bestimmen, dass das Diagramm im Tester läuft? Wo sind Sie Entwickler?

.