Marktknigge oder gute Manieren im Minenfeld - Seite 84

 

Neutron dankt für die Einsendung der These


Danke auch für das angesprochene Thema und die konstruktive

Ich habe es bisher geschafft, etwas Ähnliches mit SSAS zu implementieren (leider habe ich sowohl diesen Thread als auch die Diplomarbeit erst heute gelesen),

Vielleicht lernt K.N. etwas Nützliches daraus:

1. Clustering des Intraday-Bereichs in mehrere Cluster entsprechend dem Durchschnittswert der H1-Kerze und Unterteilung des Tages in Zeitintervalle (TI)

(2 Cluster und 2 VV, aber ein Yen-Paar erbrachte 4 Cluster und 7 VV)

2. Für jedes Instrument und VI werden Modelle erstellt:

- Clustering früherer Aufwärts- und Abwärtsbewegungen getrennt nach zwei Eingangsparametern: Preis und Zeit

- Clustering von Aufwärts- und Abwärtsbewegungen in der Zukunft, getrennt nach zwei Eingangsparametern: Preis und Zeit
(dieses Modell wird natürlich nur zur Vorbereitung der Daten für die Trainingsphase verwendet)

- Vorhersagemodelle:
-- Naive Bayes

-- Faustformel

-- Beziehungsregeln

-- NS

-- Entscheidungsbaum

3. Auf der Grundlage der minimalen Abweichung von einem Extremwert wird ein Zickzack konstruiert - wir erhalten eine stückweise monotone f-Struktur und dementsprechend Muster aus N Segmenten.

Wir trainieren geeignete Clustermodelle und clustern die Segmente

5. Wir berechnen den Vorhersagehorizont des Musters als Bruchteil der Musterlänge oder der festen Länge oder als das nächste Vielfache eines größeren Bruchteils der Musterlänge

6. Berechnen und klassifizieren Sie die "Prognose".

7. Prognosemodelle unterrichten

Während des Betriebs lädt der Expert Advisor Daten in MS SQL und generiert periodisch Zickzackpunkte und Prognosen. Nachdem sie diese erhalten hat, analysiert sie die Werte ihrer Unterstützung und die Gültigkeit der Regeln. Sie trifft eine Entscheidung auf der Grundlage des Vergleichs.


Vorteile:

- Es ist möglich, die Ergebnisse mehrerer DM-Modelle zu verwenden und zu vergleichen

- die Modelle selbst können aus einer Vielzahl von Methoden wählen

Benachteiligungen:

- Weniger Parameter für die Einrichtung der Modelle

- ressourcenintensiver Betrieb von MSSQL

- Fehlen einer wissenschaftlichen Grundlage (korrigieren wir, einschließlich der Schlussfolgerungen der oben erwähnten Dissertation)


Ohne in irgendeiner Weise auf den großen Schatten der Wissenschaft und Beweise in der genannten Arbeit zu beeinträchtigen,

Ich möchte alle, die dieses Thema lesen, bitten

über die Zweckmäßigkeit der Verwendung stückweise monotoner zusätzlicher Inputs wie Volumen, Markt-Delta usw. für das Clustering

Vielleicht können sie eine zusätzliche, z.B. filternde Rolle spielen.


S.Privalov: Im Wesentlichen definiert diese Arbeit (Dissertation) eine Methodik zur Erstellung eines Musters für eine Vorhersage.

Imho ist es genau das, worüber wir reden - wenn man zum Beispiel eine Vorhersage nach den Regeln von Ass. erhält, kann man die Anzahl N der Musterteile angeben und nach einer unterschiedlichen Anzahl von Prognoseschritten fragen und erhält diese mit unterschiedlichen Unterstützungen und Gewissheiten - d.h. wir erhalten ein Modell, das als Grundlage für eine Vorhersage verwendet werden kann.

Halten Sie es für möglich bzw. wie wenden Sie Ihre Idee der Verwendung von Kalman's f. auf sie an?

Es wäre interessant, ein Modell zu haben und es unter ihnen zu trainieren.


So sehen die Modelle in SSAS aus, für dieses Tool wurden 3 vi ermittelt

Hier http://www.fxexpert.ru/forum/index.php?showtopic=656 gibt es Bibliotheken mit Meshes, einschließlich mql und anderen nützlichen Dingen.

 

Ich habe begonnen, das Netz zu durchforsten, um die optimale Anzahl der versteckten Neuronen zu ermitteln. Ich bin zu einer recht interessanten Schlussfolgerung gekommen, zu der wohl auch andere schon längst gekommen sind. Ich werde versuchen, es intuitiv zu erklären. Stellen Sie sich ein Neuron mit versteckter Schicht vor, das 20 Eingänge hat. Mit diesen Eingaben, wie Tentakeln, groovt es auf den Eingaben und im Prozess des Groovens werden die Gewichte der Eingaben optimiert, um die erwarteten Ausgaben des Netzwerks zu erhalten. Wir fügen nun ein weiteres verstecktes Neuron hinzu, dessen 20 Eingänge mit den 20 Eingängen des ersten Neurons verbunden sind, jedoch mit unterschiedlichen Gewichten. Da das zweite Neuron die gleichen Eingänge sondiert, liefert es im Grunde keine neuen Informationen. Wenn dies der Fall ist, dann führt das Training des Netzes zu den gleichen Eingangsgewichten für beide Neuronen. Da die Ausgänge beider Neuronen mit den entsprechenden Gewichten des Ausgangsneurons multipliziert und aufsummiert werden, können sich die Eingangsgewichte beider versteckter Neuronen in der Amplitude um einen Faktor unterscheiden, der dem Verhältnis der Ausgangsneuronengewichte entspricht.

Jedenfalls erhalte ich nach dem Training eines solchen 20-2-1-Netzes diese Eingangsgewichte von zwei versteckten Neuronen:

Beachten Sie, dass sich beide Gewichtungssätze in Abhängigkeit von der Eingangszahl gleich verhalten, mit Ausnahme des konstanten Multiplikators. Das heißt, beide Neuronen geben die gleichen Informationen an das Ausgangsneuron weiter. Vielleicht ist das der Grund, warum sich der Lernfehler meines Netzes nach dem Hinzufügen eines zweiten versteckten Neurons kaum verbessert. Hier ist ein weiteres Bild der Gewichte der versteckten Neuronen. Hier unterscheiden sie sich durch ein Vorzeichen, aber auch die Vorzeichen der Gewichte der Ausgangsneuronen sind unterschiedlich


Im Allgemeinen verhält sich ein solches zweischichtiges Netz ähnlich wie ein einfaches einschichtiges Netz (AR-Modell). Mit dieser Schlussfolgerung befinde ich mich in einer Sackgasse. Es stellt sich heraus, dass neuronale Netze nur für die Klassifizierung geeignet sind, d.h. wenn die Ausgabe nur zwei Werte hat: ja oder nein. Der Versuch, das Netz für die Preisvorhersage zu verwenden, führt zu denselben Ergebnissen wie das AR-Modell, da die Neuronenausgänge nicht gesättigt sind und die nichtlineare Aktivierungsfunktion eine geringe Rolle spielt, selbst wenn wir die Eingabedaten auf -1...+1 normalisieren. Ich gehe jetzt ein Bier trinken - vielleicht kommen mir ja neue Ideen (z.B. +1 und -1 in Netzwerkeingänge einspeisen?)

 
M1kha1l писал(а) >>

Ich habe es bisher geschafft, etwas ähnliches mit SSAS zu implementieren (leider habe ich diesen Thread und die These erst heute gelesen),

Hier http://www.fxexpert.ru/forum/index.php?showtopic=656 gibt es Bibliotheken mit Meshes, einschließlich mql und anderen nützlichen Dingen.

Vielen Dank, M1kha1l, für Ihre freundlichen Worte und für die Weitergabe Ihres Wissens.

Ihr Beitrag braucht etwas Zeit, um ihn zu verstehen. Ich lese es gerade.

gpwr schrieb >>

Ich habe begonnen, das Netz zu durchforsten, um die optimale Anzahl der versteckten Neuronen zu ermitteln. Ich bin zu einer recht interessanten Schlussfolgerung gekommen, die andere wahrscheinlich schon vor langer Zeit gezogen haben. Ich werde versuchen, es intuitiv zu erklären. Stellen Sie sich ein Neuron mit versteckter Schicht vor, das 20 Eingänge hat. Mit diesen Eingaben, wie Tentakeln, groovt es auf den Eingaben und im Prozess des Groovens werden die Gewichte der Eingaben optimiert, um die erwarteten Ausgaben des Netzwerks zu erhalten. Wir fügen nun ein weiteres verstecktes Neuron hinzu, dessen 20 Eingänge mit den 20 Eingängen des ersten Neurons verbunden sind, jedoch mit unterschiedlichen Gewichten. Da das zweite Neuron die gleichen Eingänge sondiert, liefert es im Grunde keine neuen Informationen. Wenn dies der Fall ist, dann führt das Training des Netzes zu den gleichen Eingangsgewichten für beide Neuronen. Da die Ausgänge beider Neuronen mit den entsprechenden Gewichten des Ausgangsneurons multipliziert und aufsummiert werden, können sich die Eingangsgewichte beider versteckter Neuronen in der Amplitude um einen Faktor unterscheiden, der dem Verhältnis der Ausgangsneuronengewichte entspricht.

Großartige Arbeit, gpwr, ich hatte gar nicht daran gedacht, mir die Gewichte der parallelen Neuronen anzusehen!

Betrachten wir den Prozess der Lernfehlerreduktion (in rot) und der Generalisierungsfehlerreduktion (in blau) für mehrschichtige NS im Lernprozess:

Wir sehen, dass das Minimum des Generalisierungsfehlers (der uns den statistischen Vorteil bei der Entscheidungsfindung verschafft) nicht dasselbe ist wie das Minimum des Generalisierungsfehlers. Das ist verständlich, denn die Geschichte wiederholt sich nicht immer exakt, sondern nur ungefähr. Und während es beim Lernen nur ein globales Minimum gibt, gibt es bei der Verallgemeinerung viele lokale Minima, und es gibt keine Möglichkeit, das beste auszuwählen. Sie können nur raten. Und hier kommt die Statistik in Form von mehreren Neuronen in einer versteckten Schicht ins Spiel. Alle sind ein wenig untrainiert und "schwelgen" in lokalen Minima, manche im besten (in Bezug auf Verallgemeinerungsfehler), manche im schlechtesten Zustand. Verstehen Sie das? Im Allgemeinen werden ihre Lösungen durch das lineare Ausgangsneuron gemittelt, und eine solche Schätzung ist die beste. Außerdem sinkt der Schätzfehler mit der Quadratwurzel aus der Anzahl der Neuronen in der versteckten Schicht. Aus diesem Grund steigt die Vorhersagekraft von NS mit zunehmender Anzahl von Neuronen in der versteckten Schicht.

Diese Daten, die Sie zitiert haben, sagen etwas über die Umschulung des Netzes und, als Folge davon, über das synchrone Funktionieren aller seiner Neuronen in der verborgenen Schicht aus. Der mehrschichtige NS ist zu einem linearen Pseptron degeneriert!

 
Neutron >> :

Vielen Dank, M1kha1l, für Ihre freundlichen Worte und dafür, dass Sie Ihr Wissen mit uns teilen wollen.

Es braucht einige Zeit, um Ihren Beitrag zu verstehen. Ich habe es gelesen.

Großartige Arbeit, gpwr, ich habe gar nicht daran gedacht, auf die Gewichte der parallelen Neuronen zu achten!

Schauen wir uns den Prozess der Lernfehlerreduzierung (in rot) und den Generalisierungsfehler (in blau) für den mehrschichtigen NS im Lernprozess an:

Wir sehen, dass das Minimum des Generalisierungsfehlers (der uns den statistischen Vorteil bei der Entscheidungsfindung verschafft) nicht dasselbe ist wie das Minimum des Generalisierungsfehlers. Das ist verständlich, denn die Geschichte wiederholt sich nicht immer genau, sondern nur ungefähr. Und während es beim Lernen nur ein globales Minimum gibt, gibt es bei der Verallgemeinerung viele lokale Minima, und es gibt keine Möglichkeit, das beste auszuwählen. Sie können nur raten. Und hier kommt die Statistik in Form von mehreren Neuronen in einer versteckten Schicht ins Spiel. Alle sind ein wenig untrainiert und "schwelgen" in lokalen Minima, manche im besten (in Bezug auf Verallgemeinerungsfehler), manche im schlechtesten Zustand. Verstehen Sie das? Im Allgemeinen werden ihre Lösungen durch das lineare Ausgangsneuron gemittelt, und eine solche Schätzung ist die beste. Außerdem sinkt der Schätzfehler mit der Quadratwurzel aus der Anzahl der Neuronen in der versteckten Schicht. Aus diesem Grund steigt die Vorhersagekraft von NS mit zunehmender Anzahl von Neuronen in der versteckten Schicht.

Diese Daten, die Sie zitiert haben, sagen etwas über die Umschulung des Netzes und, als Folge davon, über den synchronen Betrieb aller Neuronen in der verborgenen Schicht aus. Der mehrschichtige NS ist zu einem linearen Perseptron degeneriert!

Mein Netz erhielt 300 Trainingsbeispiele und die Anzahl der Gewichte war 45. In der Literatur wird die Meinung vertreten, dass bei einer 5-fachen Anzahl von Trainingsbeispielen als Gewichten das Netz mit 95%iger Wahrscheinlichkeit verallgemeinert werden kann. Das heißt, mein Netzwerk muss der Theorie nach eine gute Generalisierung haben, aber in Wirklichkeit ist es nicht so. Deshalb habe ich Beispiele angeführt, um dies zu bestätigen. Ich denke, es geht hier nicht darum, mehr Beispiele für die Ausbildung zu nehmen. Es geht um die Art des Problems, zu dessen Lösung ich das Netz zwinge. Wenn Sie versuchen, das Netz dazu zu bringen, die Größe des nächsten Kursschritts vorherzusagen, dann wird es beim Training zu solchen Gewichten tendieren, bei denen die Neuronen im linearen Bereich der Aktivierungsfunktion arbeiten, um die Proportionalität zwischen dem vorhergesagten Schritt und den vergangenen Eingabeschritten zu wahren. Das heißt, die Aufgabe selbst ist linear. Bei dieser Sachlage bringt das Hinzufügen von versteckten Neuronen keine Verbesserung. Und die versteckte Schicht selbst wird überflüssig. Beim Experimentieren mit meinem Netz bin ich zu dem Schluss gekommen, dass eine einzelne Schicht genauso gut funktioniert wie eine doppelte Schicht. Wenn ich Ihre früheren Beiträge in diesem Thread lese, denke ich, dass Sie auch für EURUSD zu demselben Schluss gekommen sind.

Meiner Meinung nach sollte das Netz für stark nichtlineare Probleme (wie XOR oder Klassifizierungsprobleme) verwendet werden, bei denen die Aktivierungsfunktion der Neuronen gestaffelt gewählt werden kann.


 

Ich wollte darauf hinweisen, dass der Kern des festgestellten Effekts durch ein Übertraining von NS aufgrund einer zu hohen Anzahl von Trainingsepochen erklärt werden kann, und dass es ein Optimum für die Anzahl der Trainingsepochen Nopt geben muss (siehe Abbildung oben), das vom Koeffizienten der Lernrate abhängt. Ich habe nicht gesagt, dass wir "...um noch mehr Trainingsbeispiele zu nehmen. "Dies ist der Kern des Problems der optimalen Länge der Trainingsstichprobe Rorth=w*w/d. Das sagt die Theorie, nicht, dass "...die Anzahl der Trainingsbeispiele das Fünffache der Anzahl der Gewichte ist...".

Wir sprechen über verschiedene Ursachen für den Netzwerk-Übertrainingseffekt.

Ich stimme Ihnen zu, dass die Aufgabe, das Vorzeichen und die Amplitude des nächsten Taktes vorherzusagen, überwiegend linear ist und es nichts anderes geben kann. Der Markt ist so einfach wie eine Brechstange und so unberechenbar wie eine Wettervorhersage. Allerdings werde ich etwas später die vergleichenden Ergebnisse für die Qualität der Vorhersagen auf stündlichen Balken für die einfache Schicht, die Doppelschicht mit zwei Neuronen in der versteckten Schicht und die Doppelschicht mit vier Neuronen in der versteckten Schicht veröffentlichen. All dies wird in Abhängigkeit von der Anzahl der Eingänge d des NS dargestellt. Die Daten werden über 50 unabhängige numerische Experimente gemittelt.

 

Gibt es keine Möglichkeit... ein Pferd und eine Hirschkuh in denselben Wagen zu setzen? Ich meine MT4 und MathCad. Um aktuelle Kurse direkt in MathCad zu erhalten und die gesamte Analyse dort durchzuführen, und dann das generierte Signal an MT4 zu übertragen. Das erste, was einem in den Sinn kommt, ist die Verwendung der Datei, aber beide Programme müssen ständig den Inhalt von zwei verschiedenen Dateien überprüfen. Das ist nicht sehr praktisch. Vielleicht gibt es noch etwas anderes? Es ist schade, dass es in MQL keine Interrupt-Behandlung gibt. Wie umständlich alles gemacht wird! Diese verdammte... Ich könnte mich einfach hinsetzen und C++ lernen.


P.S. Ich bastle gerade an den Daten für das Raster herum.

 

Nein, ist es langweilig, den gesamten Analysealgorithmus in MQL zu implementieren? Oder sind die Schwierigkeiten in irgendeiner Weise exorbitant?

P.S. Und ich bekomme Statistiken...

 

Ja, es gibt an allen Ecken und Enden Schwierigkeiten mit MMS. Hier ist zum Beispiel der einfachste Code (Indikator) für die Aufteilung eines Quotienten in mehrere Transaktionen:

#property indicator_chart_window
#property indicator_buffers 2

#property indicator_color1 Red
#property indicator_color2 MediumBlue

extern int step = 5;
extern int sp = 3;

double Trans[], Kagi[];
int mn, mx, H, Cotir, Up, Dn;
bool set_new=false, SetMax=false, SetMin=false;

//******************************************************************************
int init() 
{ 
SetIndexBuffer(0, Trans);
SetIndexBuffer(1, Kagi);

SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);

SetIndexStyle(0,DRAW_ARROW);
SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0,119);
SetIndexArrow(1,162);

IndicatorShortName ("Kagi++");
return(0); 
} 
//*******************************************************************************

int start() 
{ 
int reset, MaxBar, MaxBarJ, counted_bars=IndicatorCounted(), mx_j, mn_j;

if ( counted_bars<0)return(-1);
if ( counted_bars>0) counted_bars--;
int limit=Bars- counted_bars-1; MaxBar=Bars-2; MaxBarJ= MaxBar-30; 
if ( limit==Bars-1) limit=Bars-2;

//----+ ОСНОВНОЙ ЦИКЛ ВЫЧИСЛЕНИЯ ИНДИКАТОРА 
for(int i= limit; i>=0; i--)
   {
     Cotir = Open[ i]*MathPow(10.0,Digits);
          
     if(! set_new)
      {
        mx = Cotir;
        mn = Cotir;
        H = step* sp;
        set_new = true;
      }               
     if( Cotir - mx > 0)
      {
        mx = Cotir;
        mx_j = i;
      }  

     if( Cotir - mn < 0)
      {
        mn = Cotir;
        mn_j = i;
      }  

     if(! SetMax && Cotir <= mx - H) 
      {
         Trans[ i] = Cotir/MathPow(10.0,Digits); 
         mn = Cotir;           
         mn_j = i;
         SetMax = true;
         SetMin = false;
         Kagi[ mx_j] = mx/MathPow(10.0,Digits);
      } 
     if(! SetMin && mn + H <= Cotir) 
      {
         Trans[ i] = Cotir/MathPow(10.0,Digits); 
         mx = Cotir;       
         mx_j = i;
         SetMax = false;
         SetMin = true;
         Kagi[ mn_j] = mn/MathPow(10.0,Digits);
      } 

   }
return(0);  
}


Es funktioniert, aber wir können die Ergebnisse nicht mit Linien im Diagrammfenster zeichnen. Außerdem wird (was ich nicht verstehe) nichts ausgegeben, wenn der Spread durch weniger als 6 Spreads geteilt wird, obwohl die Arrays korrekt gebildet werden. In MQL, sowie in jeder Homebrew-Technologie gibt es eine Menge völlig unerwarteter Schwierigkeiten (beginnend mit doppelten Vergleich und so weiter...) und "Eigenheiten", natürlich undokumentiert. Ich schimpfe, ganz allgemein...

Auch ich verstehe, wie man das Gitter in MathCad zu überprüfen, aber wie man es in MQL tun - können Sie nicht denken? Was ist, wenn ich irgendwo einen Fehler habe?

 
paralocus писал(а) >>

Ja, es gibt an allen Ecken und Enden Schwierigkeiten mit MMS. Hier der einfachste Code zum Beispiel, um einen Quotienten in eine Anzahl von Transaktionen aufzuteilen:

siehe Anhang - zeichnen - genießen

paralocus schrieb >>

Ich weiß auch, wie man das Gitter in MathCad überprüft, aber wie man das in MQL macht - ich habe keine Ahnung. >> Was ist, wenn ich irgendwo einen Fehler habe?

Warum sollten Sie nicht NeuroShell oder Statistics verwenden? Dort können Sie Netze erstellen und sie in Bibliotheken ablegen und sie dann mit MT trainieren und ihre Parameter überwachen.
Dateien:
 

Sieht so aus, als könnte ich es nicht abwarten, Statistiken über meine MS zu sammeln...

Ich denke, ich werde die Idee aufgeben müssen, die Daten zur Vorhersagegenauigkeit in 1er-Schritten nach der Anzahl der NS-Eingänge darzustellen. Zum Beispiel können wir die Aufgabe vereinfachen, indem wir die Anzahl der Eingänge als ein Vielfaches von 2 nehmen...

Grund der Beschwerde: