//+------------------------------------------------------------------+//| Описание : Возвращает флаг разрешения торговли по времени. |//+----------------------------------------------------------------------------+//| Параметры: |//| hb - часы времени начала торговли |//| mb - минуты времени начала торговли |//| he - часы времени окончания торговли |//| me - минуты времени окончания торговли |//+----------------------------------------------------------------------------+bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
datetime db, de; // Время начала и окончания работыint hc; // Часы текущего времени торгового сервера
db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+hb+":"+mb);
de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+he+":"+me);
hc=TimeHour(TimeCurrent());
if (db>=de) {
if (hc>=he) de+=24*60*60; else db-=24*60*60;
}
if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
elsereturn(False);
}
У меня 2 вопроса:
1. Зачем переводит сразу время в строку, а потом строку во время?
2. Зачем это условие в функции?
if (db>=de) {
if (hc>=he) de+=24*60*60; else db-=24*60*60;
}
Ведь проверка времени ниже.. Вот тут:
if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
elsereturn(False);
Да и в параметрах функции переменные времени не является типом datetime, а почему-то int...
Ха, я допер до истины. Дело в том, что файл над редактированием которого я работал был открыт с флешки еще вчера. Текст открыт, все хорошо, а флешку я сегодня не подключал. Вот МЕ4 и в непонятках - что это я хочу скомпилить, текст есть но для редактирования он просто НЕ ДОСТУПЕН. Блин, вот бывает же.
2. Для дополнительной коррекции дат начала или конца на сутки
А зачем? Тут нужно ограничить время торговли советника. А время от часа окончания времени торговли до времени начала времени торговли нас не интересует, т.к. в это время советник не торгует! НОНСЕНС какой-то..
MikeM:
datetime и int - по большому счёту - одно и то же, к тому же параметры не являются полными датами, а только количеством часов и минут
Но время то должно быть временем, как это нет разницы?
С временем то я понял, это ведь не дата, потому как число и объявляем. А что по поводу:
if (db>=de) {
if (hc>=he) de+=24*60*60; else db-=24*60*60;
}
Сколько встречал вариантов, такого не видел ещё... Странно как-то. Тем более тут и цикла нет, и минусует и плюсуется время начала и конца торговли. Не понимаю я этот момент.
По сути время начала и конца торговли db и de мы получили выше. Значит это кусок можно стереть, и тогда тут мы проверим время:
if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
elsereturn(False);
Какой смысл писать лишний код? Прошу объяснить этот момент. Он, на самом деле, не логичный.
С временем то я понял, это ведь не дата, потому как число и объявляем. А что по поводу:
Сколько встречал вариантов, такого не видел ещё... Странно как-то. Тем более тут и цикла нет, и минусует и плюсуется время начала и конца торговли. Не понимаю я этот момент.
По сути время начала и конца торговли db и de мы получили выше. Значит это кусок можно стереть, и тогда тут мы проверим время:
Какой смысл писать лишний код? Прошу объяснить этот момент. Он, на самом деле, не логичный.
Каждый волен делать по своему. Игорь сделал так. Я делаю по другому.
А плюсуется или минусуется. Так это зависит от времени торговли. Например как организовать торговлю с 21 часа до 5 часов.
Если бы не использовались минуты, то можно было бы значительно все упростить
У Кима есть функция:
У меня 2 вопроса:
1. Зачем переводит сразу время в строку, а потом строку во время?
2. Зачем это условие в функции?
Ведь проверка времени ниже.. Вот тут:
Да и в параметрах функции переменные времени не является типом datetime, а почему-то int...
У Кима есть функция:
У меня 2 вопроса:
1. Зачем переводит сразу время в строку, а потом строку во время?
2. Зачем это условие в функции?
Ведь проверка времени ниже.. Вот тут:
Да и в параметрах функции переменные времени не является типом datetime, а почему-то int...
1. Чтобы заменить во времени текущие значения часов и минут на указанные в параметрах функции
я бы сделал так:
2. Для дополнительной коррекции дат начала или конца на сутки
datetime и int - по большому счёту - одно и то же, к тому же параметры не являются полными датами, а только количеством часов и минут
2. Для дополнительной коррекции дат начала или конца на сутки
А зачем? Тут нужно ограничить время торговли советника. А время от часа окончания времени торговли до времени начала времени торговли нас не интересует, т.к. в это время советник не торгует! НОНСЕНС какой-то..
datetime и int - по большому счёту - одно и то же, к тому же параметры не являются полными датами, а только количеством часов и минут
Но время то должно быть временем, как это нет разницы?Время это число, при том целое.
Время это число, при том целое.
С временем то я понял, это ведь не дата, потому как число и объявляем. А что по поводу:
Сколько встречал вариантов, такого не видел ещё... Странно как-то. Тем более тут и цикла нет, и минусует и плюсуется время начала и конца торговли. Не понимаю я этот момент.
По сути время начала и конца торговли db и de мы получили выше. Значит это кусок можно стереть, и тогда тут мы проверим время:
Какой смысл писать лишний код? Прошу объяснить этот момент. Он, на самом деле, не логичный.
С временем то я понял, это ведь не дата, потому как число и объявляем. А что по поводу:
Сколько встречал вариантов, такого не видел ещё... Странно как-то. Тем более тут и цикла нет, и минусует и плюсуется время начала и конца торговли. Не понимаю я этот момент.
По сути время начала и конца торговли db и de мы получили выше. Значит это кусок можно стереть, и тогда тут мы проверим время:
Какой смысл писать лишний код? Прошу объяснить этот момент. Он, на самом деле, не логичный.
Каждый волен делать по своему. Игорь сделал так. Я делаю по другому.
А плюсуется или минусуется. Так это зависит от времени торговли. Например как организовать торговлю с 21 часа до 5 часов.
Если бы не использовались минуты, то можно было бы значительно все упростить
Каждый волен делать по своему. Игорь сделал так. Я делаю по другому.
А плюсуется или минусуется. Так это зависит от времени торговли. Например как организовать торговлю с 21 часа до 5 часов.
А то что код избыточен. С кем не бывает.
Если бы не использовались минуты, то можно было бы значительно все упростить
Сделать так что б время торговли было с 21.00 по 23.59, а потом с 00.01 по 5.00
А что есть другие варианты?
Сделать так что б время торговли было с 21.00 по 23.59, а потом с 00.01 по 5.00
А что есть другие варианты?
Если напишите if(Hour() >= 21 || Hour() < 5) будет с 21.00 до 4.59.
Странно. Оно через полночь проскакивает и не учитывает это вовсе?