Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1039

 

Je dessine mon panneau indicateur. J'ai une question, comment le rendre non transparent pour les autres objets graphiques inférieurs.

Certaines lignes sautent (la souris les attrape) et tentent de changer de position.

En général, comment faire pour que le panneau ne soit pas visible par les objets qu'il recouvre ?



Fig. 1

 
Aleksandr Tyunev:

Je dessine mon panneau indicateur. J'ai une question, comment le rendre non transparent pour les autres objets graphiques inférieurs.

Certaines lignes sautent (la souris les attrape) et tentent de changer de position.

En général, comment faire pour que le panneau ne soit pas visible par les objets qu'il recouvre ?



Je ne sais pas exactement (car il semble que vous créez votre panneau à l'aide de la bibliothèque) - si possible, vous devriez donner au panneau une priorité plus élevée sur la réception des clics de souris avec cette fonction

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

Deux déclarations :

Imprimer : 22.33

И

Imprimer : 2.00000

Pourquoi y a-t-il des sorties différentes ? En C / C ++, l'instruction ci-dessus fonctionne bien.

même en C, le formatage
"%.*lf"

légèrement différent de ce que vous imaginiez :-)

le premier argument est la précision (c'est comme un astérisque ici), vous avez probablement pensé le contraire, et en obtenant "2.0000" vous êtes surpris

PS/ n'apprenez pas la programmation MQL.

 
Alexandr Sokolov:

Je ne suis pas vraiment sûr (puisqu'il semble que vous créez votre panneau avec la bibliothèque) - si c'est possible, vous devez attribuer au panneau une priorité plus élevée lors de la réception des clics de souris avec cette fonction

Peu importe qu'il s'agisse d'une bibliothèque ou simplement d'un objet = OBJ_RECTANGLE_LABEL. Couvrir les objets graphiques en dessous du niveau, ça ne marche pas.

 
Aleksandr Tyunev:

Je dessine mon panneau indicateur. J'ai une question, comment le rendre non transparent pour les autres objets graphiques inférieurs.

Certaines lignes sautent (la souris les attrape) et tentent de changer de position.

En général, comment faire pour qu'un panneau ne soit pas visible par les objets qu'il ferme ?

Je me souviens qu'il fut un temps, j'ai un peu déconné dessus)))

Option prête :

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

En général, le principe est le suivant.

 
Vyacheslav Nekipelov:

Je me souviens qu'il y a eu un tel moment, j'ai un peu bricolé avec)).

Une variante de celle qui est terminée :

En gros, le principe est le suivant.

Merci ! Le principe est clair, je vais l'utiliser davantage !

 
Le manuel mql5 chm ne fonctionne pas correctement pour une raison quelconque. Lorsque je sélectionne telle ou telle page, rien ne s'affiche. Quelle pourrait en être la raison et comment y remédier ?
 
Yevhenii Levchenko:
Le manuel mql5 chm ne fonctionne pas correctement pour une raison quelconque. Lorsque je sélectionne telle ou telle page, rien ne s'affiche. Quelle pourrait en être la raison et comment y remédier ?

Il est nécessaire de supprimer le verrou dans les propriétés du fichier.

 
Aidez-moi, s'il vous plaît. J'ai un indicateur de tic-tac. Pour une raison quelconque, il affiche la valeur en 4 chiffres, mais j'en ai besoin en 5 chiffres.
#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. В этой статье описывается создание двух индикаторов: строящего тиковый график цены и рисующего "тиковые свечи" - свечи...
Dossiers :
ticks.png  4 kb
 
Oleg Bondarev:
Aidez-moi, s'il vous plaît. Il y a un indicateur de tic. Pour une raison quelconque, il affiche une valeur à 4 chiffres, alors que j'ai besoin d'une valeur à 5 chiffres.

IndicateurDigits(5)