Ihre Symbole und Ihre Datafeeds in Metatrader 5 - Seite 14

 
zaskok:

Ich glaube, die meisten Nutzer haben noch nicht einmal von GAs gehört. Deshalb werden Wunderalgorithmen nicht mehr gebraucht als andere.

Das ist mein Punkt.

zaskok:

Es gibt ein Gefühl von Déjà-vu, das dieses Forum nie verlässt. Wenn sie um einen Beweis für eine Behauptung bitten. Aber gleichzeitig wird keiner von ihnen akzeptiert, weil überhaupt nicht klar ist, was man vorweisen muss, um zu überzeugen.

Denken Sie daran, dass MetaQuotes ein kommerzielles Unternehmen ist. Sie wird nur dann Mittel in eine Entwicklung investieren, wenn sie diese für rentabel hält. Da sollten wir ansetzen.

Ich glaube nicht, dass man nach "Renats Paranoia" suchen sollte, es ist eher "wirtschaftliche Kurzsichtigkeit" - in der Tat, sobald MetaTrader Abonnements bekommt, werden die Einnahmen von MetaQuotes um eine Größenordnung steigen, und er merkt es nicht... Nun, ich denke, die Angebote müssen wirtschaftlich begründet sein. Wir wissen nicht, die "MetaQuotes Küche", die Entscheidungen erhöht haben und die nicht verändert (oder verringert) den Gewinn... Wir können nur spekulieren...

 
Prival-2:

Ich werdezaskok unterstützen

Ich persönlich bin noch nie auf ein Problem gestoßen, für das sich genetische Algorithmen als das am besten geeignete Werkzeug erwiesen hätten. Außerdem bin ich noch nie auf Berechnungsergebnisse gestoßen, die durch genetische Algorithmen erzielt wurden und mich positiv beeindruckt haben.


Der Hauptvorteil von GA ist nicht, dass es "das am besten geeignete Werkzeug für die Lösung eines bestimmten Problems" ist, sondern dass es universell ist!

Um eine quadratische Gleichung zu lösen, können Sie auch GA anwenden, und es wird perfekt eine Lösung mit einer akzeptablen Genauigkeit finden. Obwohl die bekannte Formel für diesen Fall viel besser geeignet ist...

 

Um es einfach auszudrücken,

1. Die Nutzer können in der Tat nicht wissen, dass es Ga und andere Algorithmen gibt. Es macht keinen großen Unterschied.

2. Selbst wenn es einen Algorithmus gibt, der besser ist als Ga (und das ist er für einige Aufgaben ganz sicher), bedeutet das nicht unbedingt, dass er auch universell einsetzbar ist. Das heißt, eine vergleichende Analyse muss ohne Verlust des Kontextes der Universalität erfolgen.

3. nichts daran hindert, andere Algorithmen selbst zu implementieren.

Prival-2, Sie brauchen oft nicht das am besten geeignete Werkzeug, aber genug (für die Optimierung von dickhäutigen Strategien ist durchaus akzeptabel).

Ich würde wirklich gerne Beschreibungen anderer Algorithmen sehen.

 
Renat:

Sie versuchen vergeblich, einen Dialog mit ihm zu führen.

Dieser Mann benutzt den MetaTrader 5 überhaupt nicht, er sitzt ausschließlich auf dem 4. Sie können es in seinen Logs sehen - er hat MT5 seit Jahren nicht mehr benutzt, aber er kritisiert es.

Ich habe ihn schon vor ein paar Jahren bei der Frage erwischt: "Sie hatten vor vielen Monaten eine einzige Einführung von MT5, wie schaffen Sie es, Einschätzungen und Kritiken abzugeben?". Auch er leugnete dies, da er nun sein nächster Klon ist.

Vertrautes Verhalten. Ich erinnere mich, dass er und ich über mein MT5-Produkt diskutierten und er am Ende nicht einmal eine Demoversion herunterlud. Aber in der Reihe "Ich kenne mich nicht aus, aber ich urteile" hat er immer etwas zu sagen.
 
joo:

2. Mein GA ist sogar noch besser. :)

...

Wer möchte also nicht nur plappern, sondern auch seine Algorithmen zum Testen und zur vergleichenden Analyse zur Verfügung stellen, womit das Thema "welcher Algorithmus ist besser?" ein für alle Mal erledigt wäre?


In Ihrem GA funktioniert die Funktionint NaturalSelection() überhaupt nicht, wie Sie in dem Artikelhttps://www.mql5.com/ru/articles/55 angegeben haben.

Hier ist der Test:

// 256+255+253+249+241+225+193+129+50+ -1 = 1850  сумма всех  выпадений

int PopulChromosCount = 10;
double Population[][10];
int count[10];

void OnStart(){
        ArrayResize(Population,2);
        Population[0][0] = 256.0;
        Population[0][1] = 128.0;
        Population[0][2] = 64.0;
        Population[0][3] = 32.0;
        Population[0][4] = 16.0;
        Population[0][5] = 8.0;
        Population[0][6] = 4.0;
        Population[0][7] = 2.0;
        Population[0][8] = 0.0;
        Population[0][9] = -1.0;
                
        ArrayInitialize(count,0);
        for(int k=0; k<1850; ++k){
                int idx = NaturalSelection();
                ++count[idx];
        }
        printCount(count);
}
  
//Естественный отбор.
int NaturalSelection(){
   int    i=0,u=0;
   double p=0.0,start=0.0;
   double          fit[][2];
   ArrayResize(fit,PopulChromosCount);
   ArrayInitialize(fit,0.0);
   double delta=(Population[0][0]-Population[0][PopulChromosCount-1])*0.01-Population[0][PopulChromosCount-1];

   for(i=0;i<PopulChromosCount;i++)
     {
      fit[i][0]=start;
      fit[i][1]=start+MathAbs(Population[0][i]+delta);
      start=fit[i][1];
     }
   p=RNDfromCI(fit[0][0],fit[PopulChromosCount-1][1]);

   for(u=0;u<PopulChromosCount;u++)
      if((fit[u][0]<=p && p<fit[u][1]) || p==fit[u][1])
         break;

   return(u);
}

//Генератор случайных чисел из заданного интервала.
double RNDfromCI(double RangeMinimum,double RangeMaximum)
  { return(RangeMinimum+((RangeMaximum-RangeMinimum)*MathRand()/32767.5));}

void printCount(int &ncount[]){
        int summ = 0;
        for(int k=0;k<ArraySize(ncount);++k){
                summ+=ncount[k];
        }
        Print("Сумма выпадений= "+IntegerToString(summ));
        Print("VFF 256: count= " + IntegerToString(ncount[0]) + " заявлено 256");
        Print("VFF 128: count= " + IntegerToString(ncount[1]) + " заявлено 255");
        Print("VFF  64: count= " + IntegerToString(ncount[2]) + " заявлено 253");
        Print("VFF  32: count= " + IntegerToString(ncount[3]) + " заявлено 249");
        Print("VFF  16: count= " + IntegerToString(ncount[4]) + " заявлено 241");
        Print("VFF   8: count= " + IntegerToString(ncount[5]) + " заявлено 225");
        Print("VFF   4: count= " + IntegerToString(ncount[6]) + " заявлено 193");
        Print("VFF   2: count= " + IntegerToString(ncount[7]) + " заявлено 129");
        Print("VFF   0: count= " + IntegerToString(ncount[8]) + " заявлено  50");
        Print("VFF  -1: count= " + IntegerToString(ncount[9]) + " заявлено  -1");
}
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  -1: count= 6 заявлено  -1
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   0: count= 13 заявлено  50
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   2: count= 21 заявлено 129
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   4: count= 19 заявлено 193
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF   8: count= 40 заявлено 225
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  16: count= 74 заявлено 241
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  32: count= 121 заявлено 249
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF  64: count= 218 заявлено 253
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF 128: count= 423 заявлено 255
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	VFF 256: count= 915 заявлено 256
2015.04.27 12:09:21.369	NaturalSelection (EURUSD,M1)	Сумма выпадений= 1850

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Laryx:

Wie läuft die Fehlersuche im Debugger bei historischen Daten ab? Hoffentlich ist es bald soweit?

Wir arbeiten bereits daran. Erste Ergebnisse werden bald veröffentlicht
 
Prival-2:

Versuchen Sie, diesen Wissenschaftler zu widerlegen

Es gibt viele Skeptiker hinsichtlich der Sinnhaftigkeit des Einsatzes genetischer Algorithmen. So schreibt zum Beispiel Steven S. Schiena, Professor der Abteilung für Informatik an der Stony Brook University, ein berühmter Algorithmenforscher und Gewinner des IEEE-Preises[16]:

Die Genetik ist eine so universelle Sache, mit der man alles optimieren kann. Wie Gradientenabstieg, nur vielseitiger in Bezug auf die Klasse der Probleme.

Das bedeutet, dass es immer möglich ist, für jedes Problem eine aufgabenspezifische Optimierungsmethode zu finden, die besser funktioniert.

 
stringo:
Wir arbeiten bereits an diesem Thema. Die ersten Ergebnisse werden in Kürze verfügbar sein.
Bravo! Wir sind gespannt.
 
Hier ist ein Link zu einer Beschreibung der Annealing-Methode auf Wikipedia. https://ru.wikipedia.org/wiki/%C0%EB%E3%EE%F0%E8%F2%EC_%E8%EC%E8%F2%E0%F6%E8%E8_%EE%F2%E6%E8%E3%E0 Es gibt ein Videobeispiel, das erklärt, wie dieser Algorithmus funktioniert. Daraus können Sie ersehen, dass es sich dem Maximum iterativ nähert und fast das Maximum selbst findet. Aber er findet auch andere Maxima. Die Anzahl der Berechnungen ist viel geringer als bei GA, es ist kompakter und viel näher an den realen Daten als GA und wird in jedem Fall besser abschneiden als das schwerfällige GA, was die Geschwindigkeit angeht.
 
Es ist auch gut, dass man die Möglichkeit hat, die eingestellten Dateien in Five zu speichern und herunterzuladen. Eine sehr praktische Sache.
Grund der Beschwerde: