Может быть у кого-нибудь есть пример кода, который рисует какие-нибудь значки, например, стрелки на графике индикатора, при пересечении линий, если их две, или при пересечении "0" линии, или при любом другом критерии? Желательно, у верхней и нижней границы самомасштабирующегося индикаторного окна.
Вот из моего индюка, может, поможет. Код для МТ4, выкладываю, как есть. Там еще работа с логами.
Вот из моего индюка, может, поможет. Код для МТ4, выкладываю, как есть. Там еще работа с логами.
Спасибо Вам Алексей, что откликнулись!
В Ваше примере это через объекты. Интересно, а можно это делать через массивы, чтобы при изменении масштаба, они всегда находились у верхней и нижней границ окна ?
Leo59: Alexey Volchanskiy: Спасибо Вам Алексей, что откликнулись!
В Ваше примере это через объекты. Интересно, а можно это делать через массивы, чтобы при изменении масштаба, они всегда находились у верхней и нижней границ окна ?
Насчет массивов не понял. Смотрите комменты, я добавил
ObjectCreate("arr0"+ArrowIdx, OBJ_TEXT, 0, dt, FastBuffer[i]+dprice);
// "arr0"+ArrowIdx - формируем уникальное имя стрелки// FastBuffer[i]+dprice - тут формируется цена, на которой будет рисоваться стрелка
ObjectSetText("arr0"+ArrowIdx, sup, ArrowFontSize, "Wingdings", ColorArrowDown);
ArrowIdx++; // для каждой стрелки нужно уникальное имя
Далее, если надо рисовать на верхней границе, делаем так
объекты нужно будет принудительно перерисовывать на заданном расстоянии от границ окна
Старые объекты остануться на своих местах - на старых ценах. Если надо их перемещать к границам, надо перерисовывать ручками. Просто я вашей задачи полностью не знаю.
Отследить изменение окна можно через OnChartEvent.
Старые объекты остануться на своих местах - на старых ценах. Если надо их перемещать к границам, надо перерисовывать ручками. Просто я вашей задачи полностью не знаю.
Отследить изменение окна можно через OnChartEvent.
На первый взгляд, задача простая, как три копейки. НО!.... Есть линия любого осциллятора в индикаторном окне, которая болтается относительно "0" с различной амплитудой. Собственно, задача: - при пересечении "0" снизу вверх, нарисовать стрелку у нижней границы индикаторного окна, - при пересечении "0" сверху вниз, нарисовать стрелку у верхней границы индикаторного окна, - при самомасштабировании графика осциллятора в индикаторном окне, стрелки должны автоматически оставаться у своих границ индикаторного окна. Т.е. прокручивая чарт по истории взад-вперёд или меняя его горизонтальный масштаб, стрелки всё время у своих границ индикаторного окна.
Leo59: На первый взгляд, задача простая, как три копейки. НО!.... Есть линия любого осциллятора в индикаторном окне, которая болтается относительно "0" с различной амплитудой. Собственно, задача: - при пересечении "0" снизу вверх, нарисовать стрелку у нижней границы индикаторного окна, - при пересечении "0" сверху вниз, нарисовать стрелку у верхней границы индикаторного окна, - при самомасштабировании графика осциллятора в индикаторном окне, стрелки должны автоматически оставаться у своих границ индикаторного окна. Т.е. прокручивая чарт по истории взад-вперёд или меняя его горизонтальный масштаб, стрелки всё время у своих границ индикаторного окна.
Задача и есть довольно простая.
При изменении или прокрутке окна вызывается OnChartEvent, в ней передается событие без параметров:
Событие изменения графика CHARTEVENT_CHART_CHANGE
Если такое событие пришло, определяем левый и правый видимый бар и в этих пределах в индикаторном окне находим все стрелки. Если нашлась - передвигаем ее к нужной границе. Стрелкам при создании давать имена типа UpArrow***** и DownArrow*****, чтобы не парится с анализом. Потом на всякий вызвать ChartRedraw.
При изменении или прокрутке окна вызывается OnChartEvent, в ней передается событие без параметров:
Событие изменения графика CHARTEVENT_CHART_CHANGE
Если такое событие пришло, определяем левый и правый видимый бар и в этих пределах в индикаторном окне находим все стрелки. Если нашлась - передвигаем ее к нужной границе. Стрелкам при создании давать имена типа UpArrow***** и DownArrow*****, чтобы не парится с анализом. Потом на всякий вызвать ChartRedraw.
Алексей, а Вы сами, не пробовали прикинуть, как эта "довольно простая" задача будет работать? Вы программист профессионал с системным образованием, а я - самоучка на изучении, применении и модификации работающих алгоритмов. Мне это не одолеть, поэтому и вопросы задаю. Две недели уже парюсь над этой проблемой. Помогите пожалуйста, если это Вам не очень в тягость.
Leo59: Алексей, а Вы сами, не пробовали прикинуть, как эта "довольно простая" задача будет работать? Вы программист профессионал с системным образованием, а я - самоучка на изучении, применении и модификации работающих алгоритмов. Мне это не одолеть, поэтому и вопросы задаю. Две недели уже парюсь над этой проблемой. Помогите пожалуйста, если это Вам не очень в тягость.
Я по образованию радиоконструктор )) То есть меня учили даже не электронике (ее был самый минимум) и не программированию, а как спроектировать ящик для радиоаппаратуры )) Но я в свое время был неплохим электронщиком, сам научился. Потом также самоучкой освоил программирование с нуля. Так что корки о высшем образование именно в нашей области не нужны )) Нужно желание и труд.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Так это и вышло после "Загрузить" ...
Здравствуйте!
Может быть у кого-нибудь есть пример кода, который рисует какие-нибудь значки, например, стрелки на графике индикатора, при пересечении линий, если их две, или при пересечении "0" линии, или при любом другом критерии? Желательно, у верхней и нижней границы самомасштабирующегося индикаторного окна.
Вот из моего индюка, может, поможет. Код для МТ4, выкладываю, как есть. Там еще работа с логами.
Вот из моего индюка, может, поможет. Код для МТ4, выкладываю, как есть. Там еще работа с логами.
В Ваше примере это через объекты. Интересно, а можно это делать через массивы, чтобы при изменении масштаба, они всегда находились у верхней и нижней границ окна ?
Alexey Volchanskiy:
Спасибо Вам Алексей, что откликнулись!
В Ваше примере это через объекты. Интересно, а можно это делать через массивы, чтобы при изменении масштаба, они всегда находились у верхней и нижней границ окна ?
Насчет массивов не понял. Смотрите комменты, я добавил
Далее, если надо рисовать на верхней границе, делаем так
И почитайте справку в редакторе, тут подробно расписано с примерами
Справочник MQL4 / Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Насчет массивов не понял. Смотрите комменты, я добавил
Далее, если надо рисовать на верхней границе, делаем так
И почитайте справку в редакторе, тут подробно расписано с примерами
Справочник MQL4 / Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
С изменением
объекты нужно будет принудительно перерисовывать на заданном расстоянии от границ окна
С изменением
объекты нужно будет принудительно перерисовывать на заданном расстоянии от границ окна
Старые объекты остануться на своих местах - на старых ценах. Если надо их перемещать к границам, надо перерисовывать ручками. Просто я вашей задачи полностью не знаю.
Отследить изменение окна можно через OnChartEvent.
Старые объекты остануться на своих местах - на старых ценах. Если надо их перемещать к границам, надо перерисовывать ручками. Просто я вашей задачи полностью не знаю.
Отследить изменение окна можно через OnChartEvent.
Есть линия любого осциллятора в индикаторном окне, которая болтается относительно "0" с различной амплитудой.
Собственно, задача:
- при пересечении "0" снизу вверх, нарисовать стрелку у нижней границы индикаторного окна,
- при пересечении "0" сверху вниз, нарисовать стрелку у верхней границы индикаторного окна,
- при самомасштабировании графика осциллятора в индикаторном окне, стрелки должны автоматически оставаться у своих границ индикаторного окна.
Т.е. прокручивая чарт по истории взад-вперёд или меняя его горизонтальный масштаб, стрелки всё время у своих границ индикаторного окна.
На первый взгляд, задача простая, как три копейки. НО!....
Есть линия любого осциллятора в индикаторном окне, которая болтается относительно "0" с различной амплитудой.
Собственно, задача:
- при пересечении "0" снизу вверх, нарисовать стрелку у нижней границы индикаторного окна,
- при пересечении "0" сверху вниз, нарисовать стрелку у верхней границы индикаторного окна,
- при самомасштабировании графика осциллятора в индикаторном окне, стрелки должны автоматически оставаться у своих границ индикаторного окна.
Т.е. прокручивая чарт по истории взад-вперёд или меняя его горизонтальный масштаб, стрелки всё время у своих границ индикаторного окна.
Задача и есть довольно простая.
При изменении или прокрутке окна вызывается OnChartEvent, в ней передается событие без параметров:
Событие изменения графика CHARTEVENT_CHART_CHANGE
Если такое событие пришло, определяем левый и правый видимый бар и в этих пределах в индикаторном окне находим все стрелки. Если нашлась - передвигаем ее к нужной границе. Стрелкам при создании давать имена типа UpArrow***** и DownArrow*****, чтобы не парится с анализом. Потом на всякий вызвать ChartRedraw.
Задача и есть довольно простая.
При изменении или прокрутке окна вызывается OnChartEvent, в ней передается событие без параметров:
Событие изменения графика CHARTEVENT_CHART_CHANGE
Если такое событие пришло, определяем левый и правый видимый бар и в этих пределах в индикаторном окне находим все стрелки. Если нашлась - передвигаем ее к нужной границе. Стрелкам при создании давать имена типа UpArrow***** и DownArrow*****, чтобы не парится с анализом. Потом на всякий вызвать ChartRedraw.
Алексей, а Вы сами, не пробовали прикинуть, как эта "довольно простая" задача будет работать? Вы программист профессионал с системным образованием, а я - самоучка на изучении, применении и модификации работающих алгоритмов. Мне это не одолеть, поэтому и вопросы задаю. Две недели уже парюсь над этой проблемой. Помогите пожалуйста, если это Вам не очень в тягость.
Я по образованию радиоконструктор )) То есть меня учили даже не электронике (ее был самый минимум) и не программированию, а как спроектировать ящик для радиоаппаратуры )) Но я в свое время был неплохим электронщиком, сам научился. Потом также самоучкой освоил программирование с нуля. Так что корки о высшем образование именно в нашей области не нужны )) Нужно желание и труд.
По теме. Пишем для 4-ки или 5-ки?