Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1039

 

Вот сижу рисую свою панельку для индикатора. Возник вопросик, как сделать её не прозрачной для других нижних графических объектов.

А то некоторые линии, выскакивают (мышка ловит) и пытаются изменить свою позицию.

В общем как сделать панель не видимой, для закрытых ею объектов?     



Рис 1

 
Aleksandr Tyunev:

Вот сижу рисую свою панельку для индикатора. Возник вопросик, как сделать её не прозрачной для других нижних графических объектов.

А то некоторые линии, выскакивают (мышка ловит) и пытаются изменить свою позицию.

В общем как сделать панель не видимой, для закрытых ею объектов?     



Я точно не уверен (так как судя по всему вы свою панель создаёте с помощью библиотеки) - если это возможно, нужно присвоить панели приоритет повыше на получение кликов мышки этой функцией

ObjectSetInteger(ChartID(),name,OBJPROP_ZORDER,z_order);
 
jaffer wilson:

Два заявления:

Печать: 22,33

И

Печать: 2.00000

Почему есть разные выводы? В C / C ++ вышеупомянутое утверждение работает отлично.

даже в С, форматка
"%.*lf"

немного не то что вы себе представили :-)

первый аргумент - точность (он там как звездочка), вы видимо подумали что наоборот, и получив "2.0000" удивляетесь

PS/ не учите программирование по MQL.

 
Alexandr Sokolov:

Я точно не уверен (так как судя по всему вы свою панель создаёте с помощью библиотеки) - если это возможно, нужно присвоить панели приоритет повыше на получение кликов мышки этой функцией

Не важно на базе библиотеки или просто объект = OBJ_RECTANGLE_LABEL. Прикрыть граф.объекты ниже уровня, не получается.

 
Aleksandr Tyunev:

Вот сижу рисую свою панельку для индикатора. Возник вопросик, как сделать её не прозрачной для других нижних графических объектов.

А то некоторые линии, выскакивают (мышка ловит) и пытаются изменить свою позицию.

В общем как сделать панель не видимой, для закрытых ею объектов?     

Помню, был такой момент, повозился чутка над этим))

Вариант готового:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {

if(id==CHARTEVENT_MOUSE_MOVE) { 
      
      int      x      =(int)lparam; // Координата по оси X
      int      y      =(int)dparam; // Координата по оси Y
      int      subwin =WRONG_VALUE; // Номер окна, в котором находится курсор
      datetime time   =NULL;        // Время соответствующее координате X
      double   level  =0.0;         // Уровень (цена) соответствующий координате Y
      string MState  =(string)sparam;  // Состояние левой кнопки мыши
      
      if (MState=="0") {
     //--- Получим местоположение курсора
      if(!::ChartXYToTimePrice(ChartID(),x,y,subwin,time,level))
         return;
     
     int obj_total=ObjectsTotal();
      for(int i=obj_total-1;i>=0;i--)
      {
      string name=ObjectName(i);
      // Для координат окна панели
      if (StringSubstr(name,5,10)=="ClientBack") {   // Ищем среди объектов больший (прямоугольник) с именем ClientBack (у меня так называется)
         
         int x_dist, x_size, y_dist, y_size;
         bool stop_selected_all;
         
         x_dist=ObjectGetInteger(ChartID(),name,OBJPROP_XDISTANCE,0);
         y_dist=ObjectGetInteger(ChartID(),name,OBJPROP_YDISTANCE,0);
         
         x_size=ObjectGetInteger(ChartID(),name,OBJPROP_XSIZE,0);
         y_size=ObjectGetInteger(ChartID(),name,OBJPROP_YSIZE,0);
         
         if (((x>x_dist-5)&&(x<x_dist+x_size+5))&&((y>y_dist-24)&&(y<y_dist+y_size))){
         ChartSetInteger(ChartID(),CHART_DRAG_TRADE_LEVELS,false);
         ChartSetInteger(ChartID(),CHART_MOUSE_SCROLL,false);
         //ObjectSetInteger(ChartID(),name,OBJPROP_ZORDER,1);
         //ObjectSetInteger(ChartID(),name,OBJPROP_BORDER_TYPE,BORDER_RAISED);
         if (stop_selected_all==false) {
            int obj_total_1=ObjectsTotal();
            for(int i=obj_total_1-1;i>=0;i--)
            {
            string name_1=ObjectName(i);
            ObjectSetInteger(ChartID(),name_1,OBJPROP_SELECTABLE,false);
            stop_selected_all=true;
            }
            }
         } else {
         ChartSetInteger(ChartID(),CHART_DRAG_TRADE_LEVELS,true);
         ChartSetInteger(ChartID(),CHART_MOUSE_SCROLL,true);
         //ObjectSetInteger(ChartID(),name,OBJPROP_ZORDER,0);
         //ObjectSetInteger(ChartID(),name,OBJPROP_BORDER_TYPE,BORDER_SUNKEN);
            int obj_total_1=ObjectsTotal();
            for(int i=obj_total_1-1;i>=0;i--)
            {
            string name_1=ObjectName(i);
            ObjectSetInteger(ChartID(),name_1,OBJPROP_SELECTABLE,true);
            stop_selected_all=false;
            }
         }
      }
      
      // End. Для координат окна панели
      }
      }
     
      return;
     }
  }

В общем, принцип такой.

 
Vyacheslav Nekipelov:

Помню, был такой момент, повозился чутка над этим))

Вариант готового:

В общем, принцип такой.

Спасибо! Принцип понятен, буду далее использовать! 

 
Справочник mql5 chm почему-то не корректно работает. Когда выбираю ту или иную страничку ничего не показывает. В чем может быть причина и как это исправить?
 
Yevhenii Levchenko:
Справочник mql5 chm почему-то не корректно работает. Когда выбираю ту или иную страничку ничего не показывает. В чем может быть причина и как это исправить?

Надо снять блокировку в свойствах файла.

 
Прошу помочь. Есть тиковый индикатор. Почему-то показывает значение в 4-х знаке, а нужно в 5-ти знаке. 
#property  indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
double x[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,x);
   SetIndexDrawBegin(0,0);
   SetIndexLabel(0,"x");
   SetIndexShift(0,0);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double b=MarketInfo(Symbol(),MODE_BID);
   x[0]=b;
   for(int j=ArraySize(x)-1;j>=1;j--){x[j]=x[j-1];}
   return(0);
  }
//+------------------------------------------------------------------+
Создание тиковых индикаторов
Создание тиковых индикаторов
  • www.mql5.com
При торговле хочется иметь как можно больше информации. Возникает желание видеть более детальную картину изменения цен. Для этого можно использовать тиковый график. Попробуем построить тиковый график средствами MQL5. В этой статье описывается создание двух индикаторов: строящего тиковый график цены и рисующего "тиковые свечи" - свечи...
Файлы:
ticks.png  4 kb
 
Oleg Bondarev:
Прошу помочь. Есть тиковый индикатор. Почему-то показывает значение 4-х знаке, а нужно в 5-ти знаке. 

IndicatorDigits(5)

Причина обращения: