Рисование квадрата или прямоугольника. Очень нужна помощь... - страница 4

 
Alex_Profit:

Получается, что при создании объекта, приписывается значение "_H",  _L",.

Ну да думать надо, согласен. А пью я очень не много.

Со временем думаю будут получаться лучше. Спасибо. 

 

objName+"_H",

objName+"_L",

 

Я не о тебе... Я был не сильно трезв когда писал тот ответ.
 
Спасибо Аграменное. 1я Стадия закончена.
 
Подскажите по какой-то причине при изменении параметра indicator_chart_window на indicator_separate_window картинка основного окна не отображается в под окне.
 
Alex_Profit:
Подскажите по какой-то причине при изменении параметра indicator_chart_window на indicator_separate_window картинка основного окна не отображается в под окне.
Нужно индикатор убрать с графика и добавить снова.
 

Подскажите пожалуйста Есть какая то ошибка. Что нужно изменить, чтобы ромбик и крестик рисовались над самим баром, а не на нулевом баре. (на первом баре каждого месяца).

Спасибо. 

 

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

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

Подскажите пожалуйста Есть какая то ошибка. Что нужно изменить, чтобы ромбик и крестик рисовались над самим баром, а не на нулевом баре. (на первом баре каждого месяца).

Спасибо. 

Начните уже учить новый синтаксис, я бы понял старого динозавра, который только на старом языке писал и не имеет никакого желания переучиваться, но только начавши учиться и стоять на морально устаревшем уже несколько лет синтаксисе да с вкраплениями нового, это извращение.

Да и просто начните читать справку, чтобы хоть понимать, что и как. 

 

Дело то понятное, но где новое где старое, Сразу как-то и не вьешь. А справочку читаю, там написано слишком умным языком.

За критику отдельное спасибо. Она помогает двигаться в нужном направлении.

 

Подскажите пожалуйста. Как сделать разметку по квартальным периодам?

Нужна отрисовка вертикальных линий при наступлении данных дат.

1 января. 1 апреля. 1 июля. 1 октября. 

 

Сначала внимательно читай мои слова, затем внимательно читай документацию по языку, в частности раздел "Графические объекты".

В документации чётко сказано какие параметры должны присутствовать при создании графического объекта. Один из них ВРЕМЯ вот эти твои даты и надо всунуть в этот параметр. Для вертикальных линий цена не важна, но обязательна для функции, поэтому надо поставить 0. Никаких трудностей в этом нет.

 
AlexeyVik:

Сначала внимательно читай мои слова, затем внимательно читай документацию по языку, в частности раздел "Графические объекты".

В документации чётко сказано какие параметры должны присутствовать при создании графического объекта. Один из них ВРЕМЯ вот эти твои даты и надо всунуть в этот параметр. Для вертикальных линий цена не важна, но обязательна для функции, поэтому надо поставить 0. Никаких трудностей в этом нет.

Не знаю как сделать. Подскажите пожалуйста. Максимальный период это месяц.

В переменную t_Line. нужно вставить значение 1й,2й,3й,4й, кв.

Не могу понять.

Буду признателен. 

 

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

}


Причина обращения: