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

 
HUNTERGOOD:

Bonjour à tous. Chers programmeurs, aidez-moi à insérer une ligne avec la possibilité de spécifier un fichier son, pour chaque Alert3.Lv1;2;3, pour déclencher un son différent que vous spécifiez.

Bonjour à tous. Chers programmeurs, aidez-moi à insérer une chaîne de caractères avec la possibilité d'indiquer un fichier son pour Alert3.Lv1;2;3 pour déclencher un son différent.

Bonjour à tous. Chers programmeurs, s'il vous plaît aidez-moi à insérer une chaîne avec le fichier son pour Alert3.Lv1;2;3 pour déclencher un son différent.

Commencez à faire, et vous obtiendrez de l'aide.

Commencez à faire, et vous obtiendrez de l'aide.

Commencez à faire et vous obtiendrez de l'aide.

 

Au secours, les patins ne glissent pas.

J'essaie d'apprendre à travailler avec des panneaux graphiques et à créer les miens.

J'ai créé 2 rectangles, 1 rectangle principal, dont les coordonnées doivent être orientées vers tous les objets du panneau, lorsqu'on le déplace.

J'ai créé une telle condition dans ChartEvent et maintenant, lorsque je déplace le rectangle principal, le second ne se déplace qu'au bout de 2 ou 3 secondes. Comment y remédier ?
J'ai également essayé CHARTEVENT_MOUSE_MOVE dans la condition, mais le résultat est le même.

input string ds;//Параметры заднего фона панели
input int x_offset_anchor=100;
input int y_offset_anchor=100;
int anchor_width=150;
int anchor_height=20;
int back_height=100;
input color anchor_color=clrBlue, back_color=clrAquamarine, clrBorder=clrAliceBlue;
input string ds2;//
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   RectLabelCreate(0,"Back_panel_anchor_point",0,x_offset_anchor,y_offset_anchor,anchor_width,anchor_height,anchor_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,2,false,true,true,0);
   RectLabelCreate(0,"Back_panel",0,x_offset_anchor,y_offset_anchor+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
   
   
   
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
//---
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason){
   ObjectsDeleteAll(0,-1,-1);
}  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id == CHARTEVENT_OBJECT_DRAG && sparam == "Back_panel_anchor_point")
      {
         ObjectDelete(0,"Back_panel");
         RectLabelCreate(0,"Back_panel",0,ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_XDISTANCE),ObjectGetInteger(0,"Back_panel_anchor_point", OBJPROP_YDISTANCE)+anchor_height,anchor_width,back_height,back_color,BORDER_SUNKEN,CORNER_LEFT_UPPER,clrBorder,STYLE_SOLID,1,false,false,true,0);
      }   
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Создает прямоугольную метку                                      | 
//+------------------------------------------------------------------+ 
bool RectLabelCreate(const long             chart_ID=0,               // ID графика 
                     const string           name="RectLabel",         // имя метки 
                     const int              sub_window=0,             // номер подокна 
                     const int              x=0,                      // координата по оси X 
                     const int              y=0,                      // координата по оси Y 
                     const int              width=50,                 // ширина 
                     const int              height=18,                // высота 
                     const color            back_clr=C'236,233,216',  // цвет фона 
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // тип границы 
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки 
                     const color            clr=clrRed,               // цвет плоской границы (Flat) 
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // стиль плоской границы 
                     const int              line_width=1,             // толщина плоской границы 
                     const bool             back=false,               // на заднем плане 
                     const bool             selection=false,          // выделить для перемещений 
                     const bool             hidden=true,              // скрыт в списке объектов 
                     const long             z_order=0)                // приоритет на нажатие мышью 
  { 
//--- сбросим значение ошибки 
   ResetLastError(); 
//--- создадим прямоугольную метку 
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0)) 
     { 
      Print(__FUNCTION__, 
            ": не удалось создать прямоугольную метку! Код ошибки = ",GetLastError()); 
      return(false); 
     } 
//--- установим координаты метки 
   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); 
//--- установим цвет фона 
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 
//--- установим тип границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border); 
//--- установим угол графика, относительно которого будут определяться координаты точки 
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 
//--- установим цвет плоской рамки (в режиме Flat) 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 
//--- установим стиль линии плоской рамки 
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 
//--- установим толщину плоской границы 
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width); 
//--- отобразим на переднем (false) или заднем (true) плане 
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 
//--- включим (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); 
  } 
 
Roman Sharanov:

Au secours, les patins ne glissent pas.

J'essaie d'apprendre à travailler avec des panneaux graphiques et à créer les miens.

J'ai créé 2 rectangles, 1 rectangle principal, dont les coordonnées doivent être orientées vers tous les objets du panneau, lorsqu'on le déplace.

J'ai créé une telle condition dans ChartEvent, et maintenant quand je déplace le rectangle principal, le second ne se déplace qu'après 2-3 secondes, comment faire ?
j'ai également essayé CHARTEVENT_MOUSE_MOVE dans la condition, même effet

Après avoir créé un objet et son déplacement, je dois faire ChartRedraw().

 
Vladislav Andruschenko:

Après avoir créé un objet et l'avoir déplacé, vous devez faire ChartRedraw()

Oui, c'est mieux. Et donc il est impossible de le faire glisser en douceur, n'est-ce pas ?

upd a ajouté une condition pour redessiner uniquement si ce rectangle principal est sélectionné et c'est bon maintenant, merci pour l'aide !)

 

Reprise d'un autre fil de discussion. Peut-être que je vais secouer quelqu'un et obtenir de l'aide :


<Les experts locaux me rappellent mon camarade de classe (oh, comme c'était il y a longtemps) - il connaissait toutes les règles, toutes les formules, mais quand appliquer laquelle, il ne pouvait pas penser immédiatement, et passait par presque tout, de sorte qu'il ne suivait jamais le temps imparti. C'est la même chose ici : ils savent beaucoup de choses, mais ils ne voient pas la solution, ils travaillent juste à l'instinct. À l'institut, on nous a appris à résoudre un problème sans chiffres ni formules, et ce n'est qu'ensuite que vous saurez clairement quelles formules appliquer. Les nouveaux arrivants au MKL4 ne comprennent pas les subtilités de la langue, et c'est là qu'ils ont besoin d'aide (pas dans le sens de "lire un manuel"). Mais personne ne peutvous montrer les pièges de l'ouverture/fermeture des positions. Peut-être ne le savent-ils pas ? Ils ont donc laissé passer ma question...>.

 
Salutations, aide pour écrire le prix actuel dans un fichier.
 
lil_lil:
Salutations, aide pour écrire le prix actuel dans un fichier.

Jetez un coup d'œilici.

 
Artyom Trishkin:

Commencez à agir et vous obtiendrez de l'aide.

Commencez à agir et vous obtiendrez de l'aide.

Commencez à le faire, et vous obtiendrez de l'aide.

J'apprécie ton sarcasme, mais pas dans le bon sens. Que dois-je commencer à faire ? Si je savais par où commencer, où commencer et où finir, je ne serais probablement pas intéressé par l'aide des baby-sitters plus expérimentés de ce forum. Je pense simplement qu'une personne versée dans ce genre d'activité, c'est-à-dire la programmation, n'aurait aucun mal à placer quelques chaînes à certains endroits spécifiques, de manière à pouvoir indiquer un certain fichier audio en indicateur. Et vous me suggérez de "commencer", par quelles bases devrais-je commencer à maîtriser ce grand et impénétrable art du codage, afin de savoir où il faut mettre ces mêmes chaînes ? Voici ce que je veux dire....

 
HUNTERGOOD:

J'ai apprécié votre sarcasme, mais pas sur le fond. Que dois-je commencer à faire ? Si je savais par où commencer, par où commencer et par où finir, je n'aurais probablement pas manifesté d'intérêt pour l'aide des membres plus expérimentés de ce forum. Je pense simplement qu'une personne versée dans ce genre d'activité, c'est-à-dire la programmation, n'aurait aucun mal à placer quelques chaînes à certains endroits spécifiques, de manière à pouvoir indiquer un certain fichier audio en indicateur. Et vous me suggérez de "commencer", par quelles bases devrais-je commencer à maîtriser ce grand art impénétrable du codage, afin de savoir où il faut mettre ces mêmes chaînes ? Voilà ce que je veux dire.....

Les indicateurs ne fonctionnent pas, seulement l'alerte, seulement 1 son.
 
Alexey Viktorov:

Voirici.

Merci, les valeurs qui s'y trouvent proviennent d'un fichier et d'une seule fois, mais ma tâche est étalée dans le temps.

Enregistrez le prix et l'heure actuels au début de chaque jour pendant 30 minutes, toutes les 120 secondes.

Ne pas écraser les entrées précédentes.