Algorithmus-Optimierung Meisterschaft. - Seite 4

 
Dmitry Fedoseev:
Sehen Sie sich die oben beschriebene universelle Methode an. Und wenn ein einmaliger Aufruf über einen Vermittler, der eine sehr ernsthafte Anpassung der Nachschlagefunktion erfordern würde, genau das nicht tun wird.
Übertreiben Sie nicht. Es gibt eine Lösung. Überlegen Sie, wie Sie den internen FF-Aufruf aus Ihrer Algorithmenbibliothek loswerden können.
 
Andrey Dik:
Übertreiben Sie nicht. Es gibt eine Lösung. Überlegen Sie, wie Sie den internen FF-Aufruf aus Ihrer Algorithmenbibliothek loswerden können.
Sie sollten nicht einmal darüber nachdenken, es gibt keinen Grund, sich damit aufzuhalten.
 
Dmitry Fedoseev:

...

Es gibt keine anderen Möglichkeiten. Es sei denn, man kann einen Zeiger auf eine Funktion übergeben, wenn das möglich ist (aber bisher hat noch niemand vorgeschlagen, wo man in der Hilfe nachsehen kann). Das Mitglied muss eine vollwertige Fähigkeit haben, eine ff-Funktion aufzurufen.

Es wurde hier mit einem Beispiel erwähnt:Neue Version der MetaTrader 5 Plattform Build 1325: Handel mit Hedging und Testen durch echte Ticks >>>

Beispiel:

MQL5: Um die Organisation von Ereignismodellen zu erleichtern, wurde die Unterstützung von Zeigern auf Funktionen hinzugefügt.

Um einen Zeiger auf eine Funktion zu deklarieren, definieren Sie z. B. den Typ "Zeiger auf Funktion":

typedef int (*TFunc)(int,int);

TFunc ist jetzt ein Typ und Sie können eine Funktionszeigervariable deklarieren:

TFunc func_ptr;

Sie können die Adresse einer Funktion in der Variablen func_ptr speichern, damit Sie sie später aufrufen können:

int sub(int x,int y) { return(x-y); }
int add(int x,int y) { return(x+y); }
int neg(int x)       { return(~x);  }

func_ptr=sub;
Print(func_ptr(10,5));

func_ptr=add;
Print(func_ptr(10,5));

func_ptr=neg;           // ошибка: neg не имеет тип  int (int,int)
Print(func_ptr(10));    // ошибка: должно быть два параметра

Zeiger auf Funktionen können gespeichert und als Parameter übergeben werden. Sie können keinen Zeiger auf eine nicht-statische Methode einer Klasse erhalten.

 

Hier ist zum Beispiel meine Methode aus der Klasse:

      void Evolution(){ 
         

         for(int c=0;c<GenerationsCount;c++){
         
            f0(); // расчет значений фф для каждого индивида
            f1();         
            f2();
            f3();
            f4();
            
         }
         
         f5();
         f6();

      }

Und wie machen wir das? Und vor allem: Warum darüber nachdenken, wenn es in Wirklichkeit gar nicht nötig ist? Die Meisterschaft der Optimierungsalgorithmen verwandelt sich in die Meisterschaft der Anpassung einer Funktion, die durch Ihren Hintern funktioniert.

Eine Funktion kann zählen, wie oft sie aufgerufen wurde. Wenn ein Teilnehmer einen Import durchführt, kann die Nummer in die Datei geschrieben und vor der Ausführung auf Null gesetzt werden.

Es ist am besten, eine Klasse zu verwenden, dann ist die Menge gerade verfügbar. Ein Betrug ist hier ausgeschlossen.

 
Dmitry Fedoseev:
Sie sollten nicht einmal darüber nachdenken, es gibt keinen Grund, dafür Mühe zu verschwenden.

GUT. Es gibt keine Probleme. Dann gibt es zwei Möglichkeiten für die Meisterschaft, die Algorithmen zu bedienen:

1. Mit dem Aufruf von FF innerhalb des Algorithmus (schließlich weiß der Algorithmus nicht, was FF innerhalb einer geschlossenen Bibel mit FF ist)

2. ohne den FF innerhalb des Algorithmus aufzurufen, indem das Ergebnis einfach an den Algorithmus übergeben wird.

Ich nehme an, dass diese beiden Optionen alle möglichen Variationen bei der Verwendung von Optimierungsalgorithmen abdecken können. Wir müssen den Teilnehmern entgegenkommen, nicht jeder hat ein hohes Maß an Programmierkenntnissen (ich bin zum Beispiel kein Profi, ich habe mehrere Monate gebraucht, um den Algorithmus für die Universalität zu sägen))))

 
Anatoli Kazharski:

Es wurde hier mit einem Beispiel erwähnt:Neue Version der MetaTrader 5 Plattform Build 1325: Handel mit Hedging und Testen mit echten Ticks >>>

Beispiel:

Danke.

Nicht einfacher als mit einer Klasse. Ich würde sogar sagen, dass es mit einer Klasse einfacher ist.

 
Andrey Dik:

GUT. Kein Problem. Dann gibt es zwei Optionen für die Bedienung der Algorithmen für die Meisterschaft:

1. Mit dem Aufruf von FF innerhalb des Algorithmus (schließlich weiß der Algorithmus nicht, was FF innerhalb einer geschlossenen Bibel mit FF ist)

2. ohne den FF innerhalb des Algorithmus aufzurufen, indem das Ergebnis einfach an den Algorithmus übergeben wird.

Ich nehme an, dass diese beiden Optionen alle möglichen Variationen bei der Verwendung von Optimierungsalgorithmen abdecken können. Wir müssen den Teilnehmern entgegenkommen, nicht jeder hat ein hohes Maß an Programmierkenntnissen (ich bin zum Beispiel kein Profi, ich habe mehrere Monate gebraucht, um den Algorithmus für die Universalität zu sägen))))

Wenn Sie mehr Zeit haben, sind Sie herzlich willkommen. Nur in. 2 wird nicht nachgefragt werden.
 
Dmitry Fedoseev:
Wenn Sie mehr Zeit haben, sind Sie herzlich willkommen. Nur in. 2 wird nicht nachgefragt werden.
Nun, das ist nicht unsere Aufgabe zu beurteilen. Sie haben Option 1 und ich habe Option 2. Und wer weiß, was die anderen Teilnehmer tun werden. Und wie spät ist es? - Ich habe das obige Beispielskript in 5 Minuten geschrieben, wir kommen zu den etablierten 2 Varianten, denke ich.
 
Andrey Dik:
Nun, das dürfen wir nicht beurteilen. Sie haben Option 1 und ich habe Option 2. Und wer weiß, wie die anderen Teilnehmer abschneiden werden. Und wie spät ist es? - Beispiel eines oben geschriebenen Skripts in 5 Minuten, also kommen wir zu den etablierten 2 Optionen, nehme ich an.
Ich kann mir nicht einmal etwas vorstellen, um zu erraten, wie so könnte Option 2? Das ist nicht natürlich.
 
Dmitry Fedoseev:
Mir fällt nichts ein, was eine Vermutung darüber zuließe, wie die Variante 2 zustande kommen könnte. Das ist nicht natürlich.

Ein einfaches Beispiel. Der Optimierungsalgorithmus hängt irgendwo in einer Tabelle. Der Expert Advisor wird im eingebauten Tester durch eine vollständige Suche optimiert. Sie können also Ihren eigenen Optimierungsalgorithmus anstelle des regulären Algorithmus verwenden.

Ein weiteres Beispiel. Der Expert Advisor arbeitet im Chart und handelt. Er speichert die Handelsergebnisse nach einiger Zeit im Algorithmus (kann innerhalb oder außerhalb des Expert Advisors liegen) zusammen mit seinen Parametern und erhält neue Parameter zurück und setzt dann den Handel fort (in Ihrem Fall müssten wir einen historischen Lauf durchführen, während wir in meinem Fall die "Live"-Optimierung verwenden können).

Und so weiter. Das heißt, in diesen Beispielen ist der Algorithmus völlig unabhängig von der Aufgabe.

Ich habe diese Beispiele absichtlich auf den Handel übertragen. Wir sind Gewerbetreibende.

Grund der Beschwerde: