Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 708

 

Hallo.

Wenn ich tesseliere (Terminal MT-4-670, Alt+R), werden die Diagrammfenster jedes Mal an einer neuen Stelle platziert.

Können Sie mir bitte sagen, ob es möglich ist, sie so zu fixieren, dass die Position jedes einzelnen Diagramms auf dem Bildschirm konstant bleibt?

 
Shurkin:

Hallo.

Wenn ich tesseliere (Terminal MT-4-670, Alt+R), werden die Diagrammfenster jedes Mal an einer neuen Stelle platziert.

Können Sie mir bitte sagen, ob es möglich ist, sie so zu fixieren, dass die Position jedes einzelnen Diagramms auf dem Bildschirm konstant bleibt?



Die Platzierung hängt davon ab, welche Grafik zum Zeitpunkt der Anwendung des Befehls "Mosaik" aktiv war.
 
barabashkakvn:


Die Anordnung hängt davon ab, welche Grafik zum Zeitpunkt der Anwendung des Befehls "Mosaik" aktiv war.


Sie hängt auch von der vorhergehenden Anordnung der Graphen ab. Der Algorithmus für diese Abhängigkeit ist nicht ganz klar.
 
Shurkin:


Und es hängt auch von der vorhergehenden Anordnung der Karten ab. Der Algorithmus für diese Abhängigkeit ist nicht ganz klar.

Es ist besser, es einmal manuell einzustellen, wenn Sie es brauchen, und es wird immer auf die gleiche Weise mit Pixelgenauigkeit geöffnet!
 

Wo liegt der Fehler?

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:

Wo liegt der Fehler?

Wenn dieses Codestück in den Indikator eingefügt wird, tritt kein Fehler auf:

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);
  }
 
Ich habe ein einfaches Skript, aber es gibt nichts her. Die Meldung erscheint nicht
 
barabashkakvn:


Wenn Sie ein Skript haben, dann:

double q=High[1]; // массив High не объявлен - компиляции не будет
double a=Low[1];  // массив Low не объявлен - компиляции не будет
Sie müssen Arrays deklarieren, sie initialisieren (ausfüllen).

Seit wann ist es notwendig, Standardzeitreihen zu deklarieren? Und sind Werte von doppelten Ausdrücken in der Schleife erlaubt, wie im obigen Beispiel? Und so ist der Zähler für die Schleife nicht aufgebaut.
 

Über die Initialisierung - verwechselt mit "fünf".

Sie können jedoch zwei Werte vom Typ double nicht direkt vergleichen. Vielleicht liegt hier ein Fehler vor. Reelle Typen (double, float)

 
Es geht nicht einmal um die Typen selbst (double, float), sondern um den Aufbau der Schleife
for(double u=a;u<q; int i++) //i - нигде не инициализирован, всегда ли значение по умолчанию = 0?