Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1119
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
Denn minütliche Zeitrahmen unter H1 liefern die richtigen Werte.
Wie in der Hilfe beschrieben, geben sie den Wert des Zeitrahmens zurück, nicht eine sofort einsetzbare Konstante.
Was für ein Blödsinn?
Wischen Sie sich die Augen ab, ich habe Ihnen die interne Darstellung von ENUM_TIMEFRAMES gezeigt
Bit 16, das gesetzt ist, bestimmt den wöchentlichen und monatlichen Zeitrahmen
Bit 15 wird gesetzt, um die stündliche Zeit TF zu bestimmen und TF D1 = 1000000011000 --> 11000 --> 24, d.h. die Entwickler haben D1 mit 24 Stunden verglichen und die verbleibenden stündlichen Zeit-TFs entsprechen der dezimalen Umrechnung
die Minutenzeitrahmen sind die gleichen wie die Stundenzeitrahmen, aber die hohen Bits werden zurückgesetzt
ein weiteres Problem ist, dass Sie dachten, dass die Funktionen, die ENUM_TIMEFRAMES zurückgeben, die Zeit der TF in Minuten zurückgeben - das ist nicht wahr, diese Funktionen geben die ENUM_TIMEFRAMES Aufzählung zurück - nicht mehr oder weniger, nur ENUM_TIMEFRAMES
siehe das Beispiel in der Hilfeunter https://www.mql5.com/ru/docs/basis/types/integer/enumeration.
Enums können auch mit der Zuweisung eines beliebigen konstanten Wertes an ein Mitglied des Enums sein
Sie können Ihre eigene Aufzählung erstellen, um Ihren Bedürfnissen gerecht zu werden
https://www.mql5.com/ru/articles/18
https://www.mql5.com/ru/articles/5798
Ich danke Ihnen vielmals! Es warwchar_t, das geholfen hat! Ich habe gelesen, dass es 2 Bytes pro Zeichen speichert, im Gegensatz zu char.
Aber der Funktionsparameter "str" gibt immer noch nicht den ihm zugewiesenen Wert zurück... Ich frage mich, warum...
Hallo, können Sie mir sagen, wie ich ein Problem lösen kann? Ich möchte einen EA schreiben, der auf einem Indikator basiert (der an das Eisen gebunden ist), der viele Ebenen (Linien) auf dem Diagramm bildet, die Anzahl der Linien kann 500 erreichen.
Alles, was ich implementieren möchte, ist das Eröffnen eines Auftrags oder eines anderen Ereignisses (wie z. B. eine Warnung oder Nachricht), wenn der Preis die Linien im Diagramm kreuzt. Das Problem ist jedoch, dass der Indikator keine Werte zurückgibt und nur horizontale Linien (Objekte mit Namen) zeichnet - es gibt nichts anderes auf dem Diagramm.
Ich habe versucht, eine Lösung über die iCustom-Funktion zu finden, die Preisniveaus über die Variable "_price" abruft, aber der EA eröffnet keine Geschäfte, wenn Linien berührt werden. Ich weiß nicht, was ich falsch gemacht habe.
OPTION 2: Eine Order wird auf der Linie geöffnet, die ich in den Einstellungen angegeben habe, sie funktioniert und öffnet den Handel auf dem Niveau, das ich in den EA-Parametern angegeben habe
Hallo, können Sie mir sagen, wie ich ein Problem lösen kann? Ich möchte einen EA schreiben, der auf einem Indikator basiert (der an das Eisen gebunden ist), der viele Ebenen (Linien) auf dem Diagramm bildet, die Anzahl der Linien kann 500 erreichen.
Alles, was ich implementieren möchte, ist das Eröffnen eines Auftrags oder eines anderen Ereignisses (wie z. B. eine Warnung oder Nachricht), wenn der Preis die Linien im Diagramm kreuzt. Das Problem ist jedoch, dass der Indikator keine Werte zurückgibt und nur horizontale Linien (Objekte mit Namen) zeichnet - es gibt nichts anderes auf dem Diagramm.
Ich habe versucht, eine Lösung über die iCustom-Funktion zu finden, die Preisniveaus über die Variable "_price" abruft, aber der EA eröffnet keine Geschäfte, wenn Linien berührt werden. Ich weiß nicht, was ich falsch gemacht habe.
OPTION 2, ein Auftrag wird auf der Linie geöffnet, die ich in den Einstellungen angegeben habe; es funktioniert und öffnet Geschäfte auf dieser Ebene, die ich in den EA-Parametern angegeben habe
ABER, was ist, wenn das Gebot aus irgendeinem Grund die Linie überspringt und nicht dem Preis der Linie entspricht, was dann? Geben Sie dann zumindest eine Variable, die den vorherigen Tick speichert, und wenn es ein neuer Tick war, der Ihre Linie überquerte - dann machen Sie irgendeine Aktion ... Aber in diesem Fall nicht vergessen, "zulässige" Kreuzung, denn wenn der Markt öffnet mit einem großen Gap, oder es gibt einen großen Sprung im Preis, werden Sie auf vielen Linien in einem Rutsch zu öffnen und wahrscheinlich nicht auf dem Platz, den Sie wollen. Wenn die Überquerung größer als erlaubt ist, wird nur eine Meldung ausgegeben...
ABER, was ist, wenn das Gebot aus irgendeinem Grund die Grenze überschreitet und nicht dem Preis der Grenze entspricht, was dann? Geben Sie dann zumindest eine Variable an, in der der vorherige Tick gespeichert wird, und wenn ein neuer Tick Ihre Linie kreuzt - dann machen Sie irgendeine Aktion... Aber in diesem Fall nicht vergessen, "zulässige" Kreuzung, denn wenn der Markt mit einem Gap groß, oder einfach nur einen großen Sprung im Preis zu öffnen, werden Sie auf vielen Linien in einem Rutsch zu öffnen und wahrscheinlich nicht dort, wo Sie wollen. Wenn die Überquerung größer als erlaubt ist, wird nur eine Meldung ausgegeben...
Problem-Code.
Was für ein Blödsinn?
Wischen Sie sich die Augen ab, ich habe Ihnen die interne Darstellung von ENUM_TIMEFRAMES gezeigt
Bit 16, das gesetzt ist, bestimmt den wöchentlichen und monatlichen Zeitrahmen
Bit 15 wird gesetzt, um die stündliche Zeit TF zu bestimmen und TF D1 = 1000000011000 --> 11000 --> 24, d.h. die Entwickler haben D1 mit 24 Stunden verglichen und die verbleibenden stündlichen Zeit-TFs entsprechen der dezimalen Umrechnung
die Minutenzeitrahmen sind die gleichen wie die Stundenzeitrahmen, aber die hohen Bits werden zurückgesetzt
ein weiteres Problem ist, dass Sie dachten, dass die Funktionen, die ENUM_TIMEFRAMES zurückgeben, die Zeit der TF in Minuten zurückgeben - das ist nicht wahr, diese Funktionen geben die ENUM_TIMEFRAMES Aufzählung zurück - nicht mehr oder weniger, nur ENUM_TIMEFRAMES
siehe das Beispiel in der Hilfeunter https://www.mql5.com/ru/docs/basis/types/integer/enumeration.
Enums können auch mit der Zuweisung eines beliebigen konstanten Wertes an ein Mitglied des Enums sein
Sie können Ihre eigene Aufzählung erstellen, um Ihren Bedürfnissen gerecht zu werden
Igor, es ist seit langem klar, dass es sich um konstante Werte handelt.
Das ist es, worüber ich spreche, was ist die Bedeutung von 15 und 16 Bits als Rückgabewert. Das ist einfach Unsinn.
Aus irgendeinem Grund entsprachen vor M30 die ENUM-Konstanten denTIMFRAME-Werten !!!!.
Und weiter entspricht es bereits Werten einiger Bits. Wo zur Hölle ist die Logik in Jungs.
Dies ist ein grober Fehler, und wenn es absichtlich so gemacht wurde, ist es ein Ablenkungsmanöver).
Die Variable _Period enthält bereits alle diese Zeitrahmenwerte aus der Aufzählung ENUM, sie müssen nicht zusätzlich konvertiert werden.
Daher sollten diese konstanten Werte den in der Hilfe angegebenen Zeitrahmenwerten entsprechen. Nicht BITS!
Es ist definitiv Zeit für eine Quarantäne. Suchen Sie nach allem, was darüber gesagt wurde, und lesen Sie es in aller Ruhe. Warum glauben Sie, dass die Leute um Sie herum alles wiederholen müssen, was Sie geschrieben haben?
Es ist definitiv an der Zeit, ihn unter Quarantäne zu stellen. Suchen Sie alles, was darüber gesagt wurde, und lesen Sie es in aller Ruhe. Warum glauben Sie, dass die Menschen um Sie herum alles wiederholen sollten, was Sie geschrieben haben?
Und warum geben Sie sich mit den falschen Lösungen zufrieden? Ich habe eine logische Erklärung für die Werte der Konstanten geliefert, nicht das, was sich der Entwickler ausgedacht hat.
Und warum geben Sie sich mit den falschen Lösungen zufrieden? Ich habe eine logische Erklärung für die Werte der Konstanten geliefert, nicht das, was sich der Entwickler ausgedacht hat.
Offenbar gibt es für Sie nur zwei Meinungen: Ihre und die falsche. Vielleicht finden Sie eine Erklärung, die Ihnen zusagt.
Versuchen Sie, den von der Variablen _Period zurückgegebenen Wert für Zeiträume über H1 in Ihren mathematischen Berechnungen zu verwenden.
Und Sie werden sofort verstehen, wer im Unrecht ist.