Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1194
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за совет, я об этих функциях знаю.
А вы не знаете почему очень многие и вы в том числе отвечают тем кто в mql сам плавает как топор. А советы знающих игнорируют? В вашем случае вот этот совет:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Artyom Trishkin, 2020.06.29 00:03
Здравствуйте.Начните с отслеживания состояния графика в OnChartEvent() https://www.mql5.com/ru/docs/event_handlers/onchartevent
Есть несколько событий, которые вам потребуются:
CHARTEVENT_OBJECT_CREATE Создание графического объекта
CHARTEVENT_OBJECT_CHANGE Изменение свойств графического объекта через диалог свойств
CHARTEVENT_OBJECT_DELETE Удаление графического объекта
https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents
Выведите все параметры обработчика OnChartEvent() в журнал и поглядите их значения при добавлении/изменении/удалении графических объектов. Это даст вам направление куда двигаться.
Спасибо за совет, я об этих функциях знаю.
Но как с их помощью реализовать автоматическое нахождение советником объекта на чарте и считывание его параметров, если априори не известно его имя?
Ведь при нанесении объекта на график мышью имя дает система.
Естественно, не сложно организовать ручной ввод в советник всех необходимых данных объекта из таблицы его свойств, но тогда при чем здесь автоматизация?
А вот как программно передать в советник имя объекта, после чего все указанные вами функции можно задействовать, мне пока не понятно...
Как выше отметили, работайте с событиями чарта:
Здравствуйте.
Начните с отслеживания состояния графика в OnChartEvent() https://www.mql5.com/ru/docs/event_handlers/onchartevent
Есть несколько событий, которые вам потребуются:
CHARTEVENT_OBJECT_CREATE Создание графического объекта
CHARTEVENT_OBJECT_CHANGE Изменение свойств графического объекта через диалог свойств
CHARTEVENT_OBJECT_DELETE Удаление графического объекта
https://www.mql5.com/ru/docs/constants/chartconstants/enum_chartevents
Выведите все параметры обработчика OnChartEvent() в журнал и поглядите их значения при добавлении/изменении/удалении графических объектов. Это даст вам направление куда двигаться.
Спасибо большое, уже воспользовался вашим советом!
Найти и вывести в журнал объекты заданного типа с их координатами можно так:
Можно сохранить любые данные в файл. А в эксперте сделать загрузчик, который будет добавлять соответствующие объекты, а потом загружать в них данные из файла. Но Вы хотя бы набросайте исходник под Вашу конкретную задачу и опубликуйте его здесь.
Как выше отметили, работайте с событиями чарта:
Михаил, Ваша и @Artyom Trishkin помощь оказалась очень кстати!
Теперь осталось разобраться, как найти точку пересечения графика цены и найденного объекта, в данном случае, линии тренда.
Алгоритм я себе представляю так:
1. По считанным координатам линии тренда вычисляется коэффициент приращения тренда в расчете на 1 бар выбранного ТФ.
2. Вычисляется ценовая координата линии тренда на текущем баре и в течение выбранного ТФ отслеживается факт пересечения графиком этой точки.
3. Если факт имеет место, переходим к обработке этого события, например, открываем ордер. Если нет, процедура повторяется для следующего бара.
Но, может быть, в МТ4(5), в силу специфики этой системы, все решается гораздо проще?
А вы не знаете почему очень многие и вы в том числе отвечают тем кто в mql сам плавает как топор. А советы знающих игнорируют? В вашем случае вот этот совет:
Уважаемый Алексей, вы совершенно правы относительно меня в части знания MQL. Но ошибаетесь в том, что я не прислушиваюсь к советам знающих людей, потому что первым делом я обратился в личку к человеку, которого считаю одним из выдающихся профессионалов MQL и которого и вы прекрасно знаете - это @Artyom Trishkin.
Именно его советы позволили мне сразу понять, как решить свою проблему, и открыли глаза, куда двигаться дальше. А @Mihail Matkovskij еще больше упростил мне жизнь!
Михаил, Ваша и @Artyom Trishkin помощь оказалась очень кстати!
Теперь осталось разобраться, как найти точку пересечения графика цены и найденного объекта, в данном случае, линии тренда.
Алгоритм я себе представляю так:
1. По считанным координатам линии тренда вычисляется коэффициент приращения тренда в расчете на 1 бар выбранного ТФ.
2. Вычисляется ценовая координата линии тренда на текущем баре и в течение выбранного ТФ отслеживается факт пересечения графиком этой точки.
3. Если факт имеет место, переходим к обработке этого события, например, открываем ордер. Если нет, процедура повторяется для следующего бара.
Но, может быть, в МТ4(5), в силу специфики этой системы, все решается гораздо проще?
Как я уже говорил выше, набросайте исходник, чтобы было от чего отталкиваться. Тем более, кое-какие знания о том как получить данные объекта на графике у Вас уже есть. Делать за Вас всё с нуля никому не охота. А так, то чего не хватает для работы эксперта можно будет дополнить...
Михаил, Ваша и @Artyom Trishkin помощь оказалась очень кстати!
Теперь осталось разобраться, как найти точку пересечения графика цены и найденного объекта, в данном случае, линии тренда.
Алгоритм я себе представляю так:
1. По считанным координатам линии тренда вычисляется коэффициент приращения тренда в расчете на 1 бар выбранного ТФ.
2. Вычисляется ценовая координата линии тренда на текущем баре и в течение выбранного ТФ отслеживается факт пересечения графиком этой точки.
3. Если факт имеет место, переходим к обработке этого события, например, открываем ордер. Если нет, процедура повторяется для следующего бара.
Но, может быть, в МТ4(5), в силу специфики этой системы, все решается гораздо проще?
Не очень понятно что хотите найти. Точку пересечения трендовой линии ценой на каком-либо баре? Для этого есть функции получения значения линии на баре. Но я бы использовал уравнение прямой:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL5 MT5 MetaTrader 5
Artyom Trishkin, 2020.05.02 12:27
Используйте уравнение прямой:
Указываете номер и цену бара точки слева, указываете номер и цену бара точки справа (по этим точкам строится виртуальная линия) и указываете искомый бар.
Функция вернёт цену искомого бара.
..... Для этого есть функции получения значения линии на баре. Но я бы использовал уравнение прямой:
Артём, а вот тут поподробнее, пожалуйста.
Я или раньше не очень внимателен был, или документацию подправили... Не знаю.
Но я всегда считал, что ObjectGetDouble возвращал цену линии на конкретном баре (я о цене именно). А тут решил маленький скриптик чиркануть для проверки, и что я увидел?
1. Нет в параметрах номера бара, на котором нужно считать значение.
2. Индентификатор свойства:
OBJPROP_PRICE
Координата цены
double модификатор=номер точки привязки
это только точка привязки!
Да, по большому счёту, если я в коде рисую эту линию, то эти точки у меня и так уже есть! Нафига мне их узнавать? Да и вообще, какой в этом смысл?
А как взять значение цены этой линии в другом месте?
Получается, что это
prop_modifier
[in] Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.
тоже вооще никакого смысла не несёт? Это что, ищем точки привязки ЛЮБОЙ линии веера? Бред. Пардон.
Артём, а вот тут поподробнее, пожалуйста.
Я или раньше не очень внимателен был, или документацию подправили... Не знаю.
Но я всегда считал, что ObjectGetDouble возвращал цену линии на конкретном баре (я о цене именно). А тут решил маленький скриптик чиркануть для проверки, и что я увидел?
1. Нет в параметрах номера бара, на котором нужно считать значение.
2. Индентификатор свойства:
OBJPROP_PRICE
Координата цены
double модификатор=номер точки привязки
это только точка привязки!
Да, по большому счёту, если я в коде рисую эту линию, то эти точки у меня и так уже есть! Нафига мне их узнавать? Да и вообще, какой в этом смысл?
А как взять значение цены этой линии в другом месте?
Получается, что это
prop_modifier
[in] Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.
тоже вооще никакого смысла не несёт? Это что, ищем точки привязки ЛЮБОЙ линии веера? Бред. Пардон.
С такими объектами мало работал. Вот эта функция что вернёт для трендовой по указанному времени бара? Мне нет времени проверять. Пусть и маленьким скриптом...
ObjectGetValueByTime()