Вопрос по коду: Как определить начало очередного бара?

 

Вопрос по коду: Как определить начало очередного бара?

В коде одного советника увидел следующий код.

void CheckForClose()

{

string sHeaderLetter;

string sBodyLetter;

bool CloseOrd;

//----

iif(Volume[0]>1) return;


Зачем нужна эта проверка? Что будет если закомментировать этот if?

 

//--------------------------------------------------------------------
void Fun_New_Bar()               // Ф-ия обнаружения ..
  {                              // .. нового бара
   static datetime New_Time=0;   // Время текущего бара
   New_Bar=false;                // Нового бара нет
   if(New_Time!=Time[0])         // Сравниваем время
     {
       New_Time=Time[0];         // Теперь время такое
       New_Bar=true;             // Поймался новый бар
     }
  }
//--------------------------------------------------------------------

 
if (iBarShift(NULL,0,t)>0) Y=0;


if ((TimeCurrent()-Time[0])<1)
    {
    Alert ("Открылась новая свеча"); 
    if (Y==0)
       { 
       SendMail("из Вашего эксперта", "Время открытия новой свечи");
       Y=1;
       t=TimeCurrent();
       }
    }
У меня такое есть. Каждый новый бар отправляется сообщение на почту. Тут из текущего времени TimeCurrent() минусуется время открытия текущего бара Time[0]. И если это значение меньше 1 секунды, то значит только что открылся новый бар.
 
Так зачем такая проверка вообще нужна, про которую я написал?
 
Первоначально у меня там вместо единицы была глобальная переменная. Допустим можно менять на 60 секунд для того, чтобы он трезвонил на открытии, допустим, часовой свечи. Поэтому там 2 условия стоят. Это так. К слову.
 

Может я вопрос не так задал?

Зачем нужен этот if в коде советника?

//----

iif(Volume[0]>1) return;

 
sempfid >>:
Так зачем такая проверка вообще нужна, про которую я написал?

Видимо для того, чтобы эксперт останавливался на этой проверке и возвращался на начало кода. Но это вообще бессмысленное условие, так как оно стоит в конце. Да и к тому же ещё любой бар на втором тике уже будет иметь объём больше единицы. Не знаю зачем там это условие, да и ещё в конце.

 
Может эксперт анализирует только первые тики всех баров и на этом строит стратегию . Хз.
 
Все очень просто. Когда Вам нужна проверка условий только по началу бару, ставится подобное условие, чтобы не загружать терминал бессмысленными вычислениями внутри бара.
 
Roger. Если его не закоментить то у меня в тестере по контрольным точкам успевает отработать только закрытие предыдущего ордера, а открытие нового не успевает
 
Значит надо смотреть весь код, иначе все только домыслы.
Причина обращения: