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

 
Alex_Profit:

Eu não sei como fazer isso. Você pode me dar uma dica? 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.

Ohhh, que programa é este... Você entendeu o que escreveu, ou o quê? Por que existem dois loops no mesmo balcão? Ao menos verifique manualmente o valor da variável i em cada iteração.

Quem é oBarToProcess? Onde é declarado e ao que é igual? Mais uma vez, um limite para dois loops, não leva a nada de bom; você deve se bater quando escreve um código como este, para que isso não seja feito em vão.

E não faz sentido contar barras da TF, na qual o gráfico está rodando, para trabalhar com o período do MN1.

Não acho necessário escrever um indicador que desenhe uma linha por trimestre, enquanto estiver correndo constantemente no gráfico, acho que para tais tarefas e o roteiro fará, correrá, marcará o gráfico, descarregará.

 

Eu não o escrevi. Encontrei um indicador como este e comecei a desmontá-lo. Eu mesmo comecei agora, por isso não sou muito bom nisso. Eu li o manual do usuário, mas nem sempre é compreensível. Eu estou dirigindo com um "rangido". É bom que haja um fórum onde você possa pedir conselhos. Seria bom conversar com alguém sobre o assunto da programação.

Um agradecimento especial pela crítica. No entanto, a questão permanece sem solução. Obrigado de qualquer forma por sua capacidade de resposta.

 
Alex_Profit:

Eu não o escrevi. Encontrei um indicador como este e comecei a desmontá-lo. Eu mesmo comecei agora, por isso não sou muito bom nisso. Eu li o manual do usuário, mas nem sempre é compreensível. Eu estou dirigindo com um "rangido". É bom que haja um fórum onde você possa pedir conselhos. Seria bom conversar com alguém sobre o assunto da programação.

Um agradecimento especial pela crítica. No entanto, a questão permanece sem solução. Mas obrigado por sua resposta.

Bem, aqui está um esboço rudimentar, por exemplo, no meu joelho, que acabou de escrever um roteiro rápido:

void OnStart()
{
   int limit=iBars(_Symbol,PERIOD_MN1);
   for(int i=0;i<=limit;i++)
   {
      datetime timemn=iTime(_Symbol,PERIOD_MN1,i);
      int  month=TimeMonth(timemn);
      if(month==1 || month==4 || month==7 || month==10)
      {
         int qt=0;
         switch(month)
         {
            default:break;
            case 1: qt=1;break;
            case 4: qt=2;break;
            case 7: qt=3;break;
            case 10: qt=4;break;
         }
 
         string name=StringConcatenate("Qt"+IntegerToString(qt)+", "+TimeToStr(timemn));
         ObjectCreate (name,OBJ_VLINE,0,timemn,0);         //--- Создаём обьект вертикальную линию
         ObjectSet    (name,OBJPROP_STYLE,2);              //--- Со стилем
         ObjectSet    (name,OBJPROP_COLOR,DimGray);        //--- Со цветом  
         ObjectSet    (name,OBJPROP_WIDTH,0);              //--- С  толщиной
         ObjectSet    (name,OBJPROP_BACK,0);               //--- С типом отображения. Объект на заднем плане
      }
   }   
}

Uma pequena desvantagem - se o trimestre começa no fim de semana, a linha é traçada na última barra na sexta-feira. E o primeiro trimestre da história também permanecerá sem a linha, se, por exemplo, a história começar no segundo dia. Isto é para especificar o número do mês e se não for o 1º, então o próximo seguinte deve ser tomado.

Para apagar todas as linhas deste script do gráfico, você pode executar este script:

void OnStart()
{
     ObjectsDeleteAll(0,"Qt");
}

Você pode fazer um roteiro em loop, com verificação da existência de uma determinada linha na barra desejada, para que não haja tentativas de colocar uma linha sobre uma linha já desenhada e com a eliminação da marcação na desinicialização do roteiro.

Você também pode colocar parâmetros de linha nas configurações, e muito mais pode ser feito.

 
evillive:

Aqui está um rascunho, por exemplo, acabei de escrever um roteiro rápido no meu joelho:

É ótimo. Muito obrigado.

Quanto tempo será necessário para aprender esses truques?

 

Sobre o tempo necessário para ler a referência lingüística e lembrar o que está lá e onde.

Isto supondo que você tenha habilidades de programação em pelo menos uma das linguagens tipo C. As habilidades não estão apenas na sintaxe, você precisa entender como o programa "viverá", o que segue o que segue o que.

Se isto não estiver disponível, mas houver um desejo de aprender, um ano deve ser mais do que suficiente.

 
evillive:

Se você não tem isso, mas quer aprender, um ano deve ser mais do que suficiente.

Eu entendo.

 

Eu nem sequer sei como lidar com isso. Preciso dar os retoques finais. Também ainda não sei como fazer isso.

As linhas verticais são traçadas, sem problemas com isso. Mas como desenhar as barras azuis nas barras altas ainda é um mistério para mim.

A linha é do dia. Tentar amarrá-la ao buffer não funcionou.

Eu ficaria extremamente grato por sua assistência.

Obrigado.

 
Alex_Profit:

Eu nem sequer sei como lidar com isso. Preciso dar os retoques finais. Também ainda não sei como fazer isso.

As linhas verticais são traçadas, sem problemas com isso. Mas como desenhar as barras azuis nas barras altas ainda é um mistério para mim.

A linha é do dia. Tentar amarrá-la ao buffer não funcionou.

Eu ficaria extremamente grato por sua assistência.

Obrigado.

Mostre-me o código, nós o consertaremos juntos.
 

Não me chute, o código é "desleixado". Eu já entendi isso. Eu gostaria de chegar a um resultado lógico com exemplos e erros.

A tarefa mínima, ela funciona. E, com a experiência, se tornará "mais bonita".

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

#property strict

#property indicator_chart_window

   

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

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


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

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

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


//MqlDateTime mqlDateTime;

MqlRates    mqlRates[1];


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

int init()

  {  

    return(0);

  }

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

int deinit()

  {

   int i;  

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

           {

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

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

              ObjectDelete(Name_CHECK + "L_CHECK"  + 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_H4,i);         //--- В ПЕРЕМ t_Line Будет Присваиваться значение времени открытия бара

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

   {


         //--- кубики по хай (В место галочек нужно подставить кубики)

         ObjectCreate    (0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].high, t_Line,mqlRates[0].high);

         ObjectSetInteger(0,Name_CHECK + "H_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); 

   

         //--- кубики по лоу (В место галочек нужно подставить кубики)

         ObjectCreate    (0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJ_ARROW_CHECK, 0, t_Line, mqlRates[0].low, t_Line,mqlRates[0].low);

         ObjectSetInteger(0,Name_CHECK + "L_CHECK" + DoubleToStr(i,0), OBJPROP_COLOR, clrGreen); 

        

    //+------------------------ Рисуем вертикальную линии -----------------------------------------------------+                 

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

}


 
Alex_Profit:

Não me chute, o código é "desleixado". Eu já entendi isso. Gostaria de chegar a um resultado lógico através de exemplos e erros.

A tarefa mínima, ela funciona. E, com a experiência, se tornará "mais bonita".

Bem, onde isso funciona? As linhas são traçadas em cada barra, não na TK. Ou na figura acima TF=H1?

Calcule em um pedaço de papel a que limite e i em cada iteração de ciclos será igual.

Meu exemplo mostrado acima nunca é contabilizado, como eu o entendo.

As setas de seleção podem ser desenhadas usando amortecedores indicadores, assim como as linhas que conectam as sombras dos castiçais.

Razão: