Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1039

 

Ich zeichne meine Anzeigetafel. Ich habe eine Frage, wie man es für andere, niedrigere grafische Objekte undurchsichtig machen kann.

Einige Linien springen heraus (die Maus bleibt hängen) und versuchen, ihre Position zu ändern.

Wie kann man generell dafür sorgen, dass das Panel für die Objekte, die es abdeckt, nicht sichtbar ist?



Abb. 1

 
Aleksandr Tyunev:

Ich zeichne meine Anzeigetafel. Ich habe eine Frage, wie man es für andere, niedrigere grafische Objekte undurchsichtig machen kann.

Einige Linien springen heraus (die Maus bleibt hängen) und versuchen, ihre Position zu ändern.

Wie kann man generell dafür sorgen, dass das Panel für die Objekte, die es abdeckt, nicht sichtbar ist?



Ich bin mir nicht ganz sicher (da es so aussieht, als ob Sie Ihr Panel mit der Bibliothek erstellen) - wenn möglich, sollten Sie dem Panel mit dieser Funktion eine höhere Priorität beim Empfang von Mausklicks geben

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

Zwei Aussagen:

Druck: 22,33

И

Druck: 2.00000

Warum gibt es unterschiedliche Ergebnisse? In C / C ++ funktioniert die obige Anweisung einwandfrei.

auch in C, Formatierung
"%.*lf"

etwas anders, als Sie es sich vorgestellt haben :-)

das erste Argument ist die Genauigkeit (es ist wie ein Sternchen), Sie dachten wahrscheinlich das Gegenteil und sind überrascht, wenn Sie "2.0000" erhalten

PS/ lernen Sie nicht die MQL-Programmierung.

 
Alexandr Sokolov:

Ich bin mir nicht ganz sicher (da es so aussieht, als ob Sie Ihr Panel mit der Bibliothek erstellen) - wenn es möglich ist, müssen Sie dem Panel mit dieser Funktion eine höhere Priorität beim Empfang von Mausklicks geben

Es spielt keine Rolle, ob es sich um eine Bibliothek oder nur um ein Objekt = OBJ_RECTANGLE_LABEL handelt. Das Abdecken von grafischen Objekten unterhalb des Niveaus funktioniert nicht.

 
Aleksandr Tyunev:

Ich zeichne meine Anzeigetafel. Ich habe eine Frage, wie man es für andere, niedrigere grafische Objekte undurchsichtig machen kann.

Einige Linien springen heraus (die Maus bleibt hängen) und versuchen, ihre Position zu ändern.

Wie kann man generell erreichen, dass ein Panel für die von ihm geschlossenen Objekte nicht sichtbar ist?

Ich erinnere mich, dass es eine Zeit gab, in der ich ein bisschen daran herumgeschraubt habe)))

Option bereit:

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;
     }
  }

Im Allgemeinen gilt der folgende Grundsatz.

 
Vyacheslav Nekipelov:

Ich erinnere mich, dass es so einen Moment gab, ich habe ein bisschen daran herumgefummelt))

Eine Variante der fertigen Version:

Das Prinzip lautet im Wesentlichen wie folgt.

Ich danke Ihnen! Das Prinzip ist klar, ich werde es weiter anwenden!

 
Das mql5 chm-Handbuch funktioniert aus irgendeinem Grund nicht richtig. Wenn ich diese oder jene Seite auswähle, wird nichts angezeigt. Was könnte der Grund dafür sein und wie kann man ihn beheben?
 
Yevhenii Levchenko:
Das mql5 chm-Handbuch funktioniert aus irgendeinem Grund nicht richtig. Wenn ich diese oder jene Seite auswähle, wird nichts angezeigt. Woran kann das liegen und wie kann man es beheben?

Es ist notwendig, die Sperre in den Dateieigenschaften aufzuheben.

 
Bitte um Hilfe. Ich habe einen Tick-Indikator. Aus irgendeinem Grund wird der Wert mit 4 Ziffern angezeigt, ich brauche ihn aber mit 5 Ziffern.
#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. В этой статье описывается создание двух индикаторов: строящего тиковый график цены и рисующего "тиковые свечи" - свечи...
Dateien:
ticks.png  4 kb
 
Oleg Bondarev:
Bitte um Hilfe. Es gibt eine Zeckenanzeige. Aus irgendeinem Grund zeigt es einen 4-stelligen Wert an, während ich einen 5-stelligen benötige.

IndikatorZiffern(5)

Grund der Beschwerde: