Как научить индикатор определять положение точки пересечения 2-х линий относительно линии 0 ??? - страница 2

 
Mathemat:

Да зачем аппроксимировать, если есть точное решение? Это ж не уравнение 20-й степени решать...

Это точное решение.
 
MetaDriver: Это точное решение.

Какое? среднее рихметическое четырех точек?

То, что ты написал, похоже на точное.

 
MetaDriver:
Это точное решение.

Только с мелкой ошибкой. :) Здесь:

отсюда искомый X = sign(((green1+black1)/2)*p + ((green2+black2)/2)*(1-p))

нужно множители переставить местами:

X = sign(((green1+black1)/2)*(1-p) + ((green2+black2)/2)*(p))

Остальное правильно и наглядно. Выражение можно немного упростить (для более быстроко вычисления) но это не суть.

 
Выражение для р меня напрягает. Не может быть там никаких модулей. Все тупо линейно.
 
Mathemat:
Выражение для р меня напрягает. Не может быть там никаких модулей. Все тупо линейно.

да без проблем. модули в данном случае приводят к тому что порядок слагаемых не важен.

можно без модулей : p = (green1-black1) / (black2-green2);

этот порядок всегда будет работать, при условии что заведомо известно что линии пересеклись между.

 
Эта штука равна -1.
 
Mathemat:
Эта штука равна -1.
поправил. издержки копипаста. :)
 
MetaDriver:

да без проблем. модули в данном случае приводят к тому что порядок слагаемых не важен.

можно без модулей : p = (green1-black1) / (black2-green2);

этот порядок всегда будет работать, при условии что заведомо известно что линии пересеклись между.

Чё-то под вечер мысль мелькнула - неточная формула опять.

На самом деле p = (green1-black1) / ((black2-green2)+ (green1-black1)); // т.е. p = ∆1 / (∆1+∆2)

И далее X = sign(((green1+black1)/2)*(1-p) + ((green2+black2)/2)*(p));

Теперь всё точно.

 
MetaDriver: Чё-то под вечер мысль мелькнула - неточная формула опять.

Ну да, вот теперь p у тебя точно такой же, как у меня k. Ну и зачем ты какой-то новый "серединный" отрезок создавал?

P.S. Я тут нарыл урководство по OpenCL. Замучился наталкиваться на битые ссылки, но все-таки качнул.

Но на аглицком. Именно урководство, а не спецификацию. Надо?

 
Mathemat:
 

Ну да, вот теперь p у тебя точно такой же, как у меня k. Ну и зачем ты какой-то новый "серединный" отрезок создавал?

Ты праф это лишнее.  Можно по любой из линий, они все делятся пропорционально.  

Напр: sign(green1*(1-p) + green2*p);

P.S. Я тут нарыл урководство по OpenCL. Замучился наталкиваться на битые ссылки, но все-таки качнул.

Но на аглицком. Именно урководство, а не спецификацию. Надо?

Надо, давай выкладывай в ветку  на  mql5.   Или в личку, если не хошь распространять.