Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Посмотри на Топ сигналов MetaTrader 5. Выбери лучший и подпишись!
alex
86
alex 2009.07.13 20:02 

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

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

void CheckForClose()

{

string sHeaderLetter;

string sBodyLetter;

bool CloseOrd;

//----

iif(Volume[0]>1) return;


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

Александр
427
Александр 2009.07.13 20:05  

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

Денис
865
Денис 2009.07.13 20:09  
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 секунды, то значит только что открылся новый бар.
alex
86
alex 2009.07.13 20:09  
Так зачем такая проверка вообще нужна, про которую я написал?
Денис
865
Денис 2009.07.13 20:14  
Первоначально у меня там вместо единицы была глобальная переменная. Допустим можно менять на 60 секунд для того, чтобы он трезвонил на открытии, допустим, часовой свечи. Поэтому там 2 условия стоят. Это так. К слову.
alex
86
alex 2009.07.13 20:15  

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

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

//----

iif(Volume[0]>1) return;

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

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

Денис
865
Денис 2009.07.13 20:22  
Может эксперт анализирует только первые тики всех баров и на этом строит стратегию . Хз.
Alexander
2441
Alexander 2009.07.13 20:31  
Все очень просто. Когда Вам нужна проверка условий только по началу бару, ставится подобное условие, чтобы не загружать терминал бессмысленными вычислениями внутри бара.
alex
86
alex 2009.07.13 20:34  
Roger. Если его не закоментить то у меня в тестере по контрольным точкам успевает отработать только закрытие предыдущего ордера, а открытие нового не успевает
Alexander
2441
Alexander 2009.07.13 20:48  
Значит надо смотреть весь код, иначе все только домыслы.
/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий