Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 767
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Понятное дело что сравнение идет по количеству секунд, прошедших с 70-го года, но в этом количестве секунд учтено все - и дата и время.
Просто приведу пример, по сути упрощение возникшей недавно у меня проблемы.
У меня изначально было такое решение:
А теперь прикол: указанный в коде принт выскочит в пятницу, но не после 21:30, а в 00:00 на первом тике.
Потому что когда у сервера брокера наступила пятница, на моем локальном компе еще был четверг, таймшифт ведь разный.
В тестере же будет все ок и принт выскочит как и должен в пятницу после 21:30. Ну разве не путаница?
Конечно путаница. Только путаница в твоей голове. TimeToString("21:30") будет давать текущую дату от 21:30:00 до 21:29:59 следующего дня. Я поправлю комментарии в твоём коде.
А вот такой код будет работать правильно
На одном ноутбуке стоИт два терминала МТ4: один с 4-мя знаками после запятой, второй - с 5-тью знаками. За одно и то же время трафик на первом 105/0 kb, на втором 3450/0 kb. Первый грухит процессор на 6%, второй - на 39%. В чем проблема? Это вообще норма?
AlexeyVik
Изменил дату у себя на компе на 2000 год.
запустил этот скрипт:
и получил:
следовательно функция StringToTime() берет дату с локального компа
AlexeyVik
Изменил дату у себя на компе на 2000 год.
запустил этот скрипт:
и получил:
следовательно функция StringToTime() берет дату с локального компа
Ну и что??? Пусть хоть с луны берёт, главное по этому времени "от и до" прошло XXX секунд и это полученное целочисленное число сравниваем с нужным нам количеством секунд прошедших от 01.01.1970 нужного нам времени.
Ты лучше проверь эту строку
в том месте где у тебя была проблема. Сегодня как-раз пятница.
Ты лучше проверь эту строку
в том месте где у тебя была проблема. Сегодня как-раз пятница.
я проверил, если на локальном компе дата меньше чем дата брокера, то принты есть,
а если на локальном компе дата больше чем дата брокера, то принтов нету
при этом время проверял то, которое уже точно прошло, то есть "11:30"
в первом случае TimeCurrent() сравнивается с 2014.11.06 11:30, а во втором случае с 2014.11.08 11:30
PS поправил выделенное
первая строка понятна, комментарий ко второй строке - нет.
Почему до пятницы далеко, когда она уже наступила? Ведь вторая строка исполняется только если наступила пятница.
я проверил, если на локальном компе дата меньше чем дата брокера, то принты есть,
а если на локальном компе дата больше чем дата брокера, то принтов нету
при этом время проверял то, которое уже точно прошло, то есть "11:30"
в первом случае TimeCurrent() сравнивается с 2014.11.06 11:30, а во втором случае с 2014.11.08 11:30
PS поправил выделенное
Ну вот у меня локальное время больше серверного на 1 час.
Этот скрипт
выводит такие значения
Сначала количество секунд прошедших с 01.01.1970 до указанного времени, а потом время в привычном нам виде.
Исходя из этого объясни что тебя смущает в этих значениях?
Да. Во втором комментарии я чуток не о том думал.
да.
Здравствуйте.
Есть такая задача. (не могу прикрутить к тику)
Если сработал отложенный ордер {то...}
В советнике для подсчета ордеров использую Terminal.mqh.
Терминал // Mas_Tip[0] открытые Buy
// если количество ордеров Buy увеличилось на 1 то...
if (Mas_Tip[0]+1)
{
функция
}
Все работает. Но срабатывает на каждом следующем тике.
Как прикрепить это дело к тику? А потом сравнить значение на предыдущем тике и на данном тике.
Ну вот у меня локальное время больше серверного на 1 час.
Исходя из этого объясни что тебя смущает в этих значениях?
В этих значениях ничего не смущает, там все правильно, но речь то не об этом.
Проблема конкретно с пятницей не актуальна если у тебя время локальное больше чем время брокера на Х часов.
Но представь если у тебя на локальном компе не +1, а -1 час разница с брокером.
И есть это простое условие:
В этом случае:
1. у брокера наступит первый тик пятницы, например сегодняшний тик, у которого время 2014.11.07 00:00
2. берем количество секунд, прошедших с 01.01.1970 00:00 до момента рассматриваемого тика, то есть до 2014.11.07 00:00
3. берем количество секунд, прошедших с 01.01.1970 00:00 до 06.11.2014 21:30 (это именно вчерашняя дата, т.к. берется время локального компа, у которого на момент рассматриваемого тика не пятница, а четверг, то есть 6 число, а если быть еще точнее, то 2014.11.06 23:00, разница в 1 час)
Вуаля, количество секунд в пункте 2 больше чем в пункте 3.
А значит в первый пятничный тик исполнится указанный в коде принт, хотя если бы функция StringToTime() брала дату с сервера брокера, то все бы сработало как и задумано, принт выскочил бы в пятницу только после того, как время перевалит за 21:30
Здравствуйте.
Есть такая задача. (не могу прикрутить к тику)
Если сработал отложенный ордер {то...}
В советнике для подсчета ордеров использую Terminal.mqh.
Терминал // Mas_Tip[0] открытые Buy
// если количество ордеров Buy увеличилось на 1 то...
if (Mas_Tip[0]+1)
{
функция
}
Все работает. Но срабатывает на каждом следующем тике.
Как прикрепить это дело к тику? А потом сравнить значение на предыдущем тике и на данном тике.