Erreurs, bugs, questions - page 1394

 
Ilya Malev:

OK, voici le code

J'ai corrigé la ligne et ça semble fonctionner ))))

buffer2[i]=-MathRand()%5*Point();
 
Vladimir Pastushak:

J'ai corrigé la ligne et cela semble fonctionner ))))

J'ai fini par le modifier de cette façon moi-même. Mais je me demande pourquoi ils ont changé la logique (dans MT4 l'échelle était bonne sans multiplication par Point). Et pourquoi n'y a-t-il aucune possibilité de faire en sorte que les tampons sans dessin (c DRAW_NONE) n'aient aucun effet sur l'échelle du graphique.

 
Vladimir Pastushak:

Je ne suis pas vraiment bon en indicateurs, mais cette ligne est douteuse.

1. Valeur retournéeNombre d'éléments du tableau copié ou -1 en cas d'erreur.

2. Si un élément est copié, la fonction renvoie sa valeur.

Les affirmations 1 et 2 sont en contradiction, ne pensez-vous pas ?
 
Ilya Malev:
Les déclarations 1 et 2 sont en contradiction, ne pensez-vous pas ?

Non )))

1 Il peut être de 1 à la limite

2 seulement si 1 élément est copié Si 2 ou plus, il renvoie EMPTY_VALUE

Dans l'aide, il est dit

Valeur de retour

Nombre d'éléments du tableau copiés ou -1 en cas d'erreur. Dans quelle condition 1 élément sera-t-il copié ?

 
Ilya Malev:

J'ai fini par le modifier de cette façon moi-même. Mais je me demande pourquoi ils ont changé la logique (dans MT4 l'échelle était bonne sans multiplication par Point). Et pourquoi n'y a-t-il aucune possibilité pour que les tampons sans dessin (c DRAW_NONE) n'affectent pas l'échelle du graphique.

Vous ne passez pas par tout le tampon de l'indicateur. Rédaction

for(int i=rates_total-MathMax(1, prev_calculated); i>=0; i--)

n'est pas du tout correct. Vous avez les variables rates_total, prev_calculated et l'indicateur offset iStdDev. Au premier passage, vous devez remplir les indices vides :

changement d'indicateur

puis parcourir les autres indices du tampon indicateur (pour parcourir les moyens d'attribuer des valeurs).

 
Karputov Vladimir:

Vous ne passez pas par tout le tampon de l'indicateur. L'entrée

n'est pas du tout correct. Vous avez les variables rates_total, prev_calculated et l'indicateur offset iStdDev. Au premier passage, vous devez remplir les indices vides :

puis parcourir les autres indices du tampon indicateur (pour parcourir les moyens d'attribuer des valeurs).

Dans la version originale, j'avais une fonction qui remplissait tout avec des zéros du type

      for(int i=(int)SeriesInfoInteger(Symbol(), Period(), SERIES_BARS_COUNT)-1; i>=0; i--){
         buffer1[i]=0;
         buffer1[i]=0;
      }

Cela n'a pas d'importance dans ce cas. S'il y avait des valeurs vides, elles seraient au début du graphique et n'affecteraient pas l'échelle de la fenêtre à la toute fin. Ce n'est pas le cas ici, le camarade du dessus l'a déjà compris.

 
Ilya Malev:

J'ai fini par le modifier de cette façon moi-même. Mais je me demande pourquoi ils ont changé la logique (dans MT4 l'échelle était bonne sans multiplication par Point). Et pourquoi il n'y a aucune possibilité pour les tampons sans dessin (c DRAW_NONE) de ne pas affecter l'échelle du graphique.

Voici comment l'essayer :

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
PLOT_EMPTY_VALUE >>>
 
Vladimir Pastushak:

Non )))

Dans quelle condition un élément sera-t-il copié ?

Oui )))

int  CopyBuffer(
    int       indicator_handle,     // handle индикатора
    int       buffer_num,           // номер буфера индикатора
    int       start_pos,            // откуда начнем 
    int       count,                // сколько копируем
    double    buffer[]              // массив, куда будут скопированы данные
    );
 
Ilya Malev:

Oui )))

Oui, alors votre ligne est correcte.
 
Anatoli Kazharski:

Essayez comme ça :

Peu importe la valeur vide qui s'y trouve, ou s'il reste des valeurs aléatoires au début du graphique. Ce qui est important, c'est qu'il y a des valeurs de 0 à -5 dans le tampon2 qui ne sont pas affichées sur le graphique parce qu'il est DRAW_NONE et que la valeur d'échelle minimale de 0 est définie.

Dans cette situation, MT4 met correctement à l'échelle le graphique de 0 à la valeur maximale de la mémoire tampon dans la fenêtre, tandis que MT5 met à l'échelle du minimum (-5, pas 0) au maximum comme 0,0605 et ajoute quelque chose comme 10% au-dessus, ce qui casse complètement l'échelle.