Ошибки, баги, вопросы - страница 846

 
Скажите, есть ли функция, которая может отопрать позицию для дальнейшей работы (модификации) с помощю  ,   ulong deal; // Тикет сделки, если она совершена       по тикету сделки, запомненному ранее?   Наверно, для такого выбора понадобится некий сложный алгоритм- как левой рукой чисать правое ухо?
 
Dimka-novitsek:
Скажите, есть ли функция, которая может отопрать позицию для дальнейшей работы (модификации) с помощю  ,   ulong deal; // Тикет сделки, если она совершена       по тикету сделки, запомненному ранее?   Наверно, для такого выбора понадобится некий сложный алгоритм- как левой рукой чисать правое ухо?
Каждая торговая сделка имеет идентификатор позиции. По этому идентификатору и пробовать искать саму позицию.
 

Всем вечера доброго! Вижу в этой ветви люди интересуются. По чемпу...

До сих пор не проверены мои отправленные данные из закрытой информации на чемпионат, хотя эксперт - проверен!

Когда будут они проверены?

 
Leo:

Всем вечера доброго! Вижу в этой ветви люди интересуются. По чемпу...

До сих пор не проверены мои отправленные данные из закрытой информации на чемпионат, хотя эксперт - проверен!

Когда будут они проверены?

Если робот проверен без ошибок, не стоит волноваться. Насколько я понимаю,  эксперт проверяется автоматически, а личные данные ручками. 
 
Leo:

Всем вечера доброго! Вижу в этой ветви люди интересуются. По чемпу...

До сих пор не проверены мои отправленные данные из закрытой информации на чемпионат, хотя эксперт - проверен!

Когда будут они проверены?

Где-то уже советовалось: при возникновении вопросов зарегистрировавшийся участник может спокойно написать о своей проблеме в разделе "Обсуждения" на своей страничке чемпионата. Мессидж гораздо быстрее дойдёт до адресата, нежели чем делать это через форум.
 

У меня возник вопросик.

Есть кусочек кода из статьи который определяет начало нового бара.

   static datetime Old_Time;
   datetime New_Time[1];
   bool IsNewBar=false;

// копируем время текущего бара в элемент New_Time[0]
   int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
   if(copied>0) // ok, успешно скопировано
     {
      if(Old_Time!=New_Time[0]) // если старое время не равно
        {
         IsNewBar=true;   // новый бар
         if(MQL5InfoInteger(MQL5_DEBUGGING)) 
            Print("Новый бар",New_Time[0],"старый бар",Old_Time);
            Old_Time=New_Time[0];   // сохраняем время бара
        }
     }
   else
     {
      Alert("Ошибка копирования времени, номер ошибки =",GetLastError());
      ResetLastError();
      return;
     }

//--- советник должен проверять условия совершения новой торговой операции только при новом баре
   if(IsNewBar==false)
     {
      return;
     }

 Все работает хорошо. Но я хочу в последний if всунуть расчет разной тяжелой статистики. Что бы на момент наступления нового бара было минимум расчетов. 

Собственно вопрос. Как поведет себя этот код, если статистика будет считатся относительно долго (скажем 2 секунды), а промежуток между тиками старого бара и нового будет минимальным.

Насколько понимаю, пока будет считаться функция OnTick() тики будут пропускаться, но станет ли следующий тик новым для советника, хотя в баре он не первый.

Ручной проверкой пока понять не получилось 

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
St.Vitaliy: Как поведет себя этот код, если статистика будет считатся относительно долго (скажем 2 секунды) 
Если функция OnTick() выполняется 2 секунды, то все котировки, приходящие в течение этого временного промежутка, будут проигнорированы советником. Вы этот момент хотели уточнить? "Новой" котировкой для советника станет котировка, пришедшая сразу после завершения очередного  выполнения  функции OnTick(), даже если эта котировка не является "первым тиком на баре". 
 
Yedelkin:
Если функция OnTick() выполняется 2 секунды, то все котировки, приходящие в течение этого временного промежутка, будут проигнорированы советником. Вы этот момент хотели уточнить?

Вот, эти 2 секунды проигнорированы (и тики за это время), а вот на третьей к примеру придет очередной тик и код воспримет его как новый в баре?

Косвенно это подтверждается тем, что когда я советника запускаю, то всегда очередной тик является первым. 

Задам вопрос по другом, если статистика будет считаться 90 секунд, условие на новый тик на М1 хоть когда-то выполнится? 

 
Yedelkin:
Каждая торговая сделка имеет идентификатор позиции. По этому идентификатору и пробовать искать саму позицию.
Спасибо!!
 
St.Vitaliy: Вот, эти 2 секунды проигнорированы (и тики за это время), а вот на третьей к примеру придет очередной тик и код воспримет его как новый в баре? Косвенно это подтверждается тем, что когда я советника запускаю, то всегда очередной тик является первым.  Задам вопрос по другом, если статистика будет считаться 90 секунд, условие на новый тик на М1 хоть когда-то выполнится? 

Ну, я уже выше дописал. Повторю: "Новой" котировкой для советника станет котировка, пришедшая сразу после завершения очередного  выполнения  функции OnTick(), даже если эта котировка не является "первым тиком на баре". У Вас условие наступления нового бара

if(Old_Time!=New_Time[0])

 проверится только после того, как завершится обработка экспертом той котировки, которая пришла на "предыдущем" баре. ..Если функция OnTick() выполняется 90 секунд и начата в 00.00.00, то "условие на новый тик на М1 хоть когда-то выполнится", а именно: после 00.01.30

Причина обращения: