Коллеги, помогите пожалуйста разобраться с программным кодом.
Как можно нарисовать такие перпендикуляры от линии MA, скажем длиной 20pt, как на картинке отмечено красным?
Удобно было бы анализировать график, когда щелкнул мышкой на бар, и нарисовался в этом месте перпендикуляр, расчитанный от двух соседних точек на MA от этого бара.
а в чём проблема ? что именно конкретно не получается или не понятно
когда в точке dP/dT - тангенс наклона касательной, 1/(dP/dT) - тангенс наклона "перпеникуляра" (он-же катангенс, он же tg(90град - atan(dP/dT))
наклон касательной можно считать "по-простецки", как разницу MA соседних баров; можно по науке от формул самих МА, можно по графику через сплайны
Коллеги, помогите пожалуйста разобраться с программным кодом.
Как можно нарисовать такие перпендикуляры от линии MA, скажем длиной 20pt, как на картинке отмечено красным?
Удобно было бы анализировать график, когда щелкнул мышкой на бар, и нарисовался в этом месте перпендикуляр, расчитанный от двух соседних точек на MA от этого бара.
Поменять приращения времени (dx) и цены (dy) местами в пиксельном масштабе и все.
а в чём проблема ? что именно конкретно не получается или не понятно
когда в точке dP/dT - тангенс наклона касательной, 1/(dP/dT) - тангенс наклона "перпеникуляра" (он-же катангенс, он же tg(90град - atan(dP/dT))
наклон касательной можно считать "по-простецки", как разницу MA соседних баров; можно по науке от формул самих МА, можно по графику через сплайны
Не очень понятно, как это сделать в пиксельной масштабе.
Надеюсь, так будет понятно
#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(); } } //+------------------------------------------------------------------+
Не совсем уловил пользу от этого для анализа графика..
Если говорить про наклон МА, понятно)
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Коллеги, помогите пожалуйста разобраться с программным кодом.
Как можно нарисовать такие перпендикуляры от линии MA, скажем длиной 20pt, как на картинке отмечено красным?
Удобно было бы анализировать график, когда щелкнул мышкой на бар, и нарисовался в этом месте перпендикуляр, расчитанный от двух соседних точек на MA от этого бара.