Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть вопросы к автору программы - задай их в разделе Обсуждение
Alexander_D
202
Alexander_D 2015.03.03 15:24 
Как написать новый ордер не по тику, а на закрытии бара? Ведь бар может закрыться в период между тиками.
Alexander Laur
7652
Alexander Laur 2015.03.03 15:45  

Попробуйте так:

   MqlDateTime dt;    TimeToStruct(TimeCurrent(), dt);       static int lastMinute = 0;

bool isNewBar = dt.min % Period() == 0 && lastMinute != dt.min;       if (isNewBar)    {       //здесь пишите код закрывающий позицию       lastMinute = dt.min;    }

Nikolay Demko
12452
Nikolay Demko 2015.03.03 15:58  
Alexander_D:
Как написать новый ордер не по тику, а на закрытии бара? Ведь бар может закрыться в период между тиками.
В таймере, на 59-й секунде последней минуты бара.
Alexander_D
202
Alexander_D 2015.03.03 16:31  
А как в таком случае сделать так, чтобы таймер включался на открытии бара? он же включается на открытии программы..
Alexander_D
202
Alexander_D 2015.03.03 16:39  
papaklass:

Попробуйте так:

Всё равно это запускается в старте(т.е. по приходу нового тика), а если новый бар пришёл, а тика ещё не было - то и исполняться не будет.
Alexander Laur
7652
Alexander Laur 2015.03.03 16:44  
Alexander_D:
Всё равно это запускается в старте(т.е. по приходу нового тика), а если новый бар пришёл, а тика ещё не было - то и исполняться не будет.
Новый бар не может сформироваться без цены! А новая цена приходит с новым тиком.
Nikolay Demko
12452
Nikolay Demko 2015.03.03 16:49  
papaklass:
Новый бар не может сформироваться без цены! А новая цена приходит с новым тиком.
Проблема не в тике, а в определении последнего на баре тика, ну или предпоследнего, в этом суть постановки задачи.
Alexander_D
202
Alexander_D 2015.03.03 16:53  
papaklass:
Новый бар не может сформироваться без цены! А новая цена приходит с новым тиком.
Вот тут вы ошибаетесь Бары - формируются по времени, а не по тикам. Это как раз чётко содержится в определении Бара. Это даже наглядно видно на графике! Если бы вы были правы, то цена открытия каждого бара совпадала бы с ценой закрытия предыдущего, а это далеко НЕ ВСЕГДА так. Посмотрите внимательно на минутный график EURUSD!
Nikolay Demko
12452
Nikolay Demko 2015.03.03 16:54  
Alexander_D:
А как в таком случае сделать так, чтобы таймер включался на открытии бара? он же включается на открытии программы..

Таймер работает всё время, просто в таймере стоит фильтр который и определяет вызывать ли нужный функционал или нет.

Если думаете что таймер затратный механизм, то выберите допустимую частоту таймера и оптимизируйте проверку.

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

Maxim Khrolenko
7003
Maxim Khrolenko 2015.03.03 16:54  
Закрытие бара можно определить только по 1-му тику нового бара, когда volume = 1.
Alexander_D
202
Alexander_D 2015.03.03 16:55  
Urain:
Проблема не в тике, а в определении последнего на баре тика, ну или предпоследнего, в этом суть постановки задачи.
Проблема в том, что бар закрывается в зависимости от времени, а не от прихода тика!
/ /1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий