Calcul du PPZ - aide à l'affinage - page 2

 
C'est un peu lourd pour un EA, mais c'est une bonne idée. On peut peut-être l'alléger, mais je doute que cela fasse beaucoup pour le commerce visuel en tant qu'analyse supplémentaire.
 
Quant à l'optimisation. A mon avis, vous devriez trier le tableau résultant Fr0[j] et ensuite danser dessus, le résultat ne sera qu'un seul passage.
 

Ce code ne tient pas compte des barres présentant deux fractales en même temps :


j=0 ;
for(i = loopbegin ; i > Nfirst ; i--) {
f0 = -1.0 ;
f0 = iFractals(NULL,0,MODE_UPPER,i) ;
si (f0<=0.0 ) f0 = iFractals(NULL,0,MODE_LOWER,i) ;
if (f0>0.0) {
Fr0[j]=f0 ;
Ind0[j]=i ;
j++ ;
}
}
Nmax = j ;


Et ici, vous n'avez pas besoin de passer en revue toutes les fractales, peu importe si vous comparez la fractale n°1 avec la n°2 ou la n°2 avec la n°1.
La façon de résoudre ce problème est la suivante :


for(i = 0 ; i < Nmax ; i++) {
f0 = Fr0[i] ;
for(j = i+1; j < Nmax ; j++) {
f1=Fr0[j] ;
si(MathAbs(Ind0[i]-Ind0[j])>minBars) {
for(k = j+1; k < Nmax ; k++) {
f2 = Fr0[k] ;
if(MathAbs(Ind0[i]-Ind0[k])>minBars && MathAbs(Ind0[k]-Ind0[j])>minBars) {
for(l = k+1; l < Nmax ; l++) {
f3 = Fr0[l] ;
if (MathAbs(Ind0[i]-Ind0[l])>minBars && MathAbs(Ind0[j]-Ind0[l])>minBars && MathAbs(Ind0[k]-Ind0[l])>minBars) {
p0 = (f0+f1+f2+f3)/4,0 ;
s0 = (f0-p0)*(f0-p0)+(f1-p0)*(f1-p0)+(f2-p0)*(f2-p0)+(f2-p0)*(f2-p0);
si (s0<smin) {
smin=s0 ;
pmin=p0 ;
imin=i ;
jmin=j ;
kmin=k ;
lmin=l ;
}
}
}
}
}
}
}
}

Et ce code doit être mis dans la fonction et utilisé 4 fois au lieu de copier le code. Les fractales dans Fr0 doivent être mises à zéro, afin qu'elles ne participent pas à la prochaine passe.



 

Pourquoi passer par les fractales à chaque itération ? N'est-il pas plus facile de le faire une fois et de l'analyser ensuite ? En outre, la comparaison doit converger vers un triangle, et non vers un carré (il n'y a aucun sens à comparer deux fois les fractales 1 et 2, puis 2 et 1). Je l'ai fait un peu différemment - l'indicateur recherche séquentiellement la divergence à partir de 0 pips et plus jusqu'à ce qu'il trouve quatre niveaux. Je n'ai pas limité la distance entre les niveaux :


Dossiers :
 
Scriptong писал(а) >>

Pourquoi passer par les fractales à chaque itération ? N'est-il pas plus facile de le faire une fois et de l'analyser ensuite ? En outre, la comparaison doit converger vers un triangle, et non vers un carré (il n'y a aucun sens à comparer deux fois les fractales 1 et 2, puis 2 et 1). Je l'ai fait un peu différemment - l'indicateur recherche séquentiellement la divergence à partir de 0 pips et plus jusqu'à ce qu'il trouve quatre niveaux. Je n'ai pas limité la distance entre les niveaux :

Super ! La vitesse est complètement différente... :)

Puis-je également enregistrer les valeurs des niveaux reçus dans les tampons de l'indicateur ? Afin de les traiter ultérieurement à partir du Conseiller Expert.

 

Je vais faire un expert moi-même. J'ai quelques idées. Mais peut-être que quelqu'un a des idées plus intéressantes ? Je vais en faire un et le poster dans Code Base.

 
Scriptong писал(а) >>

Je vais faire un expert moi-même. J'ai quelques idées. Mais peut-être que quelqu'un a des idées plus intéressantes ? Je vais les faire et les poster dans la base de code.

Vous pouvez essayer de l'ajouter de cette façon :

if (period == 0) {period = WindowBarsPerChart();}
Et afficher quelque part sur l'écran le nombre de barres à calculer...

 
mikola2 >>:

if (period == 0) {period = WindowBarsPerChart();}
И выводить где-нибудь на экране количество баров для расчета...

Ce n'est pas ce que je voulais dire :)

Idées sur le conseiller expert. Il est clair qu'il y a beaucoup de choses à ajouter à l'indicateur lui-même.

 
Des idées, en faire une fonction, je veux dire la logique de la dinde, tu peux le faire ?
 
qwerewq >>:
Идеи есть, сделайте его в виде функции, логику индюка имею в виду, сможете?


c'est déjà sous la forme de fonctions...
Raison: