Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 43

 

Aidez-moi à écrire une fonction qui renvoie la valeur maximale de l'ATR parmi les barres visibles dans la fenêtre. J'ai cherché partout sur internet, je n'ai rien trouvé de semblable.

Merci,

 
dr.Vasgenich :

Aidez-moi à écrire une fonction qui obtient la valeur maximale de l'ATR parmi les barres visibles dans la fenêtre. J'ai cherché partout sur internet, je n'ai rien trouvé de semblable.

Merci,

/

extern int p = 4 ; // période ATR

//------

int start()

{

int i ;

double m ;

while( i < WindowBarsPerChart() - p )

{

double a = iATR( NULL, 0, p, i ) ;

si ( m < a )

{

m = a ;

}

i++ ;

}

Alert( " La valeur maximale de l'ATR en pips pour le nombre de barres visibles est ", m / Point ) ; //.

/////

retour(0) ;

}

 

Boeing747 Merci. J'aurais dû écrire ici tout de suite.

Ainsi, la variante finale de la fonction dans ma version ressemble à ceci

double ATR_Max() {
int i ;
double m ;
while( i < WindowBarsPerChart() - p ) {
double a = iATR( NULL, 0, p, i ) ;
si ( m < a ) {
m = a ;
}
i++ ;
}
Alert( " La valeur maximale de l'ATR pour le nombre de barres visibles est - ", m ) ;
retour(m) ;
}

 
dr.Vasgenich :

Boeing747 Merci. J'aurais dû l'écrire ici tout de suite.

Ainsi, la variante finale de la fonction dans ma version ressemble à ceci

double ATR_Max() {
int i ;
double m ;
while( i < WindowBarsPerChart() - p ) {
double a = iATR( NULL, 0, p, i ) ;
si ( m < a ) {
m = a ;
}
i++ ;
}
Alert( " La valeur maximale de l'ATR pour le nombre de barres visibles est - ", m ) ;
retour(m) ;
}

Je dois avoir fait une erreur dans while( i < WindowBarsChart() - p )

Il est fort probable que la fonction iATR( NULL, 0, p, i ) ; calcule les valeurs de toutes les barres du graphique et que vous pouvez, ou peut-être devez, faire ce qui suit

corrigé en while( i < WindowBarsChart() ). Je n'ai jamais travaillé avec iATR() ; je devrais essayer un jour.

En fait, vous pouvez écrire votre fonction sans utiliser la fonction iATR(), c'est-à-dire dans sa forme pure.

 
Boeing747 :

Je dois avoir fait une erreur dans while( i < WindowBarsChart() - p )

Le plus souvent, la fonction iATR( NULL, 0, p, i ) ; calcule les valeurs de toutes les barres du graphique.

corrigé en while( i < WindowBarsChart() ). Je n'ai jamais travaillé avec iATR() ; je devrais essayer un jour.

En fait, je peux écrire votre fonction sans utiliser iATR(), c'est-à-dire dans sa forme pure.


Je pense aussi maintenant que la période n'a rien à voir avec cela. Il serait probablement préférable de l'enlever.

Ne pouvez-vous pas le faire par le biais d'un tableau ? Rassembler dans un tableau les valeurs de tous les APR de la fenêtre puis trouver le maximum en utilisant cette fonction - ArrayMaximum Je crains que mes connaissances ne soient pas suffisantes.




 
dr.Vasgenich :

Je pense maintenant que la période n'a rien à voir avec ça. Il est probablement préférable de l'enlever.

Cela ne peut-il pas être fait par le biais d'un tableau ? Rassemblez dans un tableau les valeurs de tous les APR de la fenêtre et trouvez ensuite le maximum en utilisant cette fonction - ArrayMaximum Je crains que mes connaissances ne soient pas suffisantes pour cela.




Oui, vous pouvez faire défiler iATR() ; dans la boucle pour marquer les tableaux et ensuite utiliser ArrayMaximum pour extraire la valeur maximale de l'ATR. Mais encore obtenir buttery comme il est toujours nécessaire d'utiliser le cycle pour marquer les tableaux comme dans la première option . mais dans la première version du maximum a été calculé dans le processus de défilement de la boucle qui est beaucoup plus économique que l'option ArrayMaximum. Vous n'avez pas besoin d'en savoir beaucoup, vous pouvez obtenir des informations détaillées sur ArrayMaximum dans un manuel ou dans un livre de référence.
 
Boeing747 :
Oui il est possible de faire défiler iATR() ; dans une boucle pour marquer les tableaux avec elle et puis en utilisant ArrayMaximum pour extraire la valeur maximale ATR. mais tout de même il s'avère huileux comme spécialement pour ce but il est nécessaire d'utiliser une boucle pour marquer les tableaux comme dans la première variante . mais dans la première variante le maximum a été calculé pendant le défilement d'une boucle qui est beaucoup plus économique qu'avec une variante ArrayMaximum. Vous n'avez pas besoin de connaissances particulières. Vous pouvez trouver des descriptions détaillées sur ArrayMaximum dans un manuel ou un livre de référence.

Merci, je vais essayer de vérifier demain. Une autre question, comment puis-je économiser les ressources du testeur dans cette fonction, afin que la valeur maximale soit calculée après l'apparition d'une nouvelle barre et non à chaque tick?
 
dr.Vasgenich :

Merci, je vais essayer de vérifier l'opération demain. Une autre question, comment puis-je sauvegarder les ressources du testeur dans cette fonction, afin que la valeur maximale soit calculée après l'apparition d'une nouvelle barre et non à chaque tick ?

Vous pouvez essayer de cette façon pour commencer

au niveau global déclarer t

et sur la boucle écrire

si ( t != Time[0] )

{

t = Temps [0] ;

// boucle où ATRmax est calculé

}

de cette façon, le calcul dans la boucle sera effectué une fois à l'ouverture d'une nouvelle barre. il existe peut-être d'autres variantes plus astucieuses...

 

Boeing747, dr.Vasgenich, les gars, ne pouvez-vous pas utiliser le bouton "SRC" ou êtes-vous d'accord avec cela ?

 
Zhunko :

Boeing747, dr.Vasgenich, les gars, ne pouvez-vous pas utiliser le bouton "SRC" ou êtes-vous d'accord avec cela ?

J'oublie toujours d'utiliser le bouton "SRC". Ce doit être une habitude. À 60 ans, il est difficile de changer d'avis. J'essaierai d'utiliser votre bouton demain.