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

 

Boa tarde. Realmente precisam de ajuda para não saber o que fazer. Se você puder ajudar.

Precisa de um indicador que marque a primeira barra de cada mês. Com linhas de preço alto e baixo traçadas até o final do mês, com uma escolha de número de meses.

Pr.(Três meses. Marcação com linhas por 3 meses ). Ou uma amostra a ser examinada.

Obrigado de antemão.

 

Aqui está um exemplo de roteiro marcando o dia da abertura + e - 20 pips. Da mesma forma, você pode fazer uma definição do mês e respectivamente alta e baixa deste mês.

/********************************************************************\
                                                           20-20.mq4 |
                                                            Viktorov |
                                                   v4forex@yandex.ru |
\********************************************************************/
#property copyright "Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"

MqlDateTime mqlDateTime;
MqlRates    mqlRates[1];
/********************Script program start function*******************/
void OnStart()
{
  double point = _Digits%2 == 0 ? _Point : _Point*10;
   datetime dt = ChartTimeOnDropped();
    TimeToStruct(ChartTimeOnDropped(), mqlDateTime);
     if(CopyRates(_Symbol, PERIOD_D1, dt, 1, mqlRates) < 0)
      Print("");
       string objName = TimeToString(mqlRates[0].time, TIME_DATE);
        ObjectCreate(0, objName, OBJ_TREND, 0, mqlRates[0].time, mqlRates[0].open, mqlRates[0].time+PeriodSeconds(PERIOD_D1), mqlRates[0].open);
        ObjectSetInteger(0, objName, OBJPROP_RAY_RIGHT, false);
       ObjectCreate(0, objName+"+20", OBJ_TREND, 0, mqlRates[0].time, mqlRates[0].open+20*point, mqlRates[0].time+PeriodSeconds(PERIOD_D1), mqlRates[0].open+20*point);
      ObjectSetInteger(0, objName+"+20", OBJPROP_RAY_RIGHT, false);
     ObjectCreate(0, objName+"-20", OBJ_TREND, 0, mqlRates[0].time, mqlRates[0].open-20*point, mqlRates[0].time+PeriodSeconds(PERIOD_D1), mqlRates[0].open-20*point);
    ObjectSetInteger(0, objName+"-20", OBJPROP_RAY_RIGHT, false);
   Comment(mqlRates[0].open, "\n"
         , objName, "\n"
         , sizeof(mqlDateTime), "\n"
         );
}/*******************************************************************/
 
AlexeyVik:

Aqui está um exemplo de roteiro marcando o dia da abertura + e - 20 pips. Da mesma forma, você pode fazer uma definição do mês e respectivamente alta e baixa deste mês.

Muito obrigado, é um pouco de luta, mas parece funcionar.
 

AlexeyVik: Obrigado pelo feedback.

Não sei se declarei meu autoclismo corretamente. Eu preciso de algo assim.Foto

Eu ficaria muito grato se você pudesse ajudar, ou me dissesse como implementá-lo em um indicador.

Sou novo em programação.

As linhas verticais são traçadas corretamente.

Eu não entendo como ligar "linhas e círculos do horizonte ao alto e ao baixo da primeira vela".

Qualquer ajuda seria bem-vinda.

 

Leia a documentação sobre a função CopyRates() e a estrutura MqlRates. Com a ajuda deles, podemos obter todos os dados necessários para implementar seus desejos.

Então mostre-me o que você tem e o que você não pode alcançar. Caso contrário, o pedido para ajudá-lo a ler como um pedido para fazer isso por você. Desculpem por ser grosseiro.

 

Aqui está o código fonte. Agradecia sua ajuda para refiná-lo. Preciso encontrar o Alto e o Baixo de cada primeira semana do mês.

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

#property copyright ""

#property link      ""


#property indicator_chart_window

   

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

extern int     TF = 43200;               //--- Через сколько баров рисуются линии (На каком Т/Ф)

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

extern string  TimeFrames = "M1,5,15,30; 60H1; 240H4; 1440D1; 10080W1; 43200MN.";  //--- Подсказка кол-во боров в Т/Ф


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

string    Name_Line;         //--- Имя Вертикальных уровней


//double    Price_H = High[0]; //--- Макс цены  

//double    Price_L = Low[0];  //--- Мин цены




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

int init()

  {  

   //--- 

        return(0);

  }

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

int deinit()

  {

   int i;  

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

           {

              ObjectDelete(Name_Line + DoubleToStr(i,0));        //--- Удаляем все установленные линии

           }       

   return(0);

  }

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

int start()

{                  

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

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

int i=0;                                   //--- переменная i = 0 обнуление

   

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

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

  limit = Bars - counted_bars;         

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

      {  

         //+-----  Выбираем количество линий отображаемых на экране 

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

         {

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

           Name_Line = "Time_VLine M" + TF + " "+DoubleToStr(i,0);      //--- И присваиваем имя с соответствующими параметрами 

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

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

             {   

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


                   {

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

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

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

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

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

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

                   }

                    i++;

             }

          }

      }

      

return(0);


}


 
     if(CopyRates(_Symbol, PERIOD_W1, dt, 1, mqlRates) < 0)        //--- Если бросили скрипт на выбранную свечку

      Print("");

Em meu código, não é uma vela, é um dia. Na sua, é uma semana.

A partir daí, você tem o tempo para traçar a linha. Você provavelmente precisa de um mês. O início do mês. Mas raramente coincide com o início da semana. Portanto, você tem que fazer um pouco mais de magia para descobrir como contar a primeira semana.

        ObjectCreate(0, objName, OBJ_TREND, 0, mqlRates[0].time + PERIOD_MN1, mqlRates[0].high, mqlRates[0].time + PeriodSeconds(PERIOD_MN1), mqlRates[0].high); 

Por assim dizer, sentir a diferença. Ainda não há uma grande diferença em mql4, mas quem sabe que mudanças podem esperar por nós...

//--- Что здесь не так, при построении линии по лоу. На графике её нет. И Ошибки компиляции тоже нет? 

 //--- НО по отдельности всё работает.     

Observe os nomes das linhas de tendência.

 //----- Для чего нужен этот блок если линия отрисовывается на графике и без него   

Tenho 3 linhas, por isso tenho 3 funções e 3 nomes de linhas.

 
Obrigado pela ajuda, mas não estou recebendo tudo.
 

Então a resposta a apenas uma pergunta

//--- Что здесь не так, при построении линии по лоу. На графике её нет. И Ошибки компиляции тоже нет? 

 //--- НО по отдельности всё работает.     

Você tem o mesmo nome de linha aqui, e deve ser diferente.

Por que você apagou e corrigiu suas mensagens?

 

Você não respondeu por muito tempo, pensei que não estivesse respondendo perguntas estúpidas, então as apaguei.