Добрый день
Нужно написать советник, закрывающий ордер через определенное число часов.
Реализовал в тестовом режиме ( считал часовые тики), а в реале теперь не знаю как реализовать ( понятно, если советник круглосуточно висит, то тоже можно считать часы, но я хочу сделать чтобы советник можно было останавливать и вновь запускать). По астрономическому времени не получается - мешают субботы и воскресенья и праздники.
Хотел использовать функцию IsTradeAllowed(symbol, time) - чтобы исключить нерабочие часы, но почему-то эта функция в выходные тоже возвращает true (?).
Подскажите пожалуйста- какую еще функцию можно использовать ?
узнать сколько минут (минутных баров) прошло с момента открытия ордера : iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime());
узнать сколько минут (минутных баров) прошло с момента открытия ордера : iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime());
Иногда , особенно ночью не в каждой минуте есть тики. Получается так , что за 60 минут било приметно 57 баров.
А то можете просто вычислить время в минутах = (TimeCurrent()-OrderOpenTime())/60
Иногда , особенно ночью не в каждой минуте есть тики. Получается так , что за 60 минут било приметно 57 баров.
А то можете просто вычислить время в минутах = (TimeCurrent()-OrderOpenTime())/60
Тут уж смотря, что нужно топикстартеру. Судя по всему, ему нужно именно количество баров, т. к. есть упоминание о том, что мешают субботы и воскресенья. Таким образом, либо считаем все время без исключения, либо только то, когда были бары. Но если учесть, что говорилось именно о часах, то на Н1 проблема отсутствия баров встречается крайне редко. Поэтому просто:
int nOrderExistanceHours = iBarShift(OrderSymbol(),PERIOD_H1, <время открытия ордера>);
Тут уж смотря, что нужно топикстартеру. Судя по всему, ему нужно именно количество баров, т. к. есть упоминание о том, что мешают субботы и воскресенья. Таким образом, либо считаем все время без исключения, либо только то, когда были бары. Но если учесть, что говорилось именно о часах, то на Н1 проблема отсутствия баров встречается крайне редко. Поэтому просто:
Спасибо, с iBarShift все получилось.Нужны были именно рабочие часы.А через астрономическое время мешают не только субботы и воскресенья, но и праздники, и укороченные сессии перед праздниками.
Тут уж смотря, что нужно топикстартеру. Судя по всему, ему нужно именно количество баров, т. к. есть упоминание о том, что мешают субботы и воскресенья. Таким образом, либо считаем все время без исключения, либо только то, когда были бары. Но если учесть, что говорилось именно о часах, то на Н1 проблема отсутствия баров встречается крайне редко. Поэтому просто:
c PERIOD_H1 топикстартер может сильно попасть :-) если сделка открылась в 11.55 то уже в 12.01 iBarShift скажет что прошёл целый час и сделку нужно закрыть. Наверное у него пока прокатывает, если открывает сделки строго по границе часов, но это ненавсегда :-)
Я оттестировал на истории, при методе на открытии бара. Главная задача теперь - чтобы в реале точно так же моделировалось. Запрограммировал, что открывать буду в теч. нескольких минут в начале часа , а колво часов буду считать по iBarShift. По логике должно работать как на истории. Конечно , отличия все равно будут - если открывать в понедельник в 0 часов - возможен гэп, который при тестировании на истории при методе на открытии бара не учитывается. Но это отдельно нужно поисследовать.
c PERIOD_H1 топикстартер может сильно попасть :-) если сделка открылась в 11.55 то уже в 12.01 iBarShift скажет что прошёл целый час и сделку нужно закрыть. Наверное у него пока прокатывает, если открывает сделки строго по границе часов, но это ненавсегда :-)
Понятно, что у каждой задачи есть свои нюансы, которые нужно учесть. Главное, что дано верное направление для поиска решения.
Я оттестировал на истории, при методе на открытии бара. Главная задача теперь - чтобы в реале точно так же моделировалось.
В данном конкретном случае даже не могу придумать, что может быть в плане отличий. Поэтому в онлайн будет все то же самое
Запрограммировал, что открывать буду в теч. нескольких минут в начале часа , а колво часов буду считать по iBarShift. По логике должно работать как на истории. Конечно , отличия все равно будут - если открывать в понедельник в 0 часов - возможен гэп, который при тестировании на истории при методе на открытии бара не учитывается. Но это отдельно нужно поисследовать.
В данном конкретном случае даже не могу придумать, что может быть в плане отличий. Поэтому в онлайн будет все то же самое
Может в 12:01. А то два часа уже прошло. Вода выкипела и пельмени разварились
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день
Нужно написать советник, закрывающий ордер через определенное число часов.
Реализовал в тестовом режиме ( считал часовые тики), а в реале теперь не знаю как реализовать ( понятно, если советник круглосуточно висит, то тоже можно считать часы, но я хочу сделать чтобы советник можно было останавливать и вновь запускать). По астрономическому времени не получается - мешают субботы и воскресенья и праздники.
Хотел использовать функцию IsTradeAllowed(symbol, time) - чтобы исключить нерабочие часы, но почему-то эта функция в выходные тоже возвращает true (?).
Подскажите пожалуйста- какую еще функцию можно использовать ?