Построение перпендикуляра к линии скользяшей средней

 

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

Как можно нарисовать такие перпендикуляры от линии MA, скажем длиной 20pt, как на картинке отмечено красным?

Удобно было бы анализировать график, когда щелкнул мышкой на бар, и нарисовался в этом месте перпендикуляр, расчитанный от двух соседних точек на MA от этого бара. 



 
Pavel Valentov:

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

Как можно нарисовать такие перпендикуляры от линии MA, скажем длиной 20pt, как на картинке отмечено красным?

Удобно было бы анализировать график, когда щелкнул мышкой на бар, и нарисовался в этом месте перпендикуляр, расчитанный от двух соседних точек на MA от этого бара. 



а в чём проблема ? что именно конкретно не получается или не понятно

когда в точке dP/dT - тангенс наклона касательной, 1/(dP/dT) - тангенс наклона "перпеникуляра" (он-же катангенс, он же tg(90град - atan(dP/dT))

наклон касательной можно считать "по-простецки", как разницу MA соседних баров; можно по науке от формул самих МА, можно по графику через сплайны

 
Pavel Valentov:

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

Как можно нарисовать такие перпендикуляры от линии MA, скажем длиной 20pt, как на картинке отмечено красным?

Удобно было бы анализировать график, когда щелкнул мышкой на бар, и нарисовался в этом месте перпендикуляр, расчитанный от двух соседних точек на MA от этого бара. 

Поменять приращения времени (dx) и цены (dy) местами в пиксельном масштабе и все. 

 
Nikolai Semko #:

Поменять приращения времени (dx) и цены (dy) местами в пиксельном масштабе и все. 

Не очень понятно, как это сделать в пиксельной масштабе.
И ещё не могу сообразить, как нарисовать отрезок длиной 20pt.
 
Maxim Kuznetsov #:

а в чём проблема ? что именно конкретно не получается или не понятно

когда в точке dP/dT - тангенс наклона касательной, 1/(dP/dT) - тангенс наклона "перпеникуляра" (он-же катангенс, он же tg(90град - atan(dP/dT))

наклон касательной можно считать "по-простецки", как разницу MA соседних баров; можно по науке от формул самих МА, можно по графику через сплайны


1. Подскажите подробнее плиз, как через сплайны посчитать наклон?
2. Не могу сообразить, как нарисовать отрезок длиной 20pt.
3. От каких величин считать тангенсы? У нас р одной оси идёт время, по другой пункты... Запутался
 
Pavel Valentov #:
И ещё не могу сообразить, как нарисовать отрезок длиной 20pt.

теорема Пифагора 

20 px - гипотенуза

 
Pavel Valentov #:
Не очень понятно, как это сделать в пиксельной масштабе.
И ещё не могу сообразить, как нарисовать отрезок длиной 20pt.

Надеюсь, так будет понятно

#property indicator_chart_window
#include <Canvas\iCanvas_CB.mqh> //https://www.mql5.com/ru/code/22164
input int MA_per = 100;
input double L = 100; // длинна перпендикуляра в пикселях
int handle;
int OnInit() {
   handle = iMA(NULL, 0, MA_per, 0,MODE_SMA, PRICE_CLOSE);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[]) {
   return(rates_total);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam) {
   if (id==CHARTEVENT_CHART_CHANGE || id==CHARTEVENT_MOUSE_MOVE) {
      double pr[];
      CopyBuffer(handle,0,int(_MouseBar)-1,2,pr);
      double X = (double)_MouseX;
      double Y0 = _Y(pr[0]);
      double Y1 = _Y(pr[1]);
      double dx = (double)W.dx_pix;
      double dy = Y0-Y1;
      double k = L/sqrt(dx*dx + dy*dy);
      Canvas.Erase(0x00FFFFFF);
      Canvas.LineD(X-k*dy, Y0-k*dx, X + k*dy, Y0 + k*dx, 0xAAAA00AA );
      Canvas.Update();
   }
}
//+------------------------------------------------------------------+



Файлы:
 

Не совсем уловил пользу от этого для анализа графика..

Если говорить про наклон МА, понятно)

 
Anton Iudakov #:

Не совсем уловил пользу от этого для анализа графика..

Если говорить про наклон МА, понятно)

Ну если добавить ещё перпендикуляр к оси времени, будет нагляднее видно, как разворачивается тренд.
 
Pavel Valentov #:
Ну если добавить ещё перпендикуляр к оси времени, будет нагляднее видно, как разворачивается тренд.
Так это касательная
 
Pavel Valentov #:
Ну если добавить ещё перпендикуляр к оси времени, будет нагляднее видно, как разворачивается тренд.

А по скользящей что, не видно? Или по тем же свечам...
Это самая странная вещь, которую встречал на этом форуме))