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
Frage:
Sie müssen ein Array von Zeigern auf Objekte an eine Funktion übergeben. Natürlich per Verweis (ein Array).
Welche Syntax ist zu verwenden?
Oder sollte ich es auf andere Weise verwenden?
Zeigerdeklaration (Typ, Variablentyp): MyObject* hobject
Deklarationeines Arrays von Zeigern (Typ, Array von Typvariablen): MyObject* hobject[].
Es stellt sich heraus, dass bei der Übergabe per Referenz (Typ, übergebenes Typvariablen-Array): MyObject* &hobject[]
Verwirrend ist, dass ich keine Informationen über die Übergabe von Zeigern und Zeigerarrays als Funktionsparameter gefunden habe. Aber das ist nicht einmal eine Frage, sondern nur ein Haftungsausschluss.
Ich stand vor einer solchen Notwendigkeit. Krumm und brutal, aber das richtige Ergebnis wird erreicht. Flags sind auf allen drei Eingangsdaten aktiviert und dann bei false blockiert.
Ich bin kein guter Erklärer. Lassen Sie es mich noch einmal versuchen. Die Aufgabe besteht darin, ein Portfolio von Währungen zu bilden, wobei jede Währung ihre eigenen Parameter hat. In einem optimierten Portfolio darf eine Währung nicht teilnehmen. Ich habe sechs Währungen in 21 Optimierungsschritten für jede Währung berechnet, und die Gesamtsumme ist in Milliarden.
Nun die Frage. Wenn wir einer Währung verbieten, mit einer Flagge zu handeln, dann macht es keinen Sinn, ihre Parameter zu optimieren, da sie das Ergebnis in keiner Weise beeinflussen, aber der Optimierer wird weiterhin versuchen, Parameter anzupassen, die das Ergebnis nicht beeinflussen. So wie ich selbst weiß, dass man das nicht kann, aber die Hoffnung bleibt bestehen.
Ich bin kein guter Erklärer. Lassen Sie es mich noch einmal versuchen. Die Aufgabe besteht darin, ein Portfolio von Währungen zu bilden, wobei jede Währung ihre eigenen Parameter hat. In einem optimierten Portfolio darf eine Währung nicht teilnehmen. Ich habe sechs Währungen in 21 Optimierungsschritten für jede Währung berechnet, und die Gesamtsumme ist in Milliarden.
Nun die Frage. Wenn wir einer Währung verbieten, mit einer Flagge zu handeln, dann macht es keinen Sinn, ihre Parameter zu optimieren, da sie das Ergebnis in keiner Weise beeinflussen, aber der Optimierer wird weiterhin versuchen, Parameter anzupassen, die das Ergebnis nicht beeinflussen. Wie ich weiß, können Sie das nicht, aber die Hoffnung ist immer noch wärmend.
Deshalb habe ich Ihnen beim ersten Mal auch alles richtig gesagt.
Sie sollten diese Parameter nicht im Prüfgerät überprüfen.
Damit die Parameter in die Optimierung einbezogen werden können, müssen Sie diese Kontrollkästchen aktivieren. Wenn die Kontrollkästchen nicht aktiviert sind, werden diese Parameter nicht optimiert.
P.S. Sie können die Optimierung auch für jedes Werkzeug einzeln durchführen. Jetzt verstehe ich, was Sie meinen. :) Und nach allen Optimierungen schalten Sie alle Werkzeuge ein und sehen das kumulative Ergebnis.
Also habe ich es beim ersten Mal doch richtig gemacht.
Nein, das ist nicht richtig. Nach den weiteren Erläuterungen zu urteilen, beginnt der Autor die Optimierung für alle seine Eingabeparameter auf einmal und fragt sich, ob einige der Durchläufe irgendwie übersprungen werden können, wenn trpair2==false. Sie können hier keine "Kontrollkästchen im Prüfgerät" manuell setzen.
Nun, dann bin ich selbst neugierig, ob es eine solche Lösung gibt.
Nein, das ist nicht richtig. Nach den weiteren Erläuterungen zu urteilen, beginnt der Autor mit der Optimierung für alle seine Eingabeparameter auf einmal, und er fragt sich, ob einige der Durchläufe irgendwie übersprungen werden können, wenn trpair2==false. Es gibt keine manuellen "Kontrollkästchen im Prüfgerät".
Ich habe auch keine Lösung für diese Situation gefunden. Natürlich ist es möglich, in int OnInit() einen Block zu kombinieren, der den Wert der optimierbaren Parameter durch andere Symbole speichert, wenn er dem Parameter trpair2 den Wert false zuweist, und im Falle des zweiten Durchlaufs mit trpair2==false und mit 'gespeicherten Werten der optimierbaren Parameter durch andere Symbole' würde er einen Rückgabewert ungleich null erzeugen (d.h. ein Deinit-Ereignis mit dem Code des Deinitialisierungsgrundes erzeugen).d.h. es würde ein Deinit-Ereignis mit dem Deinitialisierungsgrundcode REASON_INITFAILED) erzeugt. Aber das sieht alles ziemlich mühsam aus.
Ganz genau. Sie haben nur vergessen, das Urteil zu schreiben, ob Sie es können oder nicht.
Es ist viel einfacher. Wenn eine Bedingung erfüllt ist, können Sie den Expert Advisor einfach löschen - ExpertRemove(). Ich habe sie für den Fall eines Drawdowns eingeführt. Wenn die Absenkung den eingestellten Wert erreicht hat, z. B. während der Optimierung, wird sie entfernt und der nächste Durchgang gestartet.
Wie kann es "einfacher" sein? :) Die Bedingungen für das Löschen eines EA oder für REASON_INITFAILED müssen noch verfolgt werden. Das ist es, was so problematisch ist.