Dessiner un carré ou un rectangle. J'ai vraiment besoin d'aide... - page 4

 
Alex_Profit:

Il s'avère que lorsqu'un objet est créé, la valeur "_H", _L", est attribuée.

Il faut y réfléchir, je suis d'accord. Et je ne bois pas beaucoup.

Je pense que ça va s'améliorer avec le temps. Merci.

objName+"_H",

objName+"_L",

Je ne parlais pas de toi... Je n'étais pas très sobre quand j'ai écrit cette réponse.
 
Merci Agramenne. La phase 1 est terminée.
 
Pouvez-vous me dire que pour une raison quelconque, lorsque vous changez le paramètre indicator_chart_window enindicator_separate_window, l'image de la fenêtre principale n'est pas affichée dans la sous-fenêtre.
 
Alex_Profit:
Pouvez-vous me dire que pour une raison quelconque, lorsque vous changez le paramètre indicator_chart_window enindicator_separate_window, l'image de la fenêtre principale ne s'affiche pas dans la sous-fenêtre.
L'indicateur doit être retiré du graphique et ajouté à nouveau.
 

Veuillez me dire s'il y a une erreur. Ce qu'il faut changer, c'est que le losange et la croix soient dessinés sur la barre elle-même et non sur la barre de zéro. (le premier bar de chaque mois).

Merci.

//+------------------------------------------------------------------+

#property strict

#property indicator_chart_window

   

    //---  Внешние Глобальные переменные 

extern int     barsToProcess = 5;        //--- Кол-во отображаемых периодов (линий) 


    //---  Глобальные переменные    

string Name_Obj;  //--- Имя Элементов


#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2 Blue


double Buf_High[];

double Buf_Low[];


MqlDateTime mqlDateTime;

MqlRates    mqlRates[1];


//+------------------------------------------------------------------+

int init()

  {  

     SetIndexBuffer(0,Buf_High);     

     SetIndexStyle (0,DRAW_ARROW,0,0);  

     SetIndexArrow (0,116);

     

     SetIndexBuffer(1,Buf_Low);

     SetIndexStyle (1,DRAW_ARROW,0,0); 

     SetIndexArrow (0,116);


    return(0);

  }

//+------------------------------------------------------------------+

int deinit()

  {

   int i;  

         for (i=0; i<Bars; i++)                                        //--- Выбираем все установленные объекты  

           {

              ObjectDelete(Name_Obj  + " High"   + DoubleToStr(i,0));  //--- Удаляем все объекты

              ObjectDelete(Name_Obj  + " Low"    + DoubleToStr(i,0));  //--- Удаляем все объекты

           }       

   return(0);

  }

//+------------------------------------------------------------------+

int start()

{                  

int counted_bars = IndicatorCounted();     //--- перем counted_bars = функц.  Возвращает количество баров

int limit;                                 //--- переменная  старт кол-во баров. Линии рисуем о по всем барам

if(counted_bars > 0) counted_bars --;      //--- последний посчитанный бар будет пересчитан 

  //--- основной цикл 

  limit = Bars - counted_bars;         

  for(int i = 0; i < limit; i ++)

      {

 //+------------------------ При выборе кол-ва линий отобразим их ко-во------------------------+                 

         if(limit > barsToProcess)                                     //--- Если кол-во линий > Кол-ву отображаемых периодов (линий) 

         {

          limit = barsToProcess;                                       //--- Тогда устанавливаем Кол-во отображаемых периодов (линий)

 //+------------------------ Рисуем линии -----------------------------------------------------+                 

             while (i<limit)                                           //--- Пока есть линии в окне терминала. Или пока висит индикатор в окне терминала.                        

             {   

               datetime t_Line = iTime(Symbol(),PERIOD_MN1,i);         //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

               CopyRates(_Symbol, PERIOD_W1, t_Line, 1, mqlRates);

   {

             Buf_High[i] = mqlRates[i].high;

             Buf_Low[i]  = mqlRates[i].low;

      //+------------------------ Рисуем Объекты -----------------------------------------------------+                 

      //--- Строим линию по Хай      

     ObjectCreate    (0,Name_Obj + " High" + DoubleToStr(i,0), OBJ_TREND, 0,t_Line, mqlRates[0].high,t_Line+PeriodSeconds(PERIOD_MN1),mqlRates[0].high);

     ObjectSetInteger(0,Name_Obj + " High" + DoubleToStr(i,0), OBJPROP_RAY_RIGHT, false);

  

     //--- Строим линию по Лоу      

     ObjectCreate    (0,Name_Obj + " Low" + DoubleToStr(i,0), OBJ_TREND, 0,t_Line, mqlRates[0].low,t_Line+PeriodSeconds(PERIOD_MN1),mqlRates[0].low);

     ObjectSetInteger(0,Name_Obj + " Low" + DoubleToStr(i,0), OBJPROP_RAY_RIGHT, false);

 }

  i++;

             }

          }

      }

   return(0);

}


 
Alex_Profit:

Veuillez me dire s'il y a une erreur. Ce qu'il faut changer, c'est que le losange et la croix soient dessinés sur la barre elle-même et non sur la barre de zéro. (le premier bar de chaque mois).

Merci.

Commencez déjà à apprendre la nouvelle syntaxe, je comprendrais un vieux dinosaure qui n'écrit que dans l'ancien langage et n'a aucune envie de se reconvertir, mais avoir juste commencé à apprendre et se tenir sur une syntaxe obsolète depuis plusieurs années avec une touche de neuf, c'est pervers.

Et commencez à lire l'aide afin de comprendre au moins ce qui se passe.

 

C'est compréhensible, mais où est le nouveau et où est l'ancien, on ne peut pas le dire en même temps. Et j'ai lu le manuel, il est écrit dans une langue trop intelligente.

Merci surtout pour la critique. Cela m'aide à avancer dans la bonne direction.

 

Pouvez-vous me donner un indice ? Comment faire des majorations pour les périodes trimestrielles ?

Je dois tracer des lignes verticales lorsque ces dates se produisent.

1er janvier.1er avril.1er juillet.1er octobre.

 

Lisez d'abord attentivement mes propos, puis lisez la documentation du langage, en particulier la section "Objets graphiques".

La documentation indique clairement quels paramètres doivent être présents lors de la création d'un objet graphique. L'un d'eux est TIME - ce sont les dates que vous devez indiquer dans ce paramètre. Le prix n'est pas important pour les lignes verticales, mais il est nécessaire pour la fonction. Il n'y a aucune difficulté à le faire.

 
AlexeyVik:

Lisez d'abord attentivement mes propos, puis lisez attentivement la documentation du langage, en particulier la section "Objets graphiques".

La documentation indique clairement quels paramètres doivent être présents lors de la création d'un objet graphique. L'une d'entre elles est TIME : ce sont vos dates et elles doivent être insérées dans ce paramètre. Le prix n'est pas important pour les lignes verticales, mais il est obligatoire pour la fonction, donc vous devez mettre 0. Il n'y a aucune difficulté à le faire.

Je ne sais pas comment faire. S'il vous plaît, dites-moi comment faire. La période maximale est d'un mois.

Dans la variablet_Line. nous devons insérer la valeur de 1st,2nd,3rd,4th, kv.

Je ne peux pas comprendre.

Je vous en serais reconnaissant.

int start()

{                  

int counted_bars = IndicatorCounted();     //--- перем counted_bars = функц.  Возвращает количество баров

int limit;                                 //--- переменная  старт кол-во баров. Линии рисуем о по всем барам

   

if(counted_bars > 0) counted_bars --;      //--- последний посчитанный бар будет пересчитан 

  //--- основной цикл 

  limit = Bars - counted_bars;         

  for(int i = 0; i < limit; i ++)

      {

         if(limit > barsToProcess)                                     //--- Если кол-во линий > Кол-ву отображаемых периодов (линий) 

         {

          limit = barsToProcess;                                      //--- Тогда устанавливаем Кол-во отображаемых периодов (линий)

             while (i<limit)                                           //--- Пока есть линии в окне терминала. Или пока висит индикатор в окне терминала.                        

             {   

               datetime t_Line = iTime(Symbol(),PERIOD_MN1,i);                 //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

             {


    ObjectCreate (Name_VLine + " VLine" + DoubleToStr(i,0),OBJ_VLINE,0,t_Line,0);         //--- Создаём обьект вертикальную линию

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_STYLE,2);              //--- Со стилем

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_COLOR,DimGray);        //--- Со цветом  

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_WIDTH,0);              //--- С  толщиной

    ObjectSet    (Name_VLine + " VLine" + DoubleToStr(i,0),OBJPROP_BACK,0);               //--- С типом отображения. Объект на заднем плане

 }

  i++;

             }

          }

      }      

   return(0);

}