Desenho de um quadrado ou retângulo. Realmente precisam de ajuda... - página 4

 
Alex_Profit:

Acontece que quando um objeto é criado, o valor "_H", _L", é atribuído.

Bem, você tem que pensar sobre isso, eu concordo. E eu não bebo muito.

Acho que vai melhorar com o tempo. Obrigado.

objName+"_H",

objName+"_L",

Eu não estava falando de você... Eu não estava muito sóbrio quando escrevi essa resposta.
 
Obrigado, Agramenne. A etapa 1 terminou.
 
Você pode me dizer por alguma razão quando você muda o parâmetro indicator_chart_window paraindicator_separate_window a imagem da janela principal não é exibida na subjanela.
 
Alex_Profit:
Você pode me dizer por alguma razão quando você muda o parâmetro indicator_chart_window paraindicator_separate_window a imagem da janela principal não é exibida na subjanela.
O indicador precisa ser removido do gráfico e adicionado novamente.
 

Por favor, diga-me se houver um erro. O que precisa ser mudado para que o losango e a cruz sejam traçados sobre a própria barra e não sobre a barra zero. (no primeiro bar de cada mês).

Obrigado.

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

#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, diga-me se houver um erro. O que precisa ser mudado para que o losango e a cruz sejam traçados sobre a própria barra e não sobre a barra zero. (no primeiro bar de cada mês).

Obrigado.

Começando já a aprender a nova sintaxe, eu entenderia um dinossauro velho que só escrevia na língua antiga e não tem vontade de se reciclar, mas tendo acabado de começar a aprender e ficar de pé em uma sintaxe que está obsoleta há vários anos com um respingo de novo, é perverso.

E comece a ler a ajuda para que você pelo menos entenda o que está acontecendo.

 

É compreensível, mas onde está o novo e onde está o velho, não se pode dizer ao mesmo tempo. E eu li o manual, ele está escrito em uma linguagem muito inteligente.

Obrigado especialmente pelas críticas. Isso me ajuda a ir na direção certa.

 

Você pode me dar uma dica? Como posso fazer mark-ups para períodos trimestrais?

Preciso traçar linhas verticais quando estas datas ocorrem.

1 de janeiro1 de abril 1 dejulho 1 deoutubro 1.

 

Primeiro leia atentamente minhas palavras, depois leia a documentação lingüística, em particular a seção "Objetos gráficos".

A documentação indica claramente quais parâmetros devem estar presentes ao criar um objeto gráfico. Uma delas é o TEMPO - estas são suas datas que você precisa colocar neste parâmetro. O preço não é importante para as linhas verticais, mas é necessário para a função. Não há nenhuma dificuldade em fazer isto.

 
AlexeyVik:

Primeiro leia atentamente minhas palavras, depois leia atentamente a documentação lingüística, em particular a seção "Objetos Gráficos".

A documentação diz claramente quais parâmetros devem estar presentes ao criar um objeto gráfico. Uma delas é o TEMPO em que estas são suas datas e devem ser inseridas neste parâmetro. O preço não é importante para as linhas verticais, mas é obrigatório para a função, portanto é preciso colocar 0. Não há nenhuma dificuldade em fazer isto.

Eu não sei como fazer isso. Por favor, me diga como fazê-lo. O período máximo é de um mês.

Na variávelt_Line. precisamos inserir o valor de 1ª, 2ª, 3ª, 4ª, kv.

Eu não consigo entender.

Eu agradeceria muito.

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

}