Fehler, Irrtümer, Fragen - Seite 2101
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Hallo, ich habe mit dem Studium von MQL5 seithttps://www.mql5.com/ru/articles/100 begonnen. Ich habe den Code gestartet und bekam den Fehler 4756. Ich habe die Dokumentation durchgesehen und es war nicht besser. Ich dachte, ich beginne mit etwas Einfachem (Warnung/Drucken...). Eine der wichtigsten Funktionen ist OrderSend. Ich habe angefangen, das Forum/die Dokumentation zu durchsuchen, wie man OrderSend verwendet. Ich habe diesen Artikelhttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions gefundenund den Code für die Eröffnung einer Kaufposition gefunden. Ich habe Fehler 4756 und Retcode 10030. Ich habe verstanden, dass 10030 - es ist die OrderSend-Eigenschaft, aber ich habe nicht verstanden, wie diese Eigenschaft verwendet werden sollte (ich habe mir den Code von jemand anderem angesehen) und wofür sie hauptsächlich verwendet wird. Dann öffnete ichhttps://www.mql5.com/ru/docs/trading/ordersend, kopierte den Code, startete ihn, alles ist in Ordnung, es funktionierte.
Aber ich verstehe immer noch nicht, warum der Fehler 4756 auftritt und wie man ihn loswerden kann, ebenso wie den Fehler 10030.
Ich habe mir den Code zwischen
und diese.
Sie scheinen mir fast identisch zu sein, ich kann nicht erkennen, wo diese Fehler auftreten (4756 und 10030). Zeigen Sie mit dem Finger und erklären Sie bitte
Sofortige Vollstreckung
Ein Handelsauftrag zur Eröffnung einer Position im Modus der sofortigen Ausführung (der Modus des Handels zu Streaming-Preisen). 9 Felder sind erforderlich:
Sie können auch magische und Kommentarfelder angeben.
Marktausführung
Ein Handelsauftrag zur Eröffnung einer Position im Marktausführungsmodus. Es müssen 5 Felder angegeben werden:
Sie können auch magische und Kommentarfelder angeben.
welche Aktualisierung ist eingetroffen, 1736, was steht drin, wo kann ich sie lesen?
Ich schlage vor, eine Möglichkeit zu schaffen, programmatisch zu bestimmen, welcher Indikatorpuffer auf dem Diagramm gezeichnet wird.
Angenommen, ein Händler erstellt seine eigenen Indikatoren. Wir wissen nicht, wie viele Puffer für die Berechnung und wie viele für die Darstellung des Indikators auf dem Diagramm verwendet werden.
Adressierung von benutzerdefinierten Indikatoren durch
intChartIndicatorGet(
longchart_id,// Kennung der Karte
intsub_window// Nummer des Unterfensters
const string indicator_shortname // Kurzname des Indikators
);
Wir können auch das Array von Zeichenpuffern anfordern
intChartIndicatorGet(
longchart_id,// Kennung der Karte
intsub_window//Fensternummer
const string indicator_shortname // Kurzname des Indikators
int & IndicatorVisualBuffer[] // Zeichenpuffer-Nummern... );
Dadurch wird die Möglichkeit erweitert, mit unbekannten Indikatoren zu arbeiten, die auf dem Chart installiert sind...
Ich schlage vor, eine Möglichkeit zu schaffen, programmatisch zu bestimmen, welcher Indikatorpuffer auf dem Diagramm gezeichnet wird.
Angenommen, ein Händler startet seine Indikatoren. Wir wissen nicht, wie viele Puffer für die Berechnung und wie viele für die Darstellung des Indikators auf dem Diagramm verwendet werden.
Adressierung an den Indikator über
intChartIndicatorGet(
longchart_id,// Diagramm-ID
intsub_window// Nummer des Unterfensters
const string indicator_shortname // Kurzname des Indikators
);
Wir können auch das Array der Zeichenpuffer anfordern
intChartIndicatorGet(
longchart_id,// Kennung der Karte
intsub_window//Fensternummer
const string indicator_shortname // Kurzname des Indikators
int & IndicatorVisualBuffer[] // Zeichenpuffer-Nummern... );
Dadurch wird die Möglichkeit erhöht, mit unbekannten Indikatoren zu arbeiten, die im Diagramm installiert sind...
Was bringt sie zurück?
und was nützt es, sie hinzuzufügen? Sie möchten einen Eingabeparameter hinzufügen und als Antwort denselben Indikator-Handle erhalten...
Und wenn es Ihnen nichts ausmacht, wozu wird es benötigt? Das ist nicht ironisch gemeint. Wenn man etwas vorschlägt, sollte man meiner Meinung nach ein überzeugendes Argument für die Notwendigkeit des Vorgeschlagenen anführen.
Was bringt sie zurück?
und was würde es nützen, sie hinzuzufügen? Sie schlagen vor, einen Eingabeparameter hinzuzufügen und denselben Indikator-Handle als Antwort zu erhalten...
Und wenn es nicht schwierig ist, wozu ist dann eine solche Notwendigkeit entstanden? Die Frage ist nicht ironisch gemeint. Denn wenn etwas angeboten wird, ist es meiner Meinung nach notwendig, überzeugende Argumente für die Notwendigkeit des Angebots zu liefern.
Der Benutzer setzt einen beliebigen Indikator.
Der Expert Advisor findet ihn automatisch und verwendet Pufferdaten, um das Signal zu empfangen.
Jetzt müssen wir iCustom verwenden und wenn wir die Parameterliste schreiben können, hier ist das Problem mit buffers....
Es ist möglich, die Anzahl der Puffer durch Kopieren zu zählen, aber es ist unmöglich zu verstehen, welche es sind ...
Der Benutzer setzt einen beliebigen Indikator.
Der Expert Advisor findet ihn automatisch und verwendet Pufferdaten, um das Signal zu erhalten.
Jetzt müssen wir iCustom verwenden, und wenn wir die Liste der Parameter schreiben können, ist hier das Problem mit buffers....
Es ist möglich, die Anzahl der Puffer mit Copy programmatisch zu zählen, aber es ist unmöglich zu verstehen, welcher von ihnen gerade zeichnet ...
Warum ist das unmöglich? Kann der Puffer INDICATOR_CALCULATIONS durch iCustom() herausgenommen werden?
Das ist eine interessante Frage, aber sie gehört nicht in diesen Thread, um sie zu diskutieren. Ich persönlich bezweifle, dass es die Arbeit der Programmierer irgendwie verbessern oder vereinfachen kann. Die Indikatoren sind zu unterschiedlich und die Bedingungen für ihre Anwendung sind zu verschieden. Dann werden wir darum bitten müssen, die Art der grafischen Darstellung und einige andere Dinge bestimmen zu können, und unsere internen Anfragen werden sich häufen.
Warum ist das nicht möglich? Kann der INDICATOR_CALCULATIONS-Puffer über iCustom() erreicht werden?
Die Frage ist interessant, aber nicht in diesem Thread zu diskutieren. Ich persönlich bezweifle, dass es die Arbeit des Programmierers irgendwie verbessern oder erleichtern kann. Es gibt zu viele verschiedene Indikatoren und zu unterschiedliche Bedingungen für ihre Anwendung. Dann werden wir darum bitten müssen, die Art der grafischen Darstellung und einige andere Dinge bestimmen zu können, und unsere internen Anfragen werden sich häufen.
Theoretisch sollte das, was standardmäßig in den Indikator geschrieben wird - ich spreche nicht vom Code des Programmierers -, von außen verfügbar sein ... Puffert ihre Anzahl, die Art der Darstellung, die Farbe und andere Standardwerte ...
Das ist das Problem, auf das ich gestoßen bin:
Ich habe beschlossen, als Magie den Rest der Division von ChartID durch 1000 oder 10000 zu verwenden, das spielt keine Rolle.
Aber aus irgendeinem Grund mit verschiedenen ChartID() der Rest der Division ist plötzlich die gleiche. Frage: Warum?
Skript prüfen
Ergebnis
Ich hatte erwartet, 74907 bzw. 74908 zu sehen, weil der Rest der Division gleich sein sollte.
Ich warte auch auf eine Antwort auf diese Frage.
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
Wanzen, Wanzen, Fragen
Alexey Viktorov, 2018.01.09 14:21
Im MT5-Tester erlaubt das "Input field"-Objekt OBJ_EDIT nicht, den Wert darin zu bearbeiten. Ist das so gewollt oder ist es ein Fehler?
In den Terminals und im MT4-Tester ist es editierbar, aber im MT5-Tester will es nicht, der Wert, der bei der Erstellung des Objekts programmatisch eingegeben wurde, verschwindet überhaupt nicht.
Aber aus irgendeinem Grund erzeugt eine andere ChartID() plötzlich das gleiche Residuum aus der Division. Frage: Warum?
Weil die Eingabe fmod doppelt ist. Double kann nicht eine große Anzahl von ganzen Zahlen speichern. Dies ist zum Beispiel Ihr Fall:
Tun Sie dies.
Am Beispiel von float lässt sich die Besonderheit von double schnell nachvollziehen
Ergebnis
SZY double verliert nicht die Information des gesamten inneren Bereichs, nicht so bei long.
Denn die Eingabe fmod ist doppelt. Double kann nicht eine große Anzahl von ganzen Zahlen speichern. Zum Beispiel Ihr Fall:
Tun Sie dies.
Natürlich werde ich dieses Beispiel jetzt überprüfen, aber ich hatte auch einen Prüfcode wie diesen
das Ergebnis ist
Es zeigt an, dass es keine Wertabschneidung geben sollte.
Aber hier habe ich diese Variante geprüft und den Vorschlag leicht verändert
und erhielt die erwartete Variante.
Eine weitere Frage taucht auf,
Sowohl MathMod als auch fmodgeben nach der Division zweier Zahlen den reellen Rest zurück. Und % laut der Dokumentation
Die verbleibenden Minuten = Zeit % 60;
Warum gibt es einen Unterschied?