Дня доброго!
Прошу написать советника для MT4, который переименовывает линии на графике.
При каждом тике советник находит все горизонтальные линии (OBJ_HLINE) на графике.
В случае, если в имени линии отсутствует текст, задаваемый в настройках, к примеру, «Old», то линия переименовывается.
Алгоритм переименования:
Если линии находятся ВЫШЕ текущей цены, то переименовываются в «hi_1», «hi_2», «hi_3» и так далее, в зависимости от удалённости от текущей цены.
Если линии находятся НИЖЕ текущей цены, то переименовываются в «lo_1», «lo_2», «lo_3» и так далее, в зависимости от удалённости от текущей цены.
Не переименовываются только линии, в названии которых присутствует текст, задаваемый в настройках пользователем, к примеру, «Old».
Также нужно, чтобы линии были подписаны такстовкой так, как это показано на скрине, чтобы не надо было лезть в свойства линии или наводить на неё курсор, дабы узнать её имя.
Комментарии (21)
вот такой алгоритм я представляю как сделать: над ценой пишем хай + пункты до текущей цены. также с лоу.
если у вас есть мысли как будем объяснять машине ваш алгоритм, поделитесь пожалуйста
35 AM2 Сообщений: 16285 - Андрей
Прекрасно! Если возможно такое реализовать — замечательно, очень даже подходит.
Но важно, чтобы не только над линией была надпись, а и сама линия аналогично именовалась.
C расстоянием до текущей цены действительно даже интересней выходит. Как-то я сам не подумал, спасибо.
Но хотел бы тогда внести небольшое изменение в техзадание.
Не надо переименовывать при каждом тике.
По сути-то нужно вообще выполнять функцию переименования только при добавлении/удалении объектов.
Надо считать объекты — линии, их количество через ObjectsTotal (Вызываем тотал и сверяем с глобальной), и, если оно изменится, то вызывать функцию переименования.
Т.е. пишем в глобальную переменную крайнее значение количества обьектов, при каждом тике вызываем тотал и сверяем с глобальной, и, если значение отличается, то переименовываем линии и обновляем значение глобальной переменной. Редактирован: 28 августа 2019, 07:55
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
35 AM2 Сообщений: 16285 - Андрей
Только обратите внимание на небольшое изменение в ТЗ. Редактирован: 27 августа 2019, 19:16
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
35 AM2 Сообщений: 16285 - Андрей
От слова «совсем».
Если есть хоть одна линия — терминал виснет при перетаскивании на график индикатора.
Если закинуть на график без линий, всё нормально, но если затем хоть одну линию добавить — терминал виснет.
Что-то где-то пошло не так…
Кроме того, я просил это в советнике сделать, не в индикаторе. Редактирован: 29 августа 2019, 13:17
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
35 AM2 Сообщений: 16285 - Андрей
Редактирован: 29 августа 2019, 18:04
35 AM2 Сообщений: 16285 - Андрей
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
переименовал все линии, линию с заданной надписью не тронул.
35 AM2 Сообщений: 16285 - Андрей
Советник перетянул на график, на котором уже были размещены 10 линий.
Четыре из них советник не переименовал.
У некоторых линий подписи при добавлении/удалении линий не удаляются, а новые ставятся поверх
Соответственно, после удаления линии остаётся какая-то текстовка.
Но это самое безобидное, ерунда.
Вот то, что не все линии переименовываются, это печально.
Редактирован: 29 августа 2019, 19:46
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
35 AM2 Сообщений: 16285 - Андрей
www.opentraders.ru/downloads/2399/
35 AM2 Сообщений: 16285 - Андрей
Накидал линий. Закинул советника на график.
Уж не знаю, в чём «прикол», но вот:
Редактирован: 29 августа 2019, 20:48
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
35 AM2 Сообщений: 16285 - Андрей
Попробую уже сам подшаманить.
Спасибо! И так накалил изрядно, благодарствую. Редактирован: 29 августа 2019, 21:18
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
35 AM2 Сообщений: 16285 - Андрей
Ладно, сам поковыряюсь уже.
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
И да, для бОльшей эффективности остановился на варианте, где при нажатии баттона сперва удаляются все без исключения OBJ_TEXT, а затем вызывается функция переименования/переподписывания.
Спасибо, Андрей!
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
23 igrun Сообщений: 1647 - igrun
24 ShamanHand Автор Сообщений: 1092 - Наношу добро, причиняю пользу.
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий