Dibujar un cuadrado o un rectángulo. Realmente necesito ayuda... - página 4

 
Alex_Profit:

Resulta que cuando se crea un objeto, se le atribuye el valor "_H", _L".

Bueno, hay que pensar en ello, estoy de acuerdo. Y no bebo mucho.

Creo que mejorará con el tiempo. Gracias.

objName+"_H",

objName+"_L",

No estaba hablando de ti... No estaba muy sobrio cuando escribí esa respuesta.
 
Gracias Agramenne. La etapa 1 ha terminado.
 
Me pueden decir que por alguna razón cuando se cambia el parámetro indicator_chart_window aindicator_separate_window la imagen de la ventana principal no se muestra en la subventana.
 
Alex_Profit:
Me puedes decir que por alguna razón cuando cambias el parámetro indicator_chart_window aindicator_separate_window la imagen de la ventana principal no se muestra en la ventana secundaria.
Es necesario eliminar el indicador del gráfico y añadirlo de nuevo.
 

Por favor, dígame si hay un error. Lo que hay que cambiar para que el rombo y la cruz se dibujen sobre la propia barra y no sobre la barra cero. (en el primer compás de cada mes).

Gracias.

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

#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:

Por favor, dígame si hay un error. Lo que hay que cambiar para que el rombo y la cruz se dibujen sobre la propia barra y no sobre la barra cero. (en el primer compás de cada mes).

Gracias.

Empezar a aprender la nueva sintaxis ya, entendería a un viejo dinosaurio que sólo escribiera en el viejo lenguaje y no tuviera ganas de reciclarse, pero que acabe de empezar a aprender y se apoye en una sintaxis obsoleta desde hace varios años con un chorrito de la nueva, es perverso.

Y empieza a leer la ayuda para que al menos entiendas lo que pasa.

 

Es comprensible, pero dónde está lo nuevo y dónde lo viejo, no se puede decir a la vez. Y he leído el manual, está escrito en un lenguaje demasiado inteligente.

Gracias especialmente por las críticas. Me ayuda a avanzar en la dirección correcta.

 

¿Puedes darme una pista? ¿Cómo hago los recargos para los periodos trimestrales?

Tengo que dibujar líneas verticales cuando se produzcan estas fechas.

1 deenero.1 de abril.1 de julio.1 de octubre.

 

Primero lea atentamente mis palabras y luego lea la documentación del lenguaje, en particular la sección "Objetos gráficos".

La documentación indica claramente qué parámetros deben estar presentes al crear un objeto gráfico. Uno de ellos es la HORA - estas son las fechas que debes poner en este parámetro. El precio no es importante para las líneas verticales, pero es necesario para la función. No hay ninguna dificultad para hacerlo.

 
AlexeyVik:

Primero lea atentamente mis palabras y luego lea atentamente la documentación del lenguaje, en particular la sección "Objetos gráficos".

La documentación dice claramente qué parámetros deben estar presentes al crear un objeto gráfico. Una de ellas es la HORA, que son sus fechas y deben ser insertadas en este parámetro. El precio no es importante para las líneas verticales, pero es obligatorio para la función, por lo que hay que poner 0. No hay ninguna dificultad para hacerlo.

No sé cómo hacerlo. Por favor, dígame cómo hacerlo. El periodo máximo es de un mes.

En la variablet_Line. tenemos que insertar el valor de la 1ª,2ª,3ª,4ª, kv.

No puedo entenderlo.

Se lo agradecería.

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

}


Razón de la queja: