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

 

Bonjour.

Lorsque j'effectue une tessellation (terminal MT-4-670, Alt+R), les fenêtres des graphiques sont placées à de nouveaux endroits à chaque fois.

Pouvez-vous me dire s'il est possible de les fixer de manière à ce que la position de chaque graphique sur l'écran soit constante ?

 
Shurkin:

Bonjour.

Lorsque j'effectue une tessellation (terminal MT-4-670, Alt+R), les fenêtres des graphiques sont placées à de nouveaux endroits à chaque fois.

Pouvez-vous me dire s'il est possible de les fixer de manière à ce que la position de chaque graphique sur l'écran soit constante ?



L'emplacement dépend du graphique qui était actif au moment où la commande "Mosaïque" a été appliquée.
 
barabashkakvn:


La disposition dépend du graphique qui était actif au moment de l'application de la commande "Mosaïque".


Cela dépend également de la disposition précédente des graphiques. L'algorithme de cette dépendance n'est pas entièrement clair.
 
Shurkin:


Et cela dépend aussi de la disposition précédente des cartes. L'algorithme de cette dépendance n'est pas entièrement clair.

Il est préférable de le régler manuellement une fois, au fur et à mesure de vos besoins, et il s'ouvrira toujours de la même manière avec une précision au pixel près !
 

où se trouve l'erreur ?

double Level=1.2925;
int i;
double u;
double q=High[1];
double a=Low[1];
for(u=a;u<q;i++)
  {
   u=u+i*Point;
   if(u==Level)
      Alert("Предыдущий бар пересекал уровень");
  }
 
305:

où se trouve l'erreur ?

Si ce morceau de code est inséré dans l'indicateur, il n'y aura pas d'erreur :

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime &time[],     // Time
                 const double &open[],       // Open
                 const double &high[],       // High
                 const double &low[],        // Low
                 const double &close[],      // Close
                 const long &tick_volume[],  // Tick Volume
                 const long &volume[],       // Real Volume
                 const int &spread[]         // Spread
                 )
  {
   double Level=1.2925;
   int i;
   double u;
   double q=High[1];
   double a=Low[1];
   for(u=a;u<q;i++)
     {
      u=u+i*Point;
      if(u==Level)
         Alert("Предыдущий бар пересекал уровень");
     }
   return(prev_calculated);
  }
 
J'ai un script simple, mais il ne donne rien. L'alerte ne s'affiche pas
 
barabashkakvn:


Si vous avez un script alors :

double q=High[1]; // массив High не объявлен - компиляции не будет
double a=Low[1];  // массив Low не объявлен - компиляции не будет
Vous devez déclarer des tableaux, les initialiser (les remplir).

Depuis quand est-il nécessaire de déclarer des séries chronologiques standard ? Et les valeurs des expressions doubles sont-elles autorisées dans la boucle, comme dans l'exemple ci-dessus ? Et le compteur n'est pas construit de cette façon pour la boucle.
 

A propos de l'initialisation - confusion avec "cinq".

Mais vous ne pouvez pas comparer directement deux valeurs de type double. Il y a peut-être une erreur ici. Types réels (double, flottant)

 
Il ne s'agit même pas des types eux-mêmes (double, float), mais de la construction de la boucle.
for(double u=a;u<q; int i++) //i - нигде не инициализирован, всегда ли значение по умолчанию = 0?
Raison: