А почему не
ulong tr_time = cur_time.hour * 3600 + cur_time.min * 60 + cur_time.sec;?
А почему не
?Потому что нужно брать время КОТИРОВКИ (TimeCurrent(sv_time); //Возвращает последнее известное время сервера) Т.Е самой котировки
Какой смысл проверять расчётное время?
Расчётное время (cur_time) берётся лишь только для того, чтобы проверить не вчерашняя ли котировка с нормальным временем
и для определения не выходные ли.
очень странная логика, ну да дело ваше
Почему странная?
Из справки:
TimeTradeServer Возвращает расчетное текущее время торгового сервера. В отличие от функции TimeCurrent(), расчет значения времени производится в клиентском терминале и зависит от настроек времени на компьютере пользователя.
Так какой смысл проверять локальное время компа, когда нам нужно время котировки?
Добавлено
TimeCurrent Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов. В обработчике OnTick() данная функция вернет время пришедшего обрабатываемого тика. В других случаях (например, вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это – время прихода последней котировки по любому символу, доступного в окне "Обзор рынка", то самое время, которое показано в заголовке этого окна. Значение времени формируется на торговом сервере и не зависит от настроек времени на компьютере пользователя.
В функции OnBookEvent() делаем:
void OnBookEvent (const string& symbol); { if(symbol == Symbol()) { if(CheckTradingTime()) { //Дальнейщая работа } } }
Если в OnBookEvent() проверка символа валидна, то пришла новая котировка по этому символу (или изменился стакан, кто-то убрал свой отложенный ордер,
а остальные ордера могли быть выставлены неделю назад), а далее должно быть понятно...
Дабавлено
А ешё есть премаркет, - это когда совершаются сделки вне биржевой сессии.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет!
Есть функция, которая проверяет торговое время для операций с ордерами.
Где в коде ошибка?
А ошибка есть, потому что иногда, происходит действие с ордерами вне пределов заданного времени.