[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 192

 

S'il vous plaît, donnez-moi un indice. Je ne comprends pas pourquoi MathMax ne fonctionne pas.

La version simplifiée du code (on ne peut pas faire plus simple) ne fonctionne pas non plus. La variable GBPUSD_High ne fonctionne pas :-( Alors que GBPUSD_Low fonctionne bien.

P.S. Je ne suis intéressé que par les valeurs sur les barres à partir du moment où l'indicateur est chargé.

//+-------------------------------------------------------------------
#property indicator_separate_window
#property indicator_buffers3
#property indicator_color1 Black
#property indicator_color2 Gray
#property indicator_color3 Gray
//--------------------------------------------------------------------
double GBPUSD[], GBPUSD_High[], GBPUSD_Low[] ;
//--------------------------------------------------------------------

int init()
{
//--------------------------------------------------------------------

SetIndexBuffer(0
,GBPUSD) ;
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2
) ;
SetIndexBuffer(1
,GBPUSD_High) ;
SetIndexStyle (1,DRAW_LINE,STYLE_DOT,1
) ;
SetIndexBuffer(2
,GBPUSD_Low) ;
SetIndexStyle (2,DRAW_LINE,STYLE_DOT,1) ;
//--------------------------------------------------------------------

return ;
}
//--------------------------------------------------------------------

int start()
{

int Counted_bars, i ;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted() ;
i=Bars-Counted_bars-1 ;

while (i>=0)
{
GBPUSD[i]=Close[i] ;

if (GBPUSD_Low[i]==0) GBPUSD_Low[i]=GBPUSD[i] ;
GBPUSD_High[i]=MathMax(GBPUSD_High[i],GBPUSD[i]) ;
GBPUSD_Low[i]=MathMin(GBPUSD_Low[i],GBPUSD[i]) ;
i-- ;
}
//--------------------------------------------------------------------

return ;
}
//--------------------------------------------------------------------

A charger, bien sûr, à GBPUSD.

 
alderru >> :

S'il vous plaît, donnez-moi un indice. Je ne comprends pas pourquoi MathMax ne fonctionne pas.

La version simplifiée du code (on ne peut pas faire plus simple) ne fonctionne pas non plus. La variable GBPUSD_High ne fonctionne pas :-( Alors que GBPUSD_Low fonctionne bien.

P.S. Je ne suis intéressé que par les valeurs des barres à partir du moment où l'indicateur est chargé.

Bien sûr, je dois le charger en GBPUSD.

MathMax n'a rien à voir avec cela. Variante :

while ( i>=0)
{
GBPUSD[ i]=Close[ i];
GBPUSD_High[ i]=High  [ i];
GBPUSD_Low[ i]=Low[ i];

//if (GBPUSD_Low[i]==0) GBPUSD_Low[i]=GBPUSD[i];

GBPUSD_High[ i]=MathMax( GBPUSD_High[ i], GBPUSD[ i]);
GBPUSD_Low[ i]=MathMin( GBPUSD_Low[ i], GBPUSD[ i]);
i--;
}
 
tmp.0 >> :

>>MathMax n'a rien à voir avec cela.

Exactement ! Il est donc clair que High est toujours supérieur ou égal à Close, MathMin est identique ;)

 
OneDepo писал(а) >>

Exactement ! Il est donc clair que High est toujours supérieur ou égal à Close, MathMin est identique ;)

A titre d'exemple, j'ai volontairement donné le calcul de valeurs déjà connues. Dans l'original, je cherche le maximum et le minimum sur une barre d'une variable complètement différente. Lorsque l'indicateur est dessiné, la courbe de la variable est redessinée pendant la formation de la barre, bien sûr. Je cherche les points limites.

Je ne comprends pas pourquoi la fonction MathMax ne fonctionne pas elle-même. MathMin fonctionne bien ; la courbe GBPUSD_Low est dessinée...

En ce qui concerne la grammaire de la programmation, avez-vous des remarques à faire ?

S'il vous plaît, installez l'indicateur, dites-moi ce qui ne va pas, pourquoi GBPUSD_High n'est pas calculé.

 
alderru >> :

A titre d'exemple, j'ai volontairement donné le calcul de valeurs déjà connues. Dans l'original, je cherche le maximum et le minimum sur une barre d'une variable complètement différente. Lorsque l'indicateur est affiché, la courbe de la variable est redessinée, bien sûr, pendant la formation de la barre. Je cherche les points limites.

Je ne comprends pas pourquoi la fonction MathMax elle-même ne fonctionne pas.

Avez-vous des remarques à faire du point de vue de la programmation graphique?

Installez l'indicateur et dites-moi ce qui ne va pas ici, pourquoi GBPUSD_High n'est pas calculé.

Ne vous laissez pas berner. Collez ceci dans votre partie préférée du code :

Print (GBPUSD_High[i],":",GBPUSD_Low[i],":",GBPUSD[i]); 
et vous aurez une révélation dans l'onglet "experts".
 
tmp.0 писал(а) >>

Ne vous laissez pas berner. Vous mettez cela à l'endroit où vous aimez le code :

et vous aurez une révélation dans l'onglet "experts".

Et alors...

Il n'y a pas d'épiphanie. Print n'imprime que deux valeurs, tout comme il affiche l'indicateur. Et le troisième ?

Avez-vous au moins essayé de faire ce que vous conseillez ?

 
Question suivante, s'il vous plaît :)
 
tmp.0 писал(а) >>
Question suivante, s'il vous plaît :)

Très astucieux.

Merci pour cette "aide".

 
alderru >> :

Très astucieux.

Merci pour cette "aide".

La réponse vous a déjà été donnée ci-dessus. La raison en est l'utilisation d'une valeur non assignée dans la partie droite de l'opérateur d'assignation. Que signifie GBPUSD_High[i] dans la chaîne de caractères?

GBPUSD_High[i]=MathMax(GBPUSD_High[i],GBPUSD[i]);

On vous a également montré une option pour corriger la situation. Laissez l'ironie derrière vous.


 
OneDepo писал(а) >>

La raison en est l'utilisation d'une valeur non assignée dans le côté droit de l'opérateur d'affectation.

Ainsi, déclarer des tampons indicateurs ne signifie pas que les valeurs des cellules sont nulles. N'est-ce pas ?

Par conséquent, MathMax n'est pas calculé car l'une des valeurs comparées (à savoir, GBPUSD_High) n'a pas de valeur (du tout, même pas zéro).

Je vois. Merci OneDepo.

Je m'excuse d'avoir dérouté tout le monde avec ma simplification (jeu de mots). Comme je l'ai déjà mentionné, je ne suis pas intéressé par la valeur des High quotes, je suis intéressé par la valeur maximale sur la barre de ma propre fonction, dont la courbe est dessinée et re-recourue avec succès par l'indicateur pendant qu'il forme la barre. C'est la plage de redessin de l'indicateur pendant la barre qui m'intéresse.

Je vais y réfléchir.

P.S. Mais pourquoi MathMin est considéré sans problèmes, les conditions sont égales et sont déclarées identiques ?

P.S. Je suis très direct. Je ne peux pas le faire. Aidez-nous, s'il vous plaît.