Скачать MetaTrader 5

Что происходит с масштабированием двух индикаторов в одном окне?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Добавляй наш канал в друзья и следи за новостями!
Vasiliy Sokolov
21733
Vasiliy Sokolov 2015.10.16 17:26 

Попробовал накидать простой пример. Чертим ценовую линию в отдельном окне индикатора. Тип цены задается параметром ENUM_APPLIED_PRICE Applied:

//+------------------------------------------------------------------+
//|                                                  TestBuffers.mq5 |
//|                                 Copyright 2015, Vasiliy Sokolov. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Vasiliy Sokolov."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Line
#property indicator_label1  "Line"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         LineBuffer[];

input ENUM_APPLIED_PRICE Applied = PRICE_CLOSE;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,LineBuffer,INDICATOR_DATA);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   if(prev_calculated == 0)
   {
      switch(Applied)
      {
         case PRICE_CLOSE:
            CopyClose(Symbol(), Period(), 0, rates_total, LineBuffer);
            break;
         case PRICE_OPEN:
            CopyOpen(Symbol(), Period(), 0, rates_total, LineBuffer);
            break;
         case PRICE_HIGH:
            CopyHigh(Symbol(), Period(), 0, rates_total, LineBuffer);
            break;
          case PRICE_LOW:
            CopyLow(Symbol(), Period(), 0, rates_total, LineBuffer);
            break;
      }
      
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Пока индикатор один в подокне все хорошо. Однако если в это же подокно добавить второй экземпляр этого же индикатора, с другим типом цены, начинаются чудеса:

 

Линия Low(синяя) выше линии High (красная), чего естественно быть не должно. При этом сами значения индикаторов подписываеются в tooltip правильно. Я по всей видимости что-то проспал, но так и должно быть? Понятно, что каждый буфер живет в своем масштабе, но вот как привести их к единой шкале? Фиксировать масштаб принудительно или есть какая-то заветная функция?

Anatoli Kazharski
56894
Anatoli Kazharski 2015.10.16 17:34  
Vasiliy Sokolov:

Нужно наследовать шкалу.


Vasiliy Sokolov
21733
Vasiliy Sokolov 2015.10.16 17:46  
Anatoli Kazharski:

Нужно наследовать шкалу.

А программно можно установить этот флаг?

Anatoli Kazharski
56894
Anatoli Kazharski 2015.10.16 17:50  
Vasiliy Sokolov:

А программно можно установить этот флаг?

А вот программно похоже, что нет. Вот свойства, которые можно изменять: Свойства пользовательских индикаторов >>>
Vasiliy Sokolov
21733
Vasiliy Sokolov 2015.10.16 18:03  
Anatoli Kazharski:
А вот программно похоже, что нет. Вот свойства, которые можно изменять: Свойства пользовательских индикаторов >>>
Печально... Спасибо за ответы на мои ламерские вопросы. Надо было топик в ветке для новичков создать, "что бы не засорять форум":)
Anatoli Kazharski
56894
Anatoli Kazharski 2015.10.16 18:31  
Vasiliy Sokolov:
Печально... Спасибо за ответы на мои ламерские вопросы. Надо было топик в ветке для новичков создать, "что бы не засорять форум":)
Да ладно, у всех бывает. Особенно после того, как долго сосредотачивался на несоизмеримо более сложных задачах. ;)
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий