Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil XXV): Behandlung der Fehlermeldungen von Server" - Seite 2
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
Über die Informationen, die im Wert der magischen Zahl gespeichert sind:
Sie können für jede Gruppe eine andere magische Zahl verwenden, um verschiedene Gruppen zu erstellen. Wenn die magische Zahl des Beraters beispielsweise 123 ist, dann ist die magische Zahl der ersten Gruppe 124, die magische Zahl der zweiten Gruppe 125, die magische Zahl der dritten Gruppe 126 und so weiter.
Die Bibliothek bietet eine andere Möglichkeit, verschiedene Gruppen zu erstellen - die Nummer jeder Untergruppe wird direkt im Wert der magischen Zahl gespeichert. Dann ist die magische Zahl des EA auch ein Gruppenbezeichner, aber sie wird in einer unabhängigen Gruppe namens MagicID gespeichert - dem Bezeichner der magischen Zahl des EA. Und es gibt noch zwei weitere Gruppen. Jede von ihnen hat 15 Untergruppen. Und jede der Untergruppen kann ihre eigene Kennung haben.
Dies bietetmehr Flexibilität bei der Arbeit mit Gruppen.
Ein Beispiel: Wir möchten eine Reihe von ausstehenden Aufträgen hinter den Preis verschieben - fügen Sie sie der Gruppe 1 in Untergruppe 1 hinzu. Gruppe 1 bewegt sich hinter dem Preis. Untergruppe 1 bewegt sich entlang des MA. Nun wollen wir einige dieser Aufträge, die sich hinter dem Preis (Gruppe 1) bewegen, durch den Parabolic SAR verschieben. Wir geben ihnen die Untergruppe 2. Dann bewegt sich Gruppe 1 hinter dem Kurs, aber Untergruppe 1 bewegt sich entlang des MA, und Untergruppe 2 bewegt sich entlang des Parabolic SAR.
Die Orders werden ausgelöst und verwandeln sich in Positionen - Sie können Ihre eigenen Gruppen für die Modifikation von Stop-Losses und Ihre eigenen Untergruppen in dieser Gruppe für die Modifikation durch verschiedene Werte festlegen. Modifikationsalgorithmen werden in Untergruppen geschrieben.
Im Allgemeinen ist das eine reine Spielerei. Sie können auch eine einfache Magie verwenden, aber Sie müssen die Logik der Verfolgung verschiedener Gruppen selbst erfinden.
Zur zweiten Frage:
Es gibt eine CSelect-Klasse. Sie ist im Programm verfügbar und bietet Methoden für die Auswahl und Suche aus allen vorhandenen Sammlungen: Konto, Ereignis, Auftrag, Symbol.
Sie können die Objekte jeder Sammlung in einer Liste nach allen Kriterien auswählen. In der erstellten Liste können Sie durch Verfeinerung der Kriterien erneut auswählen, Sie können die maximalen und minimalen Werte für das Auswahlkriterium finden.
In Zukunft wird es jedoch benutzerdefinierte Funktionen (viel später) für den schnellen und bequemen Zugriff auf alle Eigenschaften aller Sammlungen und die Suche in ihnen geben.
Aber vorerst - nur über CSelect, und wenn Sie es brauchen. Die Klasse ist statisch, daher erfolgt der Zugriff auf ihre Methoden über ":::" Zum Beispiel, CSelect::ByOrderProperty().
Ja, übrigens, es gibt ein Beispiel für ihre Verwendung im Programm direkt im Test-EA - zum Beispiel in seinen nachlaufenden Funktionen:
Ich habe CSelect herausgefunden, aber es stellt sich heraus, dass ich an jeder Stelle, an der wir aggregierte Werte benötigen, eine Auswahl treffen muss: Sagen wir, ich muss den Gesamtgewinn eines Rasters von Positionen berechnen, um es zu trailen, das ist eine Funktion. In einer anderen Funktion muss ich z. B. den Gesamtumsatz eines Gitters anpassen, nachdem ich einen Auftrag geöffnet oder geschlossen habe - und dafür brauche ich den Gesamtgewinn und das Gesamtvolumen.
Und an anderer Stelle muss ich entscheiden, ob ich ein neues Raster eröffne oder das aktuelle fortsetze - ich muss wissen, wie viele Aufträge ich in dieser Gruppe bereits offen habe.
Alle diese Werte werden durch einen Durchlauf durch die Liste berechnet, die durch eine Reihe von CSelects ausgewählt werden kann. Da ich sie aber an verschiedenen Stellen benötige, müsste ich jedes Mal eine Aggregatkonstruktion starten, zu Beginn eines Ticks neu berechnen und sie dann überall verwenden.
Ich dachte, es wäre gut, der Bibliothek ein solches Konstrukt hinzuzufügen, mit der Möglichkeit, es nach einer Reihe von Auswahlkriterien zuzuordnen, wie z. B. Symbol, Magick (mit Gruppen), Auftragstyp.
Und lassen Sie es einfache Statistiken sammeln: Anzahl der Aufträge, Gesamtvolumen, Gesamtgewinn... eine Sammlung von Aufträgen, nebenbei bemerkt, da wir sie bereits ausgewählt haben.
Andernfalls entweder eine Hilfsstruktur jedes Mal zu erstellen, oder CSelects und Iteration in jedem Ort.
Ich habe mich mit CSelect auseinandergesetzt, aber es hat sich herausgestellt, dass ich an jeder Stelle, an der ich aggregierte Werte benötige, eine Auswahl treffen muss: Wenn ich z. B. den Gesamtgewinn eines Rasters von Positionen berechnen muss, um es zu durchforsten, ist das eine Funktion. In einer anderen Funktion muss ich den Gesamtumsatz eines Gitters anpassen, nachdem ich einen der Aufträge geöffnet oder geschlossen habe - und dafür brauche ich den Gesamtgewinn und das Gesamtvolumen.
Und an anderer Stelle muss ich eine Entscheidung treffen, ob ich ein neues Raster eröffnen oder das aktuelle fortsetzen soll - dazu muss ich wissen, wie viele Aufträge ich in dieser Gruppe bereits geöffnet habe.
Alle diese Werte werden durch einen Durchlauf durch die Liste berechnet, die durch eine Reihe von CSelects ausgewählt werden kann. Da sie aber an verschiedenen Stellen benötigt werden, muss ich jedes Mal eine Aggregationskonstruktion starten, sie zu Beginn eines Ticks neu berechnen und sie dann überall verwenden.
Ich dachte, es wäre gut, eine solche Konstruktion zur Bibliothek hinzuzufügen, mit der Möglichkeit, sie nach einer Reihe von Auswahlkriterien zuzuordnen, z.B. Symbol, Magick (mit Gruppen), Auftragstyp.
Und einfache Statistiken sammeln zu lassen: Anzahl der Aufträge, Gesamtvolumen, Gesamtgewinn... eine Sammlung von Aufträgen übrigens, denn wir haben ja schon eine Stichprobe gemacht.
Andernfalls entweder eine Hilfsstruktur jedes Mal zu erstellen, oder CSelects und Iteration in jedem Ort.
Und Sie schlagen vor, die Berechnungen in der Bibliothek selbst schwerer zu machen? Dort gibt es bereits eine Menge Dinge zu berechnen.
Warum machen Sie das, was Sie vorschlagen, nicht direkt im EA statt in der Bibliothek? Es macht keinen Unterschied, wo man das alles berechnet. Aber jemand braucht es (Sie) und jemand braucht es nicht. Und warum braucht er unnötige Berechnungen?
Um nicht jedes Mal das Gleiche in verschiedenen Funktionen zu berechnen, sollten Sie im Expert Advisor globale Listen anlegen, in denen Sie die Informationen, die Sie brauchen, überall unterbringen können. Und in separaten Funktionen, und nur bei Bedarf, diese öffentlichen Listen nehmen, und von ihnen die Daten erhalten, die nur innerhalb der Funktion notwendig sind, und sie zurückgeben.
Die Bibliothek stellt eine Reihe von Daten zur Verfügung, bietet die Möglichkeit, diese Daten in beliebiger Kombination auszuwählen, und bietet Werkzeuge für die Lösung von Aufgaben, die von Grund auf nicht schnell genug zu erledigen sind.
Und Sie schlagen vor, dass die Berechnungen in der Bibliothek selbst nach unten gewichtet werden? Dort wird bereits eine Menge gezählt.
Warum machen Sie das, was Sie vorschlagen, nicht direkt im EA und nicht in der Bibliothek? Es macht keinen Unterschied, wo man das alles berechnet. Aber jemand braucht es (Sie) und jemand braucht es nicht. Und warum braucht er zusätzliche Berechnungen?
Um nicht jedes Mal das Gleiche in verschiedenen Funktionen zu berechnen, sollten Sie im Expert Advisor globale Listen erstellen, in denen Sie die Informationen, die Sie brauchen, überall unterbringen können. Und in separaten Funktionen, und nur bei Bedarf, nehmen Sie diese öffentlichen Listen und holen sich daraus die Daten, die nur innerhalb der Funktion benötigt werden, und geben sie zurück.
Die Bibliothek stellt eine Reihe von Daten zur Verfügung, bietet die Möglichkeit, diese Daten in jeder beliebigen Kombination auszuwählen, und bietet Werkzeuge zur Lösung von Aufgaben, die nicht schnell genug von Grund auf zu erledigen sind.
Nun, ich schlage vor, es optional zu machen.
Ein "Abonnement" zu starten.
Aber wenn Ihnen diese Idee nicht erwägenswert erscheint, werde ich den Wrapper sicherlich selbst schreiben.
Nochmals vielen Dank für das, was bereits getan wurde - und vorausschauend für alles, was noch in Planung ist (ich stoße hier und da auf Vorbehalte gegenüber Plänen, die Bibliothek weiterzuentwickeln).
Nun, ich schlage vor, optional zu zählen.
Machen Sie ein "Abonnement".
Aber wenn Sie diese Idee nicht für erwägenswert halten, werde ich den Wrapper sicherlich selbst schreiben.
Nochmals vielen Dank für das, was bereits getan wurde - und im Voraus für alles, was noch in der Pipeline ist (ich habe hier und da Vorbehalte gegenüber Plänen gesehen, die Bibliothek weiter zu entwickeln)