Fehler, Irrtümer, Fragen - Seite 738

 
MetaDriver:

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.

 
Karlson:
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.

 
ivandurak:

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.

 
tol64:

Also habe ich es beim ersten Mal doch richtig gemacht.

Nein, das hast du nicht. Nach den weiteren Erläuterungen zu urteilen, beginnt der Autor die Optimierung mit allen Eingabeparametern auf einmal, und gleichzeitig fragt er sich, ob er einige der Durchläufe irgendwie überspringen kann, wenn trpair2==false ist. Hier gibt es keine manuellen "Kontrollkästchen im Prüfgerät".
 
Yedelkin:
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. Ich erinnere mich, dass ich beim Service Desk eine Anfrage nach programmierbaren Parametern gestellt habe. Das heißt, je nachdem, welcher Parameter ausgewählt ist (z. B. in der Dropdown-Liste), wird eine gemeinsame Liste aller externen Parameter angezeigt. Es gab keine Antwort, also ist es nicht so einfach. Und diese Frage stammt aus demselben Thread. Je nachdem, welcher Parameter zur Optimierung ausgewählt wurde, wird in der allgemeinen Liste eine Liste (Kontrollkästchen) der optimierten Parameter angezeigt.
 
tol64:
Nun, dann bin ich selbst neugierig, ob es eine solche Lösung gibt.
Ich habe auch keine Lösung für diese Situation gefunden. Natürlich ist es möglich, in int OnInit() einen Block einzuschrauben, der den Wert der optimierbaren Parameter für andere Symbole speichert, wenn der Parameter trpair2 auf false gesetzt wird, und im Falle einer erneuten Ausführung mit trpair2==false und mit "gespeicherten Werten der optimierbaren Parameter für andere Symbole" würde er einen Rückgabewert ungleich null erzeugen (d.h. ein Deinit-Ereignis mit dem Grundcode REAS_INIT erzeugen).würde das Ereignis Deinit mit dem Deinitialisierungsgrundcode REASON_INITFAILED erzeugen). Aber das sieht alles ein bisschen umständlich aus.
 
Yedelkin:
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".
Genau so ist es. Sie haben nur vergessen, das Urteil zu schreiben, ob es möglich ist oder nicht.
 
Yedelkin:
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.
Es ist viel einfacher. Wenn eine Bedingung erfüllt ist, kann der Expert Advisor sie 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.
 
ivandurak:
Ganz genau. Sie haben nur vergessen, das Urteil zu schreiben, ob Sie es können oder nicht.
Sie können. Versuchen Sie es wie im vorherigen Beitrag.
 
tol64:
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.