![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему-то вы заострили внимание на проблеме с PERIOD_CURRENT а вся проблема в не очень правильном подходе к проблеме. Зачем вам ТФ? Для регулирования расстояния от high и low бара достаточно цену перевести в пиксели, прибавить или вычесть N пикселей и полученное значение опять перевести в цену на которую и поставить метку.
На самом деле, у меня как-то так и написано. Но почему-то, в тот момент, когда запускается терминал и ещё иногда по каким-то причинам это расстояние само по себе изменяется.
Вот, например, сегодня я запускаю терминал, открыааю график GBPUSD (Weekly) и вижу следующее:
***
Сменяю таймфрейм графика на любой другой. Возвращаюсь назад на ТФ (Weekly) и вижу:
***
Как видно на скринах, расстояние на обоих графиках различное. С чего бы это вдруг?
Все графические элементы отрисовываются относительно некоторого расстояния от нужного бара в процентах.
Вот обе функции:
При старте терминала, индикаторы запускаются, но чарта еще нет.
Нужно позже перепроверять, и корректировать.
пс. для одинакового отступа лучше делать отступ в пикселях, считать сколько пунктов в одном пикселе и перерисовывать видимые объекты.
При старте терминала, индикаторы запускаются, но чарта еще нет.
Как я понимаю, теоритически график может быть ещё не подгружен и индикатор уже запустился. Но вот нестыковка.. График недельный. Все бары на графике те, который были вчера. А вчера я тоже запускал платформу. Вот это уже странно. Тем более, странно, что индикатор запустился, при теоритически отсутствующем графике. Если бы, например, я бросил индюк на график с ТФ = М1 и он запустился когда ещё не подгружены данные, то на основании чего он отрисует то, что нужно? Или даже не отрисует, а просчитает то, что нужно. В моём случае отрисовках неких данных для теста, которые дальше не будут принтоваться.
Нужно позже перепроверять, и корректировать.
Всмысле потом? О чём речь? Глазом что-ли перепроверять? )
Как я понимаю, теоритически график может быть ещё не подгружен и индикатор уже запустился. Но вот нестыковка.
я вам говорю практически, не теоретически)
чарт не создан, его нет еще.
Всмысле потом? О чём речь? Глазом что-ли перепроверять? )
ну, если вы рисуете глазом, то да, им тоже можно)
я вам говорю практически, не теоретически)
чарт не создан, его нет еще.
Мысль, я конечно, понял. Подумаю на досуге над реализацией.
ну, если вы рисуете глазом, то да, им тоже можно)
Глазом я рисую лишь мысленно. В данном случае, придётся отлавливать ситуацию наяву..)
Мысль, я конечно, понял. Подумаю на досуге над реализацией.
обычная проверка.
например:
if (ChartGetDouble(0, CHART_PRICE_MAX)<=0 || ChartGetDouble(0, CHART_PRICE_MIN)<=0)
Глазом я рисую лишь мысленно. В данном случае, придётся отлавливать ситуацию наяву..)
опять таки - проверять изменение размеров чарта и реагировать на это, или в OnChartEvent или в OnTimer
В OnCalculate() я написал вот так:
Самое интересное, что эти дни ни разу не принтанул в журнал терминал ничего. А я так хотел отловить эту ситуацию..((
Искусственно, отключив сеть создать "требуемую атмосферу" тоже не выйдет. Без сети индикатор не показывает всё что нужно.
В OnCalculate() я написал вот так:
Самое интересное, что эти дни ни разу не принтанул в журнал терминал ничего. А я так хотел отловить эту ситуацию..((
Искусственно, отключив сеть создать "требуемую атмосферу" тоже не выйдет. Без сети индикатор не показывает всё что нужно.
Такое можно отловить только на старте работы терминала. При штатной работе неадекватных значений уже не бывает.
P. S. Только заметьте, что проверяете в условии одни значения, а в журнал выводите другие.
Такое можно отловить только на старте работы терминала. При штатной работе неадекватных значений уже не бывает.
Как я понимаю, не только при старте терминала, а, именно, при старте терминала, например, 1-ый раз в день или в несколько дней т.к. если открыть терминал, и, после сразу же закрыть его и открыть снова, навряд ли, будет такой косяк.
P. S. Только заметьте, что проверяете в условии одни значения, а в журнал выводите другие.
В смысле другие? Я проверяю и вывожу CHART_FIXED_MIN и CHART_FIXED_MAX.
Как я понимаю, не только при старте терминала, а, именно, при старте терминала, например, 1-ый раз в день или в несколько дней т.к. если открыть терминал, и, после сразу же закрыть его и открыть снова, навряд ли, будет такой косяк.
Нет. Все зависит от того, какие события будут выполнены первыми: загрузка данных с сервера или создание чарта.
В смысле другие? Я проверяю и вывожу CHART_FIXED_MIN и CHART_FIXED_MAX.
Наверное, Вы отредактировали сообщение. Было CHART_PRICE_MAX и CHART_PRICE_MIN.