Написать функция фильтра времени с учетом GMT для советника, через таймштам.

Техническое задание

Сейчас мой советник работает вот так:
extern int gmt = 3;//Если 999 то автомат
extern int hour_ban = 0;//Час с которого не торгуем
extern int hour_ban0 = 6;//Час до которого не торгуем
extern int hour_allow = 12;//Час с которого разрешено торговать
extern int hour_allow0 = 18;//Час до которого разрешено торговать

int OnInit()//Автоматическая установка времени от локального
{
...
double offset = TimeCurrent()-TimeGMT();
if(GMTreal==999){gmt=MathRound(offset/3600);}
...
}

void OnTick()
{
...
if(Hour()>=hour_allow && Hour()<=hour_allow0) {... //торгуем ...}
if(Hour()>=hour_ban && Hour()<=hour_ban0 ) {... //запускаем функцию закрытия ордеров и не торгуем...}
...
}
Проблема в том что этот метод не учитывает временной сдвиг GMT.
У некоторых брокеров закрытие дневной сессии происходит в 23:00.
Получается ошибка//if(23>=0 && 23<=6)
Как это сделать не соображу...

Нужно организовать фильтр времени таким образом что бы сохранить входные переменные типа int (для оптимизации) и что бы был учет сдвига.
И еще, если есть готовое решение с парсингом GMT (например time.com) или какое то другое программное решение для автоматической установки сдвига gmt-буду рад, но если нет то не проблема.


Откликнулись

1
Разработчик 1
Оценка
(50)
Проекты
94
29%
Арбитраж
3
33% / 0%
Просрочено
4
4%
Работает
2
Разработчик 2
Оценка
(49)
Проекты
134
27%
Арбитраж
62
13% / 53%
Просрочено
58
43%
Свободен
3
Разработчик 3
Оценка
(254)
Проекты
573
36%
Арбитраж
64
20% / 58%
Просрочено
147
26%
Свободен
5
Разработчик 5
Оценка
(5)
Проекты
3
0%
Арбитраж
19
0% / 100%
Просрочено
0
Свободен
6
Разработчик 6
Оценка
(45)
Проекты
50
34%
Арбитраж
14
7% / 64%
Просрочено
15
30%
Свободен
7
Разработчик 7
Оценка
(14)
Проекты
22
59%
Арбитраж
2
0% / 50%
Просрочено
2
9%
Свободен

Информация о проекте

Бюджет
30+ USD
Исполнителю
27 USD