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

 
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?
 

Всем привет! Помогите найти ошибку в коде. Смысл в следующем: всего открыто, скажем 6 из них 4 в сел, 2  в бай (согласно скрину). Закрытие происходит при достижении суммарного профита,с кажем в 1.0 (согласно скрину). 2 Х 2 = 4 залокированные (они закрываются с помощью OrderCloseBy),  а 2 селки закрываются с помощью OrderClose. 

Ошибка в следующем - перекрытые ордера закрываются с помощью OrderCloseBy, а вот оставшиеся ордера не закрываются вовсе

Чтобы не копаться в коде, думаю, ошибка где то здесь.

строка 565 кода - функция закрытия ордеров сначала разнонаправленных

строка 92-100 кода - закрытие всех остальных ордеров

строка 550 кода - функция подсчета открытых ордеров

Буду благодарен за любую помощь.


Файлы:
 

alexey1979621, на mql5 ответил ;)