Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за помощь.
tara, я не понял о чем вы (:
Спасибо за помощь.
tara, я не понял о чем вы (:
... о костылях ;)
Аа... Жестоко вы :)
Так где же тут правда? Порекомендуйте, в какую сторону глянуть.
Из прошлых ответов прозвучало два варианта:
1. Использовать iBarShift() в функциях iClose, iHigh и iLow
2. Принудительно обновлять данные таймфрейма через iTime
Я уверен, найдется еще способов 5-10, как решить проблему. Давайте попробуем разобраться в механизме работы МТ4. Я не совсем понимаю, откуда брать инфу по этому поводу, т.к. хелпа явно недостаточно. Не реверсингом же заниматься.
Мне было бы несколько неудобно давать такой комментарий, если бы речь шла о чем-нибудь, разработанным мною.
А тебе не кажется что для твоего случая не важно какой день недели, а важно появление нового бара PERIOD_D1
Неужто, бар PERIOD_D1 не зависит от времени, неужели бар PERIOD_D1 строится по своему таймеру? До вашего комента у меня в голове PERIOD_D1 и время завязаны между собой.
Подскажите, пожалуйста, как проверить появление нового бара.
Безусловно от времени зависит, но не зависит от дня недели. И даже проверка на день недели может привести к неожиданному результату.
Вариантов определения нового бара несколько. Но все они основаны на запоминании времени открытия текущего бара с последующей проверкой соответствия этого времени.
Вот моя версия функции.
Вызывается в любом месте кода
Переменная LastDay объявлена на уровне глобальных переменных или static datetime
Таким образом
Безусловно от времени зависит, но не зависит от дня недели. И даже проверка на день недели может привести к неожиданному результату.
Вариантов определения нового бара несколько. Но все они основаны на запоминании времени открытия текущего бара с последующей проверкой соответствия этого времени.
Вот моя версия функции.
Вызывается в любом месте кода
Переменная LastDay объявлена на уровне глобальных переменных или static datetime
Таким образом
Здравствуйте.
Стоит задача раз в день в 00:00 часов по времени терминала ставить стрелочку pivot, которая рассчитывается так: (high+low+close)/3, где high, low и cloce - цены прошлого дня.
На тестере все прекрасно строится.
Проблема возникает в реалтайме. Когда закидываешь эксперт в текущий день, то пивот правильно строит в начале этого дня, и рассчитывается по прошлому дню. Но! Во второй день он ставит такой же пивот, как и в первый день. В третий день рассчитывает по данным 1-го дня, в четвертый день - по данным 2-го дня, и т.д. Т.е. иными словами, идет сдвиг. Чего не должно быть.
Предположения. Я думаю, что дело в механике терминала перехода на новый день. Но где именно касяк - не могу найти.
Как решить данную проблему? Может, пытаться строить пивот не сразу, а, скажем, спустя 5 минут? Это может решить проблему?
Код:
Вы либо путаете, либо лукавите. Если вчерашний день устанавливается только при инициализации (как в Вашем коде), то никакого сдвига не будет,- правильный расчет произойдет ровно один раз, в день запуска советника.
ЗЫ Как на реале, так и в тестере, имхенько.
Только не статик. Классического статика в MQL нет, есть совершенно иной режим управления памятью, аналогов которого я не знаю, а смысла - не понимаю.
Ну не знаю о каком классическом статике ты говоришь. И не знаю что можно не понять из описания.
Чётко и ясно написано о времени жизни и доступности static переменных.