Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
любым удобным способом
Как видно, ничего сложного нет. Надо только немножечко подумать.
Вот с таким развернутым ответом, думаю ТС уже справится сам с написанием кода.
Многие тут уже забыли школьные задачки, ибо не могли их осмыслить смысл в школе.
Выходит что:
Далее через ObjectGetValueByShift("Line1",a++) и ObjectGetValueByShift("Value",a++) и ObjectGetValueByShift("Line2",a++) ищем пересечение
Верно ли я понимаю ?Для решения поставленной задачи надо:
1. построить перпендикуляр к заданным параллельным линиям
2. определить точки пересечения перпендикуляра с заданными линиями
3. вычислить расстояние между точками пересечения
Наглядно в картинках:
(различные линии и расстояния между ними)
.............................................................................
.............................................................................
.............................................................................
.............................................................................
Не убедительно
Не убедительно
Открывай учебники и убеждайся
Да
к сожалению я не математик (синий угол = 90 - угол линии
переводим угол в радианы
красный противолежащий катет = зеленая гипотенуза * синус (синий угол)
Гипотенузу мы уже находили в этой ветке, пересекая обе линии вертикальной
Если угол линии равен 90 или 0, то считаем расстояние по другому, то есть пересекая параллельные линии по горизонтали или по вертикали.
А поГуглить?
синий угол = 90 - угол линии
переводим угол в радианы
красный противолежащий катет = зеленая гипотенуза * синус (синий угол)
Гипотенузу мы уже находили в этой ветке, пересекая обе линии вертикальной
Если угол линии равен 90 или 0, то считаем расстояние по другому, то есть пересекая параллельные линии по горизонтали или по вертикали.
Хммм...
Почему то не работает
Вроде бы все просто ... но не выходит получить желаемый результат
Да, все просто, за исключением, что ваша задача не решаемая.. ))
Во первых, о функции ObjectGetDouble(0,"Line1",OBJPROP_ANGLE) забудьте.. она будет возвращать 0 всегда, так как для трендовой линии она не применима. Она нужна, в частности, для "угловой" трендовой линии, которая не зависит от масштаба графика НО она не зависит и от цен баров.. То есть при смене масштаба ее угол не поменяется, но сама линия улетит от баров..
Но это не самая большая проблема.. Вся соль в том, что вы хотите найти размер перпендикуляра между 2мя параллельными трендовыми линиями, попробуйте на графике такой перпендикуляр изобразить.. А потом измените масштаб графика.. перпендикуляр станет не перпендикулярным.. )))) То есть проблема именно в том, что вы считаете перпендикуляром (зависимость от масштаба и как ВЫ его видите) и перпендикуляром математическим.
Перпендикуляр на ценовом масштабируемом графике есть оптическая иллюзия.
Пользуясь геометрией, такая задача в чистом виде решается на раз-два.. НО математический результат вычислений никогда не будет совпадать с видимым на графике.. А вам нужно именно совпадение, поэтому задача не решаемая. Просто упростите свои требования, ищите не перпендикуляр, а просто расстояние между 2мя линиями на одной и той же временной точке..
У меня нет слов
Это уже из серии - знаю все буквы, не могу прочитать слово
Давайте, давайте, не опускайте руки, изучайте MQL, осталось дело за малым