Marktknigge oder gute Manieren im Minenfeld - Seite 24

 
Neutron писал(а) >>

Das ist die Wahrheit! Machen Sie nur kein Aufhebens - die Suppe ist separat.

Was den Balken betrifft, so verwende ich nur die Eröffnungskurse - keine Mittelwertbildung. Und ich werde tun, was der weise Prival tun wird - ich werde auf Zecken umsteigen. Allerdings werde ich mich mit dem Speichermodus und der Datenerfassung herumschlagen müssen. Aber wenn es das wert ist, warum nicht?

... ...und wird dann nicht die ganze Aufregung mit NS an einen bloßen Scalper gehen. Es fällt mir schwer zu glauben, dass man z. B. einen stündlichen Trend auf Tick-Ebene erfassen kann. Obwohl es natürlich davon abhängt, wie viele Zecken... aber wir haben hier nur begrenzte Rechenleistung...

 
YDzh >> :

Ich mache kein Aufhebens :) Die Nützlichkeit von Tics wird in der Literatur anerkannt... Es riecht nach Chaostheorie... Darüber, ob es sich lohnt... Ist es das wert? Und was rät Prival dazu?

Sehen Sie es sich hier an.

 
YDzh >> :

... und ob die ganze Aufregung mit NS dann an den bloßen Scalper geht. Es fällt mir schwer zu glauben, dass man z. B. einen stündlichen Trend auf Tick-Ebene erfassen kann. Obwohl es natürlich davon abhängt, wie viele Zecken... aber wir haben hier nur begrenzte Rechenleistung...

Nun, Flugzeuge flogen... einmal. Und wie viel Skepsis es gab...

 
YDzh писал(а) >>

... und ob die ganze Aufregung mit NS dann an den bloßen Scalper geht. Es fällt mir schwer zu glauben, dass man z. B. einen stündlichen Trend auf Tick-Ebene erfassen kann. Obwohl es natürlich davon abhängt, wie viele Zecken... aber wir haben hier nur begrenzte Rechenleistung...

Es kommt darauf an, wie man es angeht... Es ist nicht nötig, die Ticks von vor mehr als 5-10 Minuten durchzusehen; es gibt genügend Balken für die Analyse, und die Ticks der letzten einminütigen Balken können gespeichert und berechnet werden. Und man braucht keine so großen Kapazitäten.

 
FION >> :

Hier ist die Vorgehensweise... Es besteht keine Notwendigkeit, mehr als 5-10 Minuten zurückliegende Ticks zu betrachten, es gibt genügend Balken für die Analyse, und die Ticks der letzten einminütigen Balken können gespeichert und berechnet werden. Und Sie werden keine so große Kapazität benötigen.

Ich bin seit langem unzufrieden mit den Darstellungsformaten von Daten in MT4. Der Zeitrahmen ist das erste, was mir in den ersten Tagen des Marktes aufgefallen ist. D.h., wenn man sich die MT4-Zeitrahmen ansieht, versteht man schnell, dass es dafür einen Grund gibt! Auf Bequemlichkeit ausgelegt, sozusagen... -:)

Sobald ich also das Raster verstanden habe, werden die Zeitrahmen nach den Induks gehen - f*ck it. Eigentlich brauche ich nur die Kurse und die Handelsschnittstelle von diesem Terminal. Der Rest kann ohne Schaden für das Depot entsorgt werden.

 
paralocus писал(а) >>

Ich bin schon lange unzufrieden mit den Datenformaten in MT4. Die Zeitrahmen waren das erste, was mir seit den ersten Tagen auf dem Markt aufgefallen ist. D.h., wenn man sich die MT4-Zeitrahmen ansieht, versteht man schnell, dass es dafür einen Grund gibt! Auf Bequemlichkeit ausgelegt, sozusagen... -:)

Sobald ich also das Raster verstanden habe, werden die Zeitrahmen den Indizes folgen. Eigentlich benötige ich nur die Kurse und die Handelsschnittstelle des Terminals. Der Rest kann einfach weggeworfen werden, ohne dass das Depot Schaden nimmt.

Dann machen Sie sich nicht die Mühe, nehmen Sie ein vorgefertigtes Raster, es gibt viele davon in Java geschrieben, zum Beispiel... Warum sollten Sie sich in MQL4 den Kopf zerbrechen und das Rad neu erfinden...

 
YDzh >> :

Machen Sie sich also nicht die Mühe und besorgen Sie sich ein fertiges Raster - es gibt viele davon, die zum Beispiel in Java geschrieben sind... Warum sich mit MQL4 abmühen und das Rad neu erfinden?

Nur um das zu wissen.

 
YDzh писал(а) >>

Machen Sie sich also nicht die Mühe, sondern besorgen Sie sich ein fertiges Raster - es gibt viele davon, zum Beispiel in Java geschrieben... Warum sich mit MQL4 abmühen und das Rad neu erfinden?

Sie machen Witze! - Ich weiß nicht, warum ich die Patzer anderer Leute analysiere. Mein Algorithmus ist optimierter - er ist auf einen bestimmten taktischen Zweck zugeschnitten).

paralocus schrieb >>

Nun, das war's dann wohl, bis die Waage korrigiert wird.

for(int i = cikl; i >= 0; i--)
{
out = OUT2(i);---------------------------------------------------// Получаем вых. сигнал сетки
test = (Close[i]-Close[i+1])/Close[i+1];--------------------------// Получаем n+1-вый отсчет

d_2_out = test - out;---------------------------------------------// Ошибка на выходе сетки
d_2_in = d_2_out * (1 - out*out);--------------------------------// Ошибка на входе выходного нейрона

Correction2[0] += d_2_in * D2[0];---------------------------// Суммируем микрокоррекции
SquareCorrection2[0] += Correction2[0] * Correction2[0];----------// по каждому весу входящему в вых. нейрон
Correction2[1] += d_2_in * D2[1];---------------------------// и суммируем квадраты оных микрокоррекций
SquareCorrection2[1] += Correction2[1] * Correction2[1];
Correction2[2] += d_2_in * D2[2];
SquareCorrection2[2] += Correction2[2] * Correction2[2];

d_11_in = d_2_in * (1 - D2[1]*D2[1]);-----------------------------// Считаем ошибку на входах нейронов
d_12_in = d_2_in * (1 - D2[2]*D2[2]);-----------------------------// скрытого слоя

for (int k = 0; k < 17; k++)
{---------------------------------------------------------------// Сууммируем микрокоррекции для входов
Correction11[k] += d_11_in * D1[k];----------------------// первого нейрона
SquareCorrection11[k] += Correction11[k] * Correction11[k];
}

for (k = 0; k < 17; k++)
{---------------------------------------------------------------// Суммируем микрокоррекции для входов
Correction12[k] += d_12_in * D1[k];----------------------// второго нейрона
SquareCorrection12[k] += Correction12[k] * Correction12[k];
}
}
Paralocus , nehmen Sie nun die Quadratwurzel aus der Summe der Quadrate der einzelnen Gewichte und teilen Sie durch diese Rate jede Gesamtgewichtskorrektur. Das ist das, was man zu jedem Gewicht hinzufügt! Das ist eine Epoche. Wiederholen Sie dies so oft, wie Sie Ihre Trainingsepochen geplant haben. Reduzieren Sie den Mehrfachbeitrag jeder Epoche bis zum Ende des Trainings schrittweise auf Null.
 

Meine Herren, sagen Sie mir, wie Sie damit umgehen, in flache lokale Tiefs und gekrümmte Anfangsgewichte zu fliegen. Ich verstehe, dass sie am Anfang keinen Einfluss auf das Training haben, aber später beginnen sie, die Ergebnisse sehr stark zu beeinflussen.

 
Neutron >> :
...nehmen Sie nun die Quadratwurzel aus der Summe der Quadrate für jedes Gewicht und teilen Sie durch diese Norm jede Gesamtgewichtskorrektur. Das ist das, was man zu jedem Gewicht hinzufügt! Das ist eine Epoche. Wiederholen Sie diesen Vorgang so oft, wie Sie Ihre Trainingsepochen geplant haben. Reduzieren Sie den Mehrfachbeitrag jeder Epoche bis zum Ende des Trainings schrittweise auf Null.

Erledigt:

for(int q = 1; q <= 1000; q++)
  {
// ----------------------------------------- ЭПОХА ---------------------------------------------------  
   for(int i = cikl; i >= 0; i--)
     {
       out  = OUT2( i);                                                   // Получаем вых. сигнал сетки
       test = (Close[ i]-Close[ i+1])/Close[ i+1];                          // Получаем n+1-вый отсчет
       
       d_2_out = test - out;                                             // Ошибка на выходе сетки         
       d_2_in  = d_2_out * (1 - out* out);                                // Ошибка на входе выходного нейрона
       
       Correction2[0]       += d_2_in * D2[0];                           // Суммируем микрокоррекции
       SquareCorrection2[0] += Correction2[0] * Correction2[0];          // по каждому весу входящему в вых. нейрон
       Correction2[1]       += d_2_in * D2[1];                           // и суммируем квадраты оных микрокоррекций
       SquareCorrection2[1] += Correction2[1] * Correction2[1];     
       Correction2[2]       += d_2_in * D2[2];
       SquareCorrection2[2] += Correction2[2] * Correction2[2];   
       
       d_11_in = d_2_in * (1 - D2[1]* D2[1]);                             // Считаем ошибку на входах нейронов
       d_12_in = d_2_in * (1 - D2[2]* D2[2]);                             // скрытого слоя
       
       for (int k = 0; k < 17; k++)
         {                                                               // Сууммируем микрокоррекции для входов
          Correction11[ k]       += d_11_in * D1[ k];                      // первого нейрона
          SquareCorrection11[ k] += Correction11[ k] * Correction11[ k];  
         }                                    
         
       for ( k = 0; k < 17; k++)
         {                                                               // Суммируем микрокоррекции для входов
          Correction12[ k]       += d_12_in * D1[ k];                      // второго нейрона
          SquareCorrection12[ k] += Correction12[ k] * Correction12[ k];
         }   
     }
// ------------------------------------- КОНЕЦ ЭПОХИ --------------------------------------------------

// ----------------------------------- КОРРЕКЦИЯ ВЕСОВ ------------------------------------------------
         for( k = 0; k < 3; k++)
             W2[ k] += Correction2[ k]/MathSqrt( SquareCorrection2[ k]);  

         for( k = 0; k < 17; k++ )
           {
             W1[0, k] += Correction11[ k]/MathSqrt( SquareCorrection11[ k]);
             W1[1, k] += Correction12[ k]/MathSqrt( SquareCorrection12[ k]);
           }        

   }                                 


Ich bin ein wenig verwirrt darüber, wie man den Beitragsmultiplikator einer Epoche reduzieren kann.... Am Ende des Trainings erhalte ich sehr kleine Gewichte der Ausgabeschicht und große Gewichte der verborgenen Schicht.

Warnung: W2 [0] = -0,0414 W2 [1] = 0,0188 W2 [2] = -0,0539

Alarm: W1[1,0]=-27.0731 W1[1,1]=-30.2069 W1[1,2]=37.6292 W1[1,3]=30.4359 W1[1,4]=-22.7556 W1[1,5]=-37.5899