Определение угла.

 

Здравствуйте!

Нарисовал программно OBJ_TREND_LINE по двум координатам. Теперь хочу угол определить.

int DrawLines()
{
   if (bIsLinesDone == false)
         {
                ObjectCreate("USD_CUSTOM_LINE", OBJ_TREND, WindowFind(name), iTime(NULL, 0, iLineLength), iUSDBuffer[iLineLength], iTime(NULL, 0, 0), iUSDBuffer[0], 0, 0);
                ObjectSet("USD_CUSTOM_LINE", OBJPROP_RAY, false);
                dTriangleH = MathAbs(iUSDBuffer[iLineLength] - iUSDBuffer[0]);
                Print("Height = ", dTriangleH);
                double temp = iLineLength; //количество баров, на которое растягивается линия
                Print("Width = ", temp/100);
                //Print("(iTime(NULL, 0, iLineLength) = ", iTime(NULL, 0, iLineLength));
                //Print("(iTime(NULL, 0, 0) = ", iTime(NULL, 0, 0));
                dAngle = MathArctan(dTriangleH / (temp/100)) * 180 / 3.1459;
                ObjectSetText("USD_CUSTOM_LINE", DoubleToStr(dAngle,3), 9, "Arial", LimeGreen);
                bIsLinesDone = true;
         }
         return(1);
}

1. Вычисляет угол, но не тот, который я умозрительно вижу на графике. Понял, что проблема в масштабе и координатах. Но как получить 2 координаты трендлайна не по дате/значению, а по x/y отн-но границ окна индикатора?

 

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

Точнее сказать получится, но выйдет чушь, т.к. изменение ТФ, изменение масштаба отображения, наличие/отсутствие некоторых свечей будет вносить дикую погрешность решительно не совместимую с какими-либо серьезными вычислениями.

 
Да уж придется. Вот блин заморочка то.(
 
Al_Key, используйте теорему тангенсов. Катеты - пипсы и бары. И будет вам счастье)
 
Советую лучше скорость, хоть какая то польза будет..... Почти тот же угол, только правильнее....
 
Shuba:
Al_Key, используйте теорему тангенсов. Катеты - пипсы и бары. И будет вам счастье)

А Вы код смотрели? Там через арктангенс получаем угол через пипсы и бары.


А мне нужен просто УГОЛ той линии которая на графике, причем угол, который отн-но точки отчета - глобальных координат окна. Т.е. фактически угол нарисованной линии, без привязки к барам и графикам.

 
Al_Key:

А Вы код смотрели? Там через арктангенс получаем угол через пипсы и бары.


А мне нужен просто УГОЛ той линии которая на графике, причем угол, который отн-но точки отчета - глобальных координат окна. Т.е. фактически угол нарисованной линии, без привязки к барам и графикам.


  OBJ_TRENDBYANGLE

  Но угол будет плавать в зависимости от масштаба. 

 
FAQ:


  OBJ_TRENDBYANGLE

  Но угол будет плавать в зависимости от масштаба. 


Это обратная функция...

К слову видел я один говнокод, по другому не назовешь - прочерчивалась линия циклом через определенный шаг и та, которая приращением была тождественна нарисованной и давала нужный угол.

Архиэпический код - жрал время и ресурс, но работал... )))

 
Что значит обратная ? Рисуете ее как трендовую, а потом запрашиваете угол - получаете его значение.
 
ktest0:


Это обратная функция...

К слову видел я один говнокод, по другому не назовешь - прочерчивалась линия циклом через определенный шаг и та, которая приращением была тождественна нарисованной и давала нужный угол.

Архиэпический код - жрал время и ресурс, но работал... )))

Как ни крути, лучше отношения пипсов к барам не придумаешь!
 
FAQ:
Что значит обратная ? Рисуете ее как трендовую, а потом запрашиваете угол - получаете его значение.

Зависимость от масштаба меня устраивает. Но я в хелпе читал, что эта функция требует 1 координату угол при построении, поэтому ее отбросил. Неужто там ошибка?
Причина обращения: