Fehler, Irrtümer, Fragen - Seite 1233

 
Ich habe lange auf 4 gefragt, aber außer Spott nie eine Antwort erhalten))

gibtTimeGMT()zurück, wennStringToTime falsch ist; z.B. wennStringToTime("0") - wenn das Argument nicht geparst wird.

Und es gibt die normale Zeit zurück, wenn das Argument geparst wird, z. B. wennStringToTime(" 24.10.2014") - D'2014.10.24 00:00:00'

Ist das normal? Warum geradeTimeGMT()? Dies ist -2 Stunden von meiner aktuellen Zeit in MT4 und auf meinem Computer.

 
Die Frage nach dem Fehler 4806 "Warum führt die Funktion CopyBuffer in einem benutzerdefinierten Indikator zu dem Fehler 4806?

während die gleiche Funktion mit den gleichen Parametern im EA-Code gut funktioniert? "

mein Code funktioniert im Debugger, aber nicht im normalen Modus (oder besser gesagt, er funktioniert manchmal und ich konnte kein einfaches Muster erstellen, warum er funktioniert und warum nicht)

Wozu brauchen wir überhaupt Indikatoren wie iXXX, wenn sie nicht normal verwendet werden können?

 
tyn:
Die Frage nach dem Fehler 4806 "Warum führt die Funktion CopyBuffer in einem benutzerdefinierten Indikator zu dem Fehler 4806?

während die gleiche Funktion mit den gleichen Parametern im EA-Code gut funktioniert? "

mein Code funktioniert unter dem Debugger, aber er funktioniert nicht im normalen Modus (tatsächlich funktioniert er manchmal und ich konnte das einfache Muster nicht feststellen, warum er funktioniert und warum nicht)

Wozu brauchen wir überhaupt Indikatoren des Typs iXXX, wenn sie nicht richtig verwendet werden können?

Nachmittags. Die Daten für den CopyBuffer stammen aus der gleichen TF, in der Ihr Indikator läuft?

Haben Sie versucht, die Funktion BarsCalculated() zu verwenden, um das Problem zu lösen?

 
marketeer:
In MQL OOP, wie Sie überprüfen, ob ein Zeiger ist ein Mitglied einer bestimmten Klasse - wie instanceof in JavaScript oder typeid in C++?
CObject *ob;
datetime t;

typename(ob); // CObject
typename(t);  // datetime
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
  • www.mql5.com
Основы языка / Объектно-ориентированное программирование / Шаблоны функций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Kann ich einen eigenen Wert (der angezeigt wird) für das Preisschild festlegen, anstatt den Preis, auf den es eingestellt ist, und wenn ja, wie?
 
Tapochun:

Guten Tag. Werden die Daten für CopyBuffer von der gleichen TF genommen, auf der Ihr Indikator läuft?

Haben Sie versucht, die Funktion BarsCalculated() zu verwenden, um das Problem zu lösen?

Vielen Dank für die Frage. Ich habe Daten von iATR auf D1 genommen, der Hauptindikator läuft auf kleineren Timeframes, BarsCalculated() gibt auch -1 und den gleichen Fehler zurück. Wie ich vermute, gibt es eine Funktion, aber keinen Indikator (zur Laufzeit). Wenn ich einen Indikator in einem anderen Fenster mit demselben Werkzeug erstelle, funktioniert alles. Im Debug-Modus funktioniert es auch. Aber meine Frage Ist es ein Fehler oder verstehe ich etwas nicht?
 

Guten Tag.

Problem mit Funktionsaufrufen von der System-DLL. Die Aufgabe besteht darin, einen einfachen TCP-Server in MQL5 zu schreiben, der auf einem bestimmten Port läuft und nur Nachrichten empfängt.

Importiert von ws2_32.dll Funktionen WSAStartup(), WSAClenup(), socket(), bind(), accept(), listen(), recv(). Alles funktioniert genau so lange, bis Sie versuchen, den Server anzuhalten. Wenn ich versuche, den Server anzuhalten und das Skript korrekt zu beenden, wird das Terminal einfach beendet.

Seitdem wird die Funktion recv() als wissenschaftliche Methode verwendet.

In der beigefügten Datei gibt es eine Zeile (171):

  int bytesCnt = recv(clientSocket, rcvBuffer, RCVBUFFSIZE, 0);

wenn es so konfiguriert ist:

  int bytesCnt = 10; //recv(clientSocket, rcvBuffer, RCVBUFFSIZE, 0);

dann hält der Server ohne Fehler an. Ich habe mir Beispiele für die Verwendung von Netzwerkfunktionen auf MSDN angesehen und alles analog gemacht.

Hat jemand eine Idee, wie man dieses Problem lösen kann?

Dateien:
 
tyn:
Danke für die Frage. Ich habe Daten von iATR auf D1 genommen, der Hauptindikator funktioniert auf kleineren Zeitrahmen, BarsCalculated() gibt auch -1 und den gleichen Fehler zurück. Wie ich vermute, gibt es eine Funktion, aber keinen Indikator (zur Laufzeit). Wenn ich einen Indikator in einem anderen Fenster mit demselben Werkzeug erstelle, funktioniert alles. Im Debug-Modus funktioniert es auch. Aber meine Frage Ist es ein Fehler oder verstehe ich etwas nicht?

Ich habe in letzter Zeit selbst mit diesem Problem zu kämpfen. Ich habe es gelöst, ich weiß nicht, ob es optimal war, aber ich habe es gelöst. Nur die Daten wurden von iFractals übernommen, aber das macht nichts. Warum habe ich nach der TF gefragt? Nach meinen Beobachtungen geschieht Folgendes. Der Indikator funktioniert zum Beispiel bei M15. Wenn die Indikatordaten von M1 bis M15 angefordert werden, ist alles in Ordnung, die Daten sind in dem Moment verfügbar, in dem sie angefordert werden (wenn nicht beim ersten Aufruf). Wenn Daten von M30 angefordert werden (ich wiederhole, der Indikator läuft auf TF M15), gibt es zum Zeitpunkt der Anforderung keine Daten auf M30 für eine neue Kerze (entweder brauchen wir eine vorläufige Anforderung, oder die Daten sind um einen Tick verzögert). Ich habe das Problem auf folgende Weise gelöst. Ich erinnere mich an das Ergebnis von BarsCalculated() für die aktuelle Kerze. Sobald BarsCalculated() das nächste Mal den Wert 1 mehr zurückgibt (eine neue Kerze ist erschienen), merken wir uns den neuen Wertvon BarsCalculated() und kopieren die Daten. Dieser Zeitpunkt (wenn die Indikatordaten auf der höheren TF erscheinen) fällt jedoch nicht mit der Bildung einer neuen Kerze auf der aktuellen TF zusammen.

Ja,BarsCalculated() gibt -1 zurück, wenn es überhaupt keine Daten gibt, das passiert, soweit ich weiß, nur beim ersten Durchlauf. Das heißt, wenn Sie den Indikator-Handle erhalten und sofort Daten anfordern. Sie müssen auch warten.

 

Unmittelbar nach der Erstellung des Indikatorhandles können die Daten nicht abgefragt werden, da sie nicht bereit sind. Der Initialisierungs- und Neuberechnungsprozess ist komplex und hängt von vielen Faktoren ab.

Die richtige Strategie besteht darin, ein Handle in oninit zu erstellen und mit den Daten zu arbeiten, wenn der erste Tick eintrifft.

 
Renat:

Unmittelbar nach der Erstellung des Indikatorhandles können die Daten nicht abgefragt werden, da sie nicht bereit sind. Der Initialisierungs- und Neuberechnungsprozess ist komplex und hängt von vielen Faktoren ab.

Die richtige Strategie besteht darin, ein Handle in oninit zu erstellen und mit den Daten zu arbeiten, wenn der erste Tick eintrifft.

Dann diese Frage. Wenn der Indikator auf M15 läuft. Eine neue Kerze wird gebildet. Sollten bei der Anforderung von Daten für M15 und M30 diese gleichzeitig verfügbar sein?
Grund der Beschwerde: