Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 708

 

Здравствуйте.

При расстановке мозаикой (терминал МТ-4-670, Alt+R) окна графиков каждый раз размещаются по новым местам. 

Подскажите, пожалуйста, возможно ли их закрепить так, что бы положение на экране каждого конкретного графика было постоянным?

 
Shurkin:

Здравствуйте.

При расстановке мозаикой (терминал МТ-4-670, Alt+R) окна графиков каждый раз размещаются по новым местам. 

Подскажите, пожалуйста, возможно ли их закрепить так, что бы положение на экране каждого конкретного графика было постоянным?



Расстановка зависит от того, какой график был активным в момент применения команды "Мозаикой".
 
barabashkakvn:


Расстановка зависит от того, какой график был активным в момент применения команды "Мозаикой".


И ещё зависит от предшествующей расстановки графиков. Алгоритм этой зависимости не вполне понятен.
 
Shurkin:


И ещё зависит от предшествующей расстановки графиков. Алгоритм этой зависимости не вполне понятен.

Лучше один раз вручную установить, как нужно вам, и всегда будет открываться так же с точностью до пикселей!
 

подскажите где ошибка?  

 

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:

подскажите где ошибка?  

 

Если этот кусок кода вставит в индикатор, то никаких ошибок не будет:

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);
  }
 
у меня скрипт просто. но ничего не выдает. Алерт  не выскакивает
 
barabashkakvn:


Если у Вас скрипт то:

double q=High[1]; // массив High не объявлен - компиляции не будет
double a=Low[1];  // массив Low не объявлен - компиляции не будет
Нужно объявить массивы, инициализировать их (заполнить).

Это с каких пор стандартные таймсерии обьявлять надо? И допускаются ли в цикле значениа выражений типа double, как в примере выше? Да и счётчик как-то не так строится для цикла.
 

Насчёт инициализации - попутал с "пятёркой".

А вот сравнивать два значения типа double напрямую нельзя. Возможно в этом ошибка. Вещественные типы (double, float)

 
Дело даже не в самих типах (double, float), дело в построении цикла
for(double u=a;u<q; int i++) //i - нигде не инициализирован, всегда ли значение по умолчанию = 0?
Причина обращения: