Algorithmus-Optimierung Meisterschaft. - Seite 5

 
Andrey Dik:

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.

Etwas Ungewöhnliches.

Der Expert Advisor wurde bereits im Tester optimiert, was hat das mit Ihrem eigenen Optimierungsalgorithmus zu tun?

Der zweite Fall ist etwas klarer. Ja, wenn Sie einzelne unabhängige Anrufe tätigen, können Sie diese einzeln aufrufen. Und Sie können alles auf einmal in einem separaten Prozess erledigen. Ich verstehe, aber das verkompliziert den Algorithmus und erlaubt es uns nicht, uns auf den Zweck der Meisterschaft zu konzentrieren. Der Zweck der Meisterschaft ist der Optimierungsalgorithmus, nicht seine Anwendung. Es gibt viele Menschen, die das nicht verstehen, und jetzt wird es noch komplizierter.

 
Andrey Dik:

im Allgemeinen so, und natürlich wird es einen Zeitzähler geben. skizzieren:

Bei diesem Code handelt es sich nicht um einen einmaligen Aufruf, sondern es wird der Hauptteil des Algorithmus veröffentlicht, wobei ein Teil des Algorithmus dem Teilnehmer auferlegt wird. Je nach den Ausgangsbedingungen hat der Teilnehmer das Recht, den gesamten Algorithmus zu verbergen.
 
Dmitry Fedoseev:

1. Etwas Ungewöhnliches. Die Optimierung des Expert Advisors wurde bereits im Tester durchgeführt, und was hat sie mit dem eigenen Optimierungsalgorithmus zu tun?

2. Der zweite Fall ist etwas klarer. Ja, wenn Sie einzelne unabhängige Anrufe bereitstellen, können Sie diese einzeln aufrufen. Und Sie können alles auf einmal in einem separaten Prozess erledigen. Ich verstehe, aber das ist eine Komplikation des Algorithmus und eine Abweichung vom Zweck der Meisterschaft. Der Zweck der Meisterschaft ist der Optimierungsalgorithmus, nicht seine Anwendung. Es gibt viele Menschen, die das nicht verstanden haben, und jetzt wird es immer komplizierter.

1. Das ist nichts Ungewöhnliches, sondern eine Situation aus dem wirklichen Leben. Ein hauseigener Tester macht einen Lauf nach dem anderen (ein Parameter - Zähler wird übernommen) und wir kontrollieren die Optimierung aller Parameter und in unbegrenzter Menge.

2. Wir haben uns für 2 Varianten der Arbeit mit FF entschieden. Es ist also alles in Ordnung, es gibt kein Problem, wer will, wird die Optimierung nutzen.

Die Teilnehmer können frei wählen, mit welchem Testskript sie arbeiten wollen, mit dem ersten oder dem zweiten.

 
Dmitry Fedoseev:
Bei diesem Code handelt es sich nicht um einen einmaligen Aufruf, sondern der Hauptteil des Algorithmus wird nach außen verlagert, wobei dem Teilnehmer ein Teil des Algorithmus aufgezwungen wird. Unter den ursprünglichen Bedingungen hat der Teilnehmer das Recht, den gesamten Algorithmus zu verbergen.

Wo ist da die Zumutung? Fragen Sie den Algorithmus, wie oft und was er zählen soll, der Algorithmus des Teilnehmers entscheidet das. Algorithmen können sich in ihrer Architektur stark von ein und demselben GA unterscheiden, und das Beispiel ermöglicht die Verwendung eines Algos nach einem beliebigen Funktionsprinzip.

Ich habe dort Servicefunktionen gezeigt - sie können leer sein, wenn sie vom Teilnehmer nicht benötigt werden.

 
Andrey Dik:

Wo ist da die Zumutung? Fragen Sie den Algorithmus, wie oft und was er zählen soll, der Algorithmus des Teilnehmers entscheidet das. Algorithmen können sich in ihrer Architektur stark von ein und demselben GA unterscheiden, und das Beispiel ermöglicht die Verwendung eines Algorithmus nach einem beliebigen Arbeitsprinzip.

Ich habe dort Servicefunktionen angezeigt - sie können leer sein, wenn sie vom Teilnehmer nicht benötigt werden.

Geben Sie den Teilnehmern einfach einen Zeiger auf eine Funktion oder auf ein Objekt mit einer Methode. Wir befinden uns im dritten Jahrtausend.
 
Übergeben Sie der Teilnehmerfunktion auch die zulässige Anzahl der ff-Aufrufe, damit die Anzahl der Epochen und die Anzahl der Individuen zugeordnet werden können.
 
Dmitry Fedoseev:
Geben Sie in der Teilnehmerfunktion auch die zulässige Anzahl der FF-Aufrufe an, damit wir die Anzahl der Epochen und die Anzahl der Individuen aufteilen können.

Dem Algorithmus wird zum Beispiel gesagt, dass Sie maximal 100 FF-Aufrufe haben können... Aha! - dachte er (der Algorithmus), ich werde alle betrügen unddie Musik für 50 Noten ausrufen, ich werde den FF nur 50 Mal aufrufen. :)

Nein, er soll so viele zählen, wie er braucht. Und wir werden entscheiden, wann wir sie beenden. Schließlich wird die Anzahl der Anrufe aus dem FF als Indikator für die Qualität der Arbeit bewertet.

 
Andrey Dik:

Dem Algorithmus wird zum Beispiel gesagt, dass Sie maximal 100 FF-Aufrufe haben können... Aha! - dachte er (der Algorithmus), ich werde alle betrügen unddie Musik für 50 Noten ausrufen, ich werde den FF nur 50 Mal aufrufen. :)

Nein, er soll so viele zählen, wie er braucht. Und wir werden entscheiden, wann wir sie beenden. Schließlich wird die Anzahl der Aufrufe des FF als Maßstab für die Leistung gewertet.

Welchen Sinn hat es, es schlauerweise weniger oft zu nennen? Man kann weniger tun, aber nicht mehr. Was ist das Problem?

Die Funktion FF zählt die Anrufe. Wenn mehr als erlaubt, Disqualifikation.

 

Dies ist in etwa die Vorlage für die Bibliothek eines Mitglieds:

#property library
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

class CFF{
   public:
   virtual double fun(double & x[]){return(0);}
   virtual string type(){return("");}
   virtual double value(){return(0);}
   virtual string note(){return("");}
};

здесь участник пишет свои классы, если надо 

void function(CFF * aff,int n,double & params[],double & value) export{

    Здесь участник пишет свой код и вызывает функцию так - aff.value(x); // x - это массив double

//по окончанию поиска вернуть params (параметры соответствующие лучшему результату), value (лучший результат)

}

здесь участник создает свои вспомогательные функции
 
Dmitry Fedoseev:

Was bringt es, so gerissen zu sein und weniger oft anzurufen? Man kann weniger tun, aber nicht mehr. Wo liegt das Problem?

Die Funktion ff zählt die Anrufe. Wenn mehr erlaubt ist, Disqualifikation.

Weniger Durchläufe sind besser, das ist der Punkt. Das kann ein bisschen schwierig sein.

Es ist nicht nötig, den Algorithmus einzuschränken, er soll zählen. Entweder wird er von selbst aufhören, oder er wird gewaltsam gestoppt werden. Der Algorithmus braucht nicht zu wissen, wie viele Durchläufe die Obergrenze ist - niemand wird die Obergrenze kennen. Es erfolgt keine Disqualifikation. Der Algorithmus wird das Problem so lösen, wie er es bereits konnte.

Die einzige Disqualifikation ist der Versuch, die Ergebnisse zu speichern und sie in späteren Durchläufen des Prüfskripts zu verwenden.

Grund der Beschwerde: