L'étiquette du marché ou les bonnes manières dans un champ de mines - page 24

 
Neutron писал(а) >>

C'est la vérité ! Ne faites pas d'histoires, la soupe est séparée.

En ce qui concerne le bar, je n'utilise que les prix d'ouverture - pas de moyenne. Et je vais faire ce que le sage Prival va faire - passer aux tics. Cependant, je vais devoir m'occuper du mode d'économie et de la collecte des données. Mais si ça en vaut la peine, pourquoi pas ?

... ...et alors toute cette agitation autour de NS ne sera-t-elle pas au profit d'un simple revendeur. J'ai du mal à croire que l'on puisse saisir, par exemple, une tendance horaire au niveau des tics. Bien que, bien sûr, cela dépende du nombre de tics... mais nous avons une puissance de calcul limitée ici...

 
YDzh >> :

Je ne fais pas d'histoires :) L'utilité des tics est reconnue dans la littérature... Ça sent la théorie du chaos... Pour savoir si ça vaut la peine... Cela en vaut-il la peine ? Et où Prival le conseille-t-il ?

Découvrez-le ici.

 
YDzh >> :

... et si toute l'agitation avec NS va ensuite au simple scalper. J'ai du mal à croire que l'on puisse saisir, par exemple, une tendance horaire au niveau des tics. Bien que, bien sûr, cela dépende du nombre de tics... mais nous avons une puissance de calcul limitée ici...

Eh bien, les avions ont volé... une fois. Et combien de scepticisme il y avait...

 
YDzh писал(а) >>

... et si toute l'agitation avec NS va ensuite au simple scalper. J'ai du mal à croire que l'on puisse saisir, par exemple, une tendance horaire au niveau des tics. Bien que, bien sûr, cela dépende du nombre de tics... mais nous avons une puissance de calcul limitée ici...

Il s'agit de la façon dont vous l'abordez... Il n'est pas nécessaire de consulter les ticks datant de plus de 5 à 10 minutes ; il y a suffisamment de barres pour l'analyse, et les ticks des dernières barres d'une minute peuvent être mémorisés et calculés. Et vous n'avez pas besoin de capacités aussi importantes.

 
FION >> :

Voici comment aborder... Il n'est pas nécessaire de regarder plus de 5-10 minutes en arrière, il y a suffisamment de barres pour l'analyse, et les ticks des dernières barres d'une minute peuvent être mémorisés et calculés. Et vous n'aurez pas besoin d'une capacité aussi importante.

Cela fait longtemps que je ne suis pas satisfait des formats de représentation des données dans MT4. Le cadre temporel est la première chose qui a attiré mon attention dès les premiers jours du marché. C'est-à-dire qu'en regardant les échéances MT4, vous comprenez rapidement qu'il y a une raison à cela ! Conçu pour être pratique, pour ainsi dire... - :)

Donc, une fois que j'aurai compris la grille, les cadres temporels s'en prendront aux induits - f*ck it. En fait, je n'ai besoin que des cotations et de l'interface de négociation de ce terminal. Le reste peut être jeté sans dommage pour le dépôt.

 
paralocus писал(а) >>

Je suis depuis longtemps insatisfait des formats de données de MT4. Les délais sont la première chose qui a attiré mon attention depuis les premiers jours sur le marché. C'est-à-dire qu'en regardant les échéances MT4, vous comprenez rapidement qu'il y a une raison à cela ! Conçu pour être pratique, pour ainsi dire... - :)

Par conséquent, une fois que j'aurai compris la grille, les échelles de temps passeront après les indices. En fait, je n'ai besoin que des cotations et de l'interface de négociation du terminal. Le reste peut être facilement jeté sans dommage pour le dépôt.

Alors ne vous embêtez pas, prenez une grille toute faite, il y en a plein écrite en java, par exemple... Pourquoi se creuser les méninges dans MQL4 et réinventer la roue...

 
YDzh >> :

Alors ne vous embêtez pas, prenez une grille toute faite - il y en a plein écrite en java, par exemple... Pourquoi s'embêter avec MQL4 et réinventer la roue...

Juste pour le plaisir de savoir.

 
YDzh писал(а) >>

Alors ne vous embêtez pas, prenez une grille toute faite - il y en a plein écrite en java, par exemple... Pourquoi s'embêter avec MQL4 et réinventer la roue...

C'est une blague ! - Je ne sais pas pourquoi je décortique les bêtisiers des autres. Mon algorithme est plus optimisé - il est personnalisé pour un certain objectif tactique).

paralocus a écrit >>

Eh bien, je suppose que c'est tout, jusqu'à ce que les balances soient corrigées.

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 , prenez maintenant la racine carrée de la somme des carrés de chaque poids et divisez par ce taux chaque correction de poids total. C'est ce que vous ajoutez à chaque poids ! C'est une époque. Répétez cette opération autant de fois que vous avez planifié vos époques d'entraînement. Réduire progressivement la contribution multiple de chaque époque à zéro avant la fin de la formation.
 

Messieurs, dites-moi comment vous gérez le vol dans des dépressions locales peu profondes et des poids initiaux incurvés. Je comprends qu'au début, ils n'affectent pas la formation, mais par la suite, ils commencent à affecter considérablement les résultats.

 
Neutron >> :
...maintenant prenez la racine carrée de la somme des carrés pour chaque poids et divisez par cette norme chaque correction de poids total. C'est ce que vous ajoutez à chaque poids ! C'est une époque. Répétez cette opération autant de fois que vous avez planifié vos époques d'entraînement. Réduire progressivement la contribution multiple de chaque époque à zéro avant la fin de la formation.

C'est fait :

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]);
           }        

   }                                 


Je suis un peu confus sur la façon de réduire le multiplicateur de contribution d'une époque.... J'obtiens des poids de couche de sortie très petits à la fin de la formation, alors que les poids de couche cachée deviennent grands.

Alerte : W2 [0] = -0.0414 W2 [1] = 0.0188 W2 [2] = -0.0539

Alerte : 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