Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 708

 

Salve.

Quando sto tessellando (terminale MT-4-670, Alt+R), le finestre del grafico sono posizionate ogni volta in posti nuovi.

Potete per favore consigliarmi se è possibile fissarli in modo che la posizione di ogni particolare grafico sullo schermo sia costante?

 
Shurkin:

Salve.

Quando sto tessellando (terminale MT-4-670, Alt+R), le finestre del grafico sono posizionate ogni volta in posti nuovi.

Potete per favore consigliarmi se è possibile fissarli in modo che la posizione di ogni particolare grafico sullo schermo sia costante?



Il posizionamento dipende da quale grafico era attivo al momento dell'applicazione del comando "Mosaico".
 
barabashkakvn:


La disposizione dipende da quale grafico era attivo al momento dell'applicazione del comando "Mosaico".


Dipende anche dalla disposizione precedente dei grafici. L'algoritmo di questa dipendenza non è del tutto chiaro.
 
Shurkin:


E dipende anche dalla disposizione precedente dei grafici. L'algoritmo di questa dipendenza non è del tutto chiaro.

È meglio impostarlo manualmente una volta, quando ne hai bisogno, e si aprirà sempre allo stesso modo con la precisione dei pixel!
 

dov'è l'errore?

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:

dov'è l'errore?

Se questo pezzo di codice viene inserito nell'indicatore, non ci sarà alcun errore:

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);
  }
 
Ho un semplice script, ma non dà niente. L'avviso non appare
 
barabashkakvn:


Se avete uno script allora:

double q=High[1]; // массив High не объявлен - компиляции не будет
double a=Low[1];  // массив Low не объявлен - компиляции не будет
Dovete dichiarare gli array, inizializzarli (riempirli).

Da quando è necessario dichiarare serie temporali standard? E i valori delle espressioni doppie sono ammessi nel ciclo, come nell'esempio precedente? E il contatore non è in qualche modo costruito in quel modo per il ciclo.
 

Sull'inizializzazione - confusa con "cinque".

Ma non potete confrontare direttamente due valori di tipo doppio. Forse qui c'è un errore. Tipi reali (double, float)

 
Non si tratta nemmeno dei tipi stessi (double, float), ma della costruzione del ciclo
for(double u=a;u<q; int i++) //i - нигде не инициализирован, всегда ли значение по умолчанию = 0?