Erreurs, bugs, questions - page 1256

 

Je fais ça, mais ça n'imprime rien :

//+------------------------------------------------------------------+
//|                                             CheckObjectClick.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      "https:/"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
string           InpName="Button";            // Имя кнопки
ENUM_BASE_CORNER InpCorner=CORNER_LEFT_LOWER; // Угол графика для привязки
string           InpFont="Arial";             // Шрифт
int              InpFontSize=14;              // Размер шрифта
color            InpColor=clrBlack;           // Цвет текста
color            InpBackColor=C'236,233,216'; // Цвет фона
color            InpBorderColor=clrNONE;      // Цвет границы
bool             InpState=false;              // Нажата/Отжата
bool             InpBack=false;               // Объект на заднем плане
bool             InpSelection=false;          // Выделить для перемещений
bool             InpHidden=true;              // Скрыт в списке объектов
long             InpZOrder=0;                 // Приоритет на нажатие мышью

int OnInit()
  {
//---
   ButtonCreate(0,StringConcatenate(InpName,"LIMIT"),0,20,25,55,20,InpCorner,"LIMIT",InpFont,InpFontSize,
                InpColor,clrLime,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder);
   ButtonCreate(0,StringConcatenate(InpName,"STOP"),0,80,25,60,20,InpCorner,"STOP",InpFont,InpFontSize,
                InpColor,clrRed,InpBorderColor,InpState,InpBack,InpSelection,InpHidden,InpZOrder);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if(id==CHARTEVENT_OBJECT_CLICK)
   {
      string clickedChartObject=sparam;
      if(clickedChartObject=="ButtonLIMIT")
      {
        Print(1);
      }
      if(clickedChartObject=="ButtonSTOP")
      {
        Print(2);
      }
   }
   //int Click=EventChartCustom(id,CHARTEVENT_OBJECT_CLICK);
  }
  bool ButtonCreate(long              chart_ID=0,               // ID графика
                  string            name="Button",            // имя кнопки
                  int               sub_window=0,             // номер подокна
                  int               x=0,                      // координата по оси X
                  int               y=0,                      // координата по оси Y
                  int               width=50,                 // ширина кнопки
                  int               height=18,                // высота кнопки
                  ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // угол графика для привязки
                  string            text="Button",            // текст
                  string            font="Arial",             // шрифт
                  int               font_size=10,             // размер шрифта
                  color             clr=clrBlack,             // цвет текста
                  color             back_clr=C'236,233,216',  // цвет фона
                  color             border_clr=clrNONE,       // цвет границы
                  bool              state=false,              // нажата/отжата
                  bool              back=false,               // на заднем плане
                  bool              selection=false,          // выделить для перемещений
                  bool              hidden=true,              // скрыт в списке объектов
                  long              z_order=0)                // приоритет на нажатие мышью
  {
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим кнопку
   if(ObjectFind(name)<0)
   {
     ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);
   }
//--- установим координаты кнопки
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- установим угол графика, относительно которого будут определяться координаты точки
   //ObjectSet(name,OBJPROP_CORNER,corner);Print(GetLastError());
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);

//--- установим текст
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- установим размер шрифта
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- установим цвет текста
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим цвет фона
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- установим цвет границы
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- переведем кнопку в заданное состояние
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- включим (true) или отключим (false) режим перемещения кнопки мышью
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
 

ou y a-t-il un problème quelque part ?

Je n'ai pratiquement jamais travaillé avec des événements dans MT4 auparavant, donc je ne sais pas.

ZZZ : Tout va bien sur le graphique normal.

 
sanyooooook:

ou y a-t-il un problème quelque part ?

Je n'ai pratiquement jamais travaillé avec des événements dans MT4 auparavant, donc je ne sais pas.

ZS : Sur un graphique normal, tout est bien imprimé.

C'est vrai, ça ne l'est pas. Mais ça marche. Essayez de suivre l'événement avec le graphique.

 
svds75:

Bonjour chers utilisateurs du forum. Il y a une situation qui n'est pas claire.

En fait, le problème est qu'il n'y a aucun moyen de faire en sorte que la fonction ChartOpen (), dans le testeur (visualiseur), ouvre un couple de graphiques.

En mode normal, tout fonctionne, mais dans le testeur, il renvoie constamment non pas zéro comme écrit dans l'aide, et le même numéro 16388.

Je serai très reconnaissant si quelqu'un me dit ce qui ne va pas. Robot de test joint.

Mes amis, personne n'y a été confronté ? Ou c'est un bug récent ? Comment tester les multivolutions avec des graphiques alors ?
 
sanyooooook:

ZS : Toutes les impressions sont bien sur une carte normale.

Peut-être que vous regardez dans le mauvais Journal... si vous êtes en mode optimisation, les imprimantes sont éteintes...

Montrez-moi les détails des paramètres du testeur

 
denkir:

Vous devez regarder dans le mauvais journal de bord... en fait, si vous êtes en mode optimisation, les impressions sont désactivées à cet endroit...

Montrez-moi les détails des paramètres de Tester...

Je ne sais pas où chercher.)

Je ne crée même pas d'objets pendant l'optimisation. Mais je ne suis pas en mode optimisation.


 
J'ai essayé avec une variable déclarée au niveau global, mais sa valeur ne change pas non plus.
 
sanyooooook:
J'ai essayé d'utiliser une variable déclarée globalement, mais sa valeur ne change pas non plus.
Où se trouve l'information selon laquelle OnChartEvent() devrait fonctionner dans le testeur ? J'ai raté quelque chose ? Ça ne marche toujours pas pour moi. Ni en 4, ni en 5.
 
Ça marche. J'ai vérifié avec mon EA, il ouvre les ordres à partir des boutons. C'est pourquoi il ne s'imprime pas, je me demande...
 
valeryk:
Ça marche. J'ai vérifié mon EA et il ouvre les ordres via des boutons. C'est pourquoi il ne s'imprime pas, je me demande...

Ce qui est intéressant, c'est que je l'ai déjà fait moi-même, mais pas par l'intermédiaire d'un bouton, mais d'un objet, et tout a fonctionné.

et il a imprimé et dessiné.

Raison: