Fehler, Irrtümer, Fragen - Seite 1904

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
Wenn es mehrere Instanzen gibt, warum die gleiche Berechnung in anderen Instanzen derselben Klasse duplizieren?
Warum brauchen Sie weitere Instanzen, wenn es nur eine Berechnung gibt?
Andrey, könnten Sie etwas genauer werden? Das verstehe ich nicht ganz.
Beschreiben Sie das Problem genauer, dann wird die Antwort konkreter sein.
Die Berechnung ist nicht eindeutig - wenn es nur eine einzige Instanz der Klasse gibt, dann sollte die Berechnung auch eindeutig sein, wenn es mehrere Instanzen gibt, warum dann die gleiche Berechnung in anderen Instanzen der gleichen Klasse duplizieren? Es braucht Ressourcen.
Gleichzeitig ist ein weiterer langer Zyklus in der übergeordneten Klasse zur Berechnung eben dieser Daten auch nicht optimal (wir haben bereits zwei lange Zyklen), und die untergeordnete Klasse ist dann nicht autark.
Guten Tag!
Nach 4 Jahren kehrte ich zu einem EA zurück (ich hatte ihn 2013 gekauft und dann vergessen). Ich beschloss, es noch einmal zu versuchen. Aber jetzt meldet das System einen Fehler in einer der Codezeilen. Ich vermute, dass sich in den 4 Jahren mit Metatrader etwas geändert hat, denn vorher hat es gut funktioniert. Ich habe keine Ahnung, wie man programmiert, deshalb habe ich Expert Advisor gekauft). Können Sie mir sagen, was der Fehler sein könnte?
Hier ist ein Teil des Codes
extern int Bperiod = 20; // Mittelungszeitraum der Hauptindikatorlinie.
extern int Bdeviation = 2; // Abweichung von der Basislinie.
extern int Bshift = 0; // Verschiebung des Indikators relativ zum Kurschart.
extern int Baprice = 0; // CLOSE=0, OPEN=1, HIGH=2, LOW=3, MEDIAN=4, TYPICAL=5, WEIGHTED=6 .
externer String _6 = "========";
extern bool UseAutoDig = true; // If=true->externe Variablen in Punkten werden mit 10 multipliziert.
extern bool UseECN\NDD = true; // Wenn=true->Bestellungen werden ohne Stopps gesetzt, dann geändert.
Der Fehler wird in der letzten Zeile des
UseECN\NDD-Befehls
angezeigt,dieser Befehl wird im EA viele Male wiederholt und ein Fehler tritt in jeder Zeile mit diesem Befehl aufBeispiele für
Fehler
'\' - illegale Escape-Sequenz e_plat2.mq4 49 22
'UseECN' - nicht deklarierter Bezeichner e_plat2.mq4 144 6
'NDD' - nicht deklarierter Bezeichner e_plat2.mq4 144 13
'4206' - case value already used e_plat2.mq4 643 8
Woran kann das liegen?
UseECN\NDD dieser Befehl wird im Expert Advisor mehrmals wiederholt und in jeder Zeile, in der er vorkommt, wird ein Fehler angezeigt
Ersetzen Sie im gesamten Code "UseECN\NDD" durch "UseECN_NDD" (Strg+H)
Ersetzen Sie im gesamten Code "UseECN\NDD" durch "UseECN_NDD" (Strg+H)
Ich danke Ihnen vielmals! Sieht aus, als wäre es kompiliert!
Ich werde es testen...
Warum gibt es weitere Instanzen, wenn es nur eine Berechnung gibt?
Sie sollten das Problem genauer beschreiben, dann wird die Antwort konkreter.
Die Klasse verfügt über eine Schleife, die Daten zu allen Aufträgen und Positionen 1) im Konto und 2) nur zu denen, die dem Filter m_symbol und m_magic entsprechen, sammelt.
Wenn die Schleife abgeschlossen ist, haben wir also 1) Daten über das gesamte Konto und 2) nur über die Aufträge und Positionen, die zum EA gehören.
Wenn ein EA jedoch mehrere Symbole oder Magier verwendet, müssen wir Instanzen der Klasse erstellen, um Statistiken für jedes Symbol/jede Magie zu sammeln. Hier stellt sich die Frage: Warum müssen wir in diesen neuen Instanzen Statistiken (1) erheben, die bereits in der allerersten Instanz der Klasse erhoben wurden?
Daher die Frage - wie innerhalb der Klasse zu wissen, ob seine Instanz die einzige ist, und daher brauchen, um Statistiken 1 zu sammeln, oder, wenn die Instanz nicht die einzige ist, nicht um Statistiken 1 zu sammeln, und geben Sie es von der allerersten Instanz (hier ist auch nicht klar, wie innerhalb der Klasse, wenn es nicht die einzige Instanz ist, um die Anforderung an die allererste Instanz der Klasse umleiten, um Statistiken 1 zu geben)
Die Klasse verfügt über eine Schleife, die Daten zu allen Aufträgen und Positionen 1) im Konto und 2) nur zu denen, die dem Filter m_symbol und m_magic entsprechen, sammelt.
Wenn die Schleife abgeschlossen ist, haben wir also 1) Daten über das gesamte Konto und 2) nur über die Aufträge und Positionen, die zum EA gehören.
Wenn ein EA jedoch mehrere Symbole oder Magier verwendet, müssen wir Instanzen der Klasse erstellen, um Statistiken für jedes Symbol/jede Magie zu sammeln. Hier stellt sich eine Frage: Warum müssen wir in diesen neuen Instanzen Statistiken (1) erheben, die bereits in der ersten Instanz der Klasse erhoben wurden?
Daher die Frage - wie innerhalb der Klasse zu wissen, dass seine Instanz die einzige ist, und daher die Notwendigkeit, Statistiken 1 zu sammeln, oder, wenn die Instanz nicht die einzige ist, dann nicht sammeln Statistiken 1, und geben Sie es von der allerersten Instanz (auch noch nicht klar, wie innerhalb der Klasse, wenn es nicht die einzige Instanz ist, um die Anforderung an die allererste Instanz der Klasse für die Ausgabe von Statistiken 1 umzuleiten)
1) Sammle Statistiken für alle Magier/Werkzeuge innerhalb einer Klasse. Die Liste der Magier sollte während der Initialisierung angegeben und in einem Array abgelegt werden.
2) Wie bereits empfohlen, sollten die Ergebnisse der Statistik Nr. 1 statisch sein, und wenn sie verfügbar sind, sollten Sie keine Neuberechnung vornehmen.
Die Klasse verfügt über eine Schleife, die Daten zu allen Aufträgen und Positionen 1) im Konto und 2) nur zu denen, die dem Filter m_symbol und m_magic entsprechen, sammelt.
Wenn die Schleife abgeschlossen ist, haben wir also 1) Daten über das gesamte Konto und 2) nur über die Aufträge und Positionen, die zum EA gehören.
Wenn ein EA jedoch mehrere Symbole oder Magier verwendet, müssen wir Instanzen der Klasse erstellen, um Statistiken für jedes Symbol/jede Magie zu sammeln. Hier stellt sich die Frage: Warum sollten wir in diesen neuen Instanzen Statistiken (1) erheben, die bereits in der ersten Instanz der Klasse erhoben wurden?
Daher die Frage - wie innerhalb der Klasse zu wissen, ob seine Instanz die einzige ist, und daher brauchen, um Statistiken 1 zu sammeln, oder, wenn die Instanz nicht die einzige ist, nicht um Statistiken 1 zu sammeln, und geben Sie es von der allerersten Instanz (hier ist auch nicht klar, wie innerhalb der Klasse, wenn es nicht die einzige Instanz ist, um die Anforderung an die allererste Instanz der Klasse umleiten, um Statistiken 1 zu geben)
Daher die Frage - wie kann man innerhalb der Klasse wissen, dass ihre Instanz die einzige ist, was bedeutet, dass wir die Statistik 1 sammeln müssen, oder, wenn die Instanz nicht die einzige ist, sammeln wir die Statistik 1 nicht, sondern geben sie von der allerersten Instanz an aus
Das wurde Ihnen bereits gesagt:
Noch besser wäre es, alle einzigartigen Berechnungen in eine eigene Klasse zu packen und diese zu einem Singleton zu machen.
Entwickler, bitte erklären Sie, warum das Ereignis des TypsOnTesterPass bei der Optimierung der Anzahl der Varianten größer als8,6e+18 nur bei der Erstellung einer neuen Generation aufgerufen wird?
Und warum findet sich in der Hilfedatei kein einziges Wort über diese Funktion?
Warum soll ich mich durch die Hälfte eines Expert Advisors wühlen, um eine Antwort darauf zu finden, warum diese Funktion in einem EA richtig funktioniert, während sie im anderen nur bei einer neuen Generation Optimierungsergebnisse in die Datei schreibt?
Wie kann ich diese Einschränkung umgehen?