[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 715

 
dimon74:
C'est comme ça que ça marche pour moi. Une position est fermée par le TP, tandis que pour établir un nouvel ordre en suspens, nous avons besoin de la valeur TP+n*Point. Et là, nous avons une divergence : OrderTakeProfit () me donne quatre chiffres (je le vois dans Alert) et ma société de courtage en veut cinq. J'ai essayé beaucoup de choses, mais il semble qu'il y ait plus à venir. Si vous avez une idée, donnez-la moi. Merci d'avance !
Alert() et Print() produisent 4 décimales par défaut, alors que 8 sont réellement utilisées. Pour une sortie correcte sur la "console", utilisez DoubleToStr().
 
dimon74:
C'est comme ça que ça marche pour moi. La position est fermée par le TP, tandis qu'un nouvel ordre en suspens a besoin de la valeur de TP+n*Point pour être fixé. Ici, nous avons une divergence : OrderTakeProfit () me donne quatre chiffres (je le vois dans Alert) et ma société de courtage en veut cinq. J'ai essayé beaucoup de choses, mais il semble qu'il y ait plus à venir. Si vous avez une idée, donnez-la moi. Merci d'avance !

string DoubleToStr( double valeur, int chiffres)

Convertit une valeur numérique en une chaîne de texte contenant la représentation en caractères du nombre dans le format de précision spécifié.

Cela devrait aider à la prévérification.

C'est juste que Alert() et Print() affichent tous deux des valeurs à 4 chiffres. Votre problème est donc différent.

 

Je ne comprends pas pourquoi dans ce formulaire

for(int a=0;a<8;a++)
// тут что нить делаем
for(int a=0;a<8;a++)
// еще чо нить делаем

Il indique que la variable a déjà été définie. Je pense qu'elle obtient à nouveau 0 dans la répétition ? Et ils sont dans différents morceaux de code, le premier dans if, le second dans else...

 
Abzasc:

Je ne comprends pas pourquoi dans ce formulaire

Il indique que la variable a déjà été définie. Je pense qu'elle obtient à nouveau 0 dans la répétition ? Et ils sont dans différents morceaux de code, le premier dans if, le second dans else...


int a;
for(a=0;a<8;a++)
// тут что нить делаем
for(a=0;a<8;a++)
// еще чо нить делаем
Alors pourquoi définir deux fois la même variable
 
Vinin:

Pourquoi définir deux fois la même variable ?

A relire

 for(int a=0;a<8;a++)
 aJPY[a]=iCustom(NULL,PERIOD_M15,"Indexes",a,0);

C'est à dire, si la condition est une, lisez, si une autre... Merde. Je l'ai. Mais c'est un cas spécifique, je n'ai pas besoin de ce fragment ailleurs.

Je ne sais pas comment annuler une variable pour qu'elle puisse être utilisée dans un autre fragment de code. Si la condition est une, nous appelons un indicateur et si une autre - un autre... ...parce qu'il n'y a pas assez de variables...

 
Abzasc:

A relire

C'est à dire, si la condition est une, lisez, si une autre... Merde. Je l'ai. Mais c'est un cas spécifique, je n'ai pas besoin de ce fragment ailleurs.

Je ne sais pas comment annuler une variable pour qu'elle puisse être utilisée dans un autre fragment de code. Si la condition est une, nous appelons un indicateur et si une autre - un autre... ...parce qu'il n'y a pas assez de variables...


Nan, on doit trouver un moyen de le faire. Il ne semble pas y avoir assez de code. Je ne parlais que d'une chose. Déclarer une variable et l'utiliser (avec pré-initialisation) sont des choses différentes. Une même variable peut avoir des valeurs fonctionnelles très différentes, l'essentiel étant de ne pas confondre quoi et où.
 

Je vais essayer d'élaborer. Il existe un indicateur, sans tampons. Il prend les valeurs d'un autre indicateur dans 4 tableaux. J'essaie d'attacher

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
S'il y a une nouvelle barre, tous les tableaux sont recalculés. S'il n'y a pas de nouvelle barre, seulement la 0ème barre. Mais nous recalculons tout de même, c'est-à-dire que nous appelons à la fois if et else.
 
Abzasc:

Je vais essayer d'élaborer. Il existe un indicateur, sans tampons. Il prend les valeurs d'un autre indicateur dans 4 tableaux. J'essaie de l'attacher.

S'il y a une nouvelle barre, nous recalculons tous les tableaux. S'il n'y a pas de barre, nous ne recalculons que le 0ème. Mais nous recalculons tout de même, c'est-à-dire que nous appelons à la fois if et else.


Je préfère une approche différente

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit=Bars-counted_bars-1;
   if(Bars-counted_bars>2)
      limit = //.......................
   for(int i=limit;i>=0;i--)

Mais c'est une question de goût. Mais au moins je peux expliquer chaque ligne

 
Vinin:


Je préfère une approche différente

C'est une question de goût, cependant. Mais au moins je peux expliquer chaque ligne

Disons-le comme ça. Puis si la limite = 0, si nous écrivons tableau 0, 1, 2, sinon - tableau 0. Et une erreur de variable.

Ou devrions-nous écrire un tableau de 1, 2, sinon - tableau 0 ?

De toute façon, - je ne peux pas utiliser la variable a 2 fois, c'est ça le problème. Je ne l'utilise cependant que 2 fois, dans if et else. Ce n'est même pas dans les variables partagées en haut du code.

 
Abzasc:

Que ce soit comme ça. Puis si la limite = 0, si nous écrivons tableau 0, 1, 2, sinon - tableau 0. Et une erreur de variable.

Ou si nous écrivons tableau 1, 2, sinon - tableau 0 ?

De toute façon, - je ne peux pas utiliser la variable a 2 fois, c'est ça le problème. Je ne l'utilise cependant que 2 fois, dans if et else. Ce n'est même pas dans les variables partagées en haut du code.


Donnez-moi le code entier. Vous pouvez me l'envoyer en personne. Je vais essayer d'aider.
Raison: