как определить что бар сформировался

 

не хочу лишний раз насиловать железо, так сказать есть желание оптимизировать экперт.

где-то видел пример но немогу вспомнить где.

очень надо!

Спасибо.

 
Если его индекс стал 1.
 

datetime time; //global var (глобальная перемення)

int init()

  {

    time=Time[0];

    // код

    return(0);

  }

int start()

  {

    if(time!=Time[0]) // если уже новый бар

       {

         time=Time[0];

         // код

       }

     // код

    return(0);

  }

 
WWer писал (а) >>

datetime time; //global var (глобальная перемення)

int init()

{

time=Time[0];

// код

return(0);

}

int start()

{

if(time!=Time[0]) // если уже новый бар

{

time=Time[0];

// код

}

// код

return(0);

}

Спасибо.

Получается при старте я всегда будут терять первый бар. Но это в общем мелочи.

Но это не красиво, но это уже к разрабочикам MT4.

По хорошему должна быть CallBack функция или процедура как даже не по профессионально сделано.

Хорошо бы еще передавать CallBack процедуру в качестве параметра на открытие, изменение и закрытие ордера.

Если передал NULL то у меня нет данной callBack функции.

Вот посудите сами: а так сколько ждать одну секунду, минуту не известно сколько будет обрабатываться распоряжение ...

Получается я постоянно должен насиловать всю систему в целом создавать никому не нужную нагрузку на тот же сервер про клиент я молчу.

А тут вообще бывают разработки MT? Хорошо бы что бы они увидили это сообщение.

Система в общем неплохая но есть обидные недоработки которые с профессиональной точки зрения.

 
vtigers писал (а) >>

int start() {

    if( !NevBar() ) return(0);

    /* Ваш код */
}


//===============================================================================
// Функция контроля нового бара
//===============================================================================
bool NevBar(){

    static int PrevTime=0;
    if (PrevTime==Time[0]) return(false);
    PrevTime=Time[0];
    return(true);
}
 
vtigers писал (а) >>

Спасибо.

Получается при старте я всегда будут терять первый бар. Но это в общем мелочи.

Но это не красиво, но это уже к разрабочикам MT4.

По хорошему должна быть CallBack функция или процедура как даже не по профессионально сделано.

Хорошо бы еще передавать CallBack процедуру в качестве параметра на открытие, изменение и закрытие ордера.

Если передал NULL то у меня нет данной callBack функции.

Вот посудите сами: а так сколько ждать одну секунду, минуту не известно сколько будет обрабатываться распоряжение ...

Получается я постоянно должен насиловать всю систему в целом создавать никому не нужную нагрузку на тот же сервер про клиент я молчу.

А тут вообще бывают разработки MT? Хорошо бы что бы они увидили это сообщение.

Система в общем неплохая но есть обидные недоработки которые с профессиональной точки зрения.

1. Мне кажется вы не совсем понимаете, что бары в МТ4 начинаются не с 1, а с нуля. Но если вы хотите именно уже сформировавшийся, то тут один ответ - 1. То есть предшествующий текущему.

2. Это сайт разработчиков терминала, поэтому они здесь бывают и частенько. Также как и профессиональные советчики, как чего сделать лучше.

 
Есть еще один метод определения того, что бар сформировался до прихода первого тика нового бара - сравнить текущее время с временем формирования бара. Если их разница больше или равна периоду графика (приведенное в секунды), то все - бар сформирован. Но для этого нужно все время мониторить текущее время (решение пока одно - скрипт). Вот когда получим событийную модель в MQL, тогда можно будет решить проблему простым таймером.
 

if ( Volume(0) == 1 )

{

//код

}


Думаю так будет еще проще ))

 
8O8AH писал (а) >>

if ( Volume(0) == 1 )

{

//код

}


Думаю так будет еще проще ))

НИзя.....

 

Scriptong писал (а) >>
Есть еще один метод определения того, что бар сформировался до прихода первого тика нового бара - сравнить текущее время с временем формирования бара. Если их разница больше или равна периоду графика (приведенное в секунды), то все - бар сформирован. Но для этого нужно все время мониторить текущее время (решение пока одно - скрипт). Вот когда получим событийную модель в MQL, тогда можно будет решить проблему простым таймером.

не обязательно мониторить время

можно по приходу тика... правда тик может прийти с опозданием несколько минут - обычно по ночам такое

 
8O8AH писал (а) >>

if ( Volume(0) == 1 )

{

//код

}


Думаю так будет еще проще ))

при этом подходе можно получить проблему - т е пропустить новый бар


лучше по времени открытия бара


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