Маленькая мелочь, которую не могу исправить

 
bool DeleteObjects()                                                     //
  {                                                                      //
   for(int li=Bars-1; li>=0; li--)                                       //
     {                                                                   //
      ObjectDelete("Pivot"+li);                                          //
      ObjectDelete("Price");                                             //
     }                                                                   //
   for(int i=??;i>=0;i--)
     {
      ObjectDelete("Price");
     }

   ObjectDelete("Price");                                                //  
   ObjectDelete("Pivot");                                           //
   return 0;                                                             //
  }                                                                      //
  Вот значит удаление объектов ... из объектов у меня две линии Pivot и Price ...обе из них расчитываются на всех днях ... мне же надо чтобы Price расчитывалась только на сегодня, а на остальных днях нет. Думаю реализавать это удалением объектов (вот начал писать второй цикл и тут же застопорился). Ни много не пойму как это сделать. Буду благодарен за помощь. Напишите пожалуйста как должен выглядеть этот код
 

Линии не могут рассчитываться: линии можно нарисовать, переместить и удалить. 

Рисуйте только одну линию Pivot и одну Price на последнем дне, и на следующем дне просто перемещайте линии. Удалять не нужно.

 
Karputov Vladimir:

Линии не могут рассчитываться: линии можно нарисовать, переместить и удалить. 

Рисуйте только одну линию Pivot и одну Price на последнем дне, и на следующем дне просто перемещайте линии. Удалять не нужно.

звучит вроде просто, но я всеж не догоняю ...а разве нельзя просто задать интервал времени, на котором линия просто не будет отображаться? или просто в данном интервале удалится?
 
dacool731:
звучит вроде просто, но я всеж не догоняю ...а разве нельзя просто задать интервал времени, на котором линия просто не будет отображаться? или просто в данном интервале удалится?
Линия какая: вертикальная или горизонтальная? Или Вы вообще прямоугольники рисуете? Картинку вставьте, пожалуйста (Форум: как вставить картинку).
 
Karputov Vladimir:
Линия какая: вертикальная или горизонтальная? Или Вы вообще прямоугольники рисуете? Картинку вставьте, пожалуйста (Форум: как вставить картинку).

изображение слегка не стабильное...почему-то линии моргают и поэтому не на все дни отобразились (на самом деле они отображаются на всех днях) ...ну а так это линии горизонтальные ...красная - Price (она на каждый день иллюстрирует параметр Price)... она должна показывать только на сегодняшний день...а завтра этот рисунок удаляется, параметр Price пересчитывется и рисуется новая линия только уже для завтрашнего дня ...расписал много, а суть то в том чтобы просто линия Price "образалась" и удалилась до сегодняшнего дня

 

Горизонтальная линия - это отрезок ограниченный двумя датами. При создании линии Вы указываете эти даты. Если нужно перерисовать линии - можете её удалить и нарисовать с тем-же именем, но с другими ограничивающими датами.

Покажите, пожалуйста, код в котором Вы создаёте горизонтальную линию.

 
Karputov Vladimir:

Горизонтальная линия - это отрезок ограниченный двумя датами. При создании линии Вы указываете эти даты. Если нужно перерисовать линии - можете её удалить и нарисовать с тем-же именем, но с другими ограничивающими датами.

Покажите, пожалуйста, код в котором Вы создаёте горизонтальную линию.

extern int    NumberOfDays=101; //   - количество дней                   //
extern double Bold=1;           //   - толщина линий                     //
extern color  PricColor=Red;    //   - цвет NowPrice                     //
extern color  PivoColor=Blue;   //   - цвет PivotPoint                   //
//***********************************************************************// Глобальные переменные
int      Counter;      //   - счётчик баров                              //
double   HighDay,      //   - максимум дня                               //
         LowDay,       //   - минимум дня                                //
         PriceNow,     //   - цена на данный момент времени              //
         OpenDay,      //   - цена открытия дня                          //
         Price,        //   - Price=(High+Low+Now)/3                     //
         Pivot;        //   - Pivot=(High+Low+Open)/3                    //
datetime OpenTimeDay,  //   - время открытия дня                         //
         CloseTimeDay; //   - время закрытия дня                         //
//***********************************************************************//
//**********************-Инициализация индикатора-***********************//
//***********************************************************************//
void init()                                                              //
  {                                                                      //
//***********************************************************************// Настройки графического отображения
   DeleteObjects();                                                      //
//***********************************************************************// Инициализация графических объектов
   ObjectInit(True);                                                     //
  }                                                                      //
//***********************************************************************//
//********************-Торговая сессия "Pivot" точек-********************//
//***********************************************************************//
void start()                                                             //
  {                                                                      //
//***********************************************************************// Проверка работы индикатора
   if(NumberOfDays>iBars(NULL,PERIOD_D1)||NumberOfDays<0)                //
     {                                                                   //
      Alert("Недостаточно информации для работы индикатора.");           //
     }                                                                   //
   if(ObjectFind("Pivot"+0)==-1) ObjectInit(True);                       //
   for(int li=NumberOfDays-1; li>=0; li--)                               //
     {                                                                   //
      if(li==0)                                                          //
        {                                                                   //
         HighDay      =iHigh(NULL,PERIOD_D1,1);    //   - максимум дня        //
         LowDay       =iLow(NULL,PERIOD_D1,1);     //   - минимум дня           //
         OpenDay      =iOpen(NULL,PERIOD_D1,0);    //   - цена открытия дня      //
         PriceNow     =Bid;                        // iClose(NULL,PERIOD_CURRENT,0)//
         Price        =(HighDay+LowDay+PriceNow)/3;//   - Price                  //
         Pivot        =(HighDay+LowDay+OpenDay)/3; //   - Pivot                //
         OpenTimeDay  =iTime(NULL,PERIOD_D1,0);    //   - время открытия дня  //
         CloseTimeDay =iTime(NULL,0,0);            //   - время закрытия дня  //
        }                                                                     //
      else                                                                    //
        {                                                                     //
         HighDay      =iHigh(NULL,PERIOD_D1,li+1); //   - максимум дня        //
         LowDay       =iLow(NULL,PERIOD_D1,li+1);  //   - минимум дня          //
         OpenDay      =iOpen(NULL,PERIOD_D1,li);   //   - цена открытия дня      //
         PriceNow     =Bid;                        // iClose(NULL,PERIOD_CURRENT,li)//
         Pivot        =(HighDay+LowDay+OpenDay)/3; //   - Pivot                   //
         Price        =(HighDay+LowDay+PriceNow)/3;//   - Price                 //
         OpenTimeDay  =iTime(NULL,PERIOD_D1,li);   //   - время открытия дня  //
         CloseTimeDay =iTime(NULL,PERIOD_D1,li-1); //   - время закрытия дня //
        }                                                                   //
//*************************************************************************// Прорисовка объектоа
         DrawObjects("Pivot"+li,OpenTimeDay,CloseTimeDay,Pivot);          //
         DrawObjects("Price"+li,OpenTimeDay,CloseTimeDay,Price);         //
     }                                                                   //
  }                                                                      //
//***********************************************************************//
//**************************-Удаление индикатора-************************//
//***********************************************************************//
void deinit()                                                            //
  {                                                                      //
   DeleteObjects();                                                      //
  }                                                                      //
//***********************************************************************//
//*****************************-Подпрограмма-****************************//
//***********************************************************************// Инициализация графических объектов
void ObjectInit(bool TruFal)                                             //
  {                                                                      //
//***********************************************************************// Создание графических объектов
   Counter=IndicatorCounted();                                           //
   for(int li=NumberOfDays-Counter-1; li>=0; li--)                       //
     {                                                                   //
      CreateObjects("Pivot"+li, PivoColor);                              //
      CreateObjects("Price"+li, PricColor);                              //
     }                                                                   //
  }                                                                      //
                                                                         //
bool CreateObjects(string obj_name,color obj_color)                      //
  {                                                                      //
   ObjectCreate(obj_name, OBJ_RECTANGLE, 0, 0,0, 0,0);                   //
   ObjectSet(obj_name, OBJPROP_STYLE, STYLE_SOLID);                      //
   ObjectSet(obj_name, OBJPROP_COLOR, obj_color);                        //
   ObjectSet(obj_name, OBJPROP_BACK, True);                              //
   return 0;                                                             //
  }                                                                      //
//***********************************************************************// Прорисовка графических объектов
bool DrawObjects(string o_name, datetime ot, datetime ct,double pivot)   //
  {                                                                      //
   ObjectSet(o_name, OBJPROP_TIME1 , ot);                                //
   ObjectSet(o_name, OBJPROP_PRICE1, pivot+Point*Bold/2);                //
   ObjectSet(o_name, OBJPROP_TIME2 , ct);                                //
   ObjectSet(o_name, OBJPROP_PRICE2, pivot-Point*Bold/2);                //
   return 0;                                                             //
  }                                                                      //
//***********************************************************************// Удаление графических объектов
bool DeleteObjects()                                                     //
  {                                                                      //
   for(int li=Bars-1; li>=0; li--)                                       //
     {                                                                   //
      ObjectDelete("Pivot"+li);                                          //
      ObjectDelete("Price");                                             //
      ObjectDelete("PivotPoint");                                        //
     }                                                                   //
   for(int i=-1;i>=0;i--)
     {
      ObjectDelete("Price");
     }

   ObjectDelete("Price");                                                //  
   ObjectDelete("PivotPoint");                                           //
   return 0;                                                             //
  }                                                                      //
 
dacool731:
Снова "четвёрочный" код! Люди, пора переходить на пятёрку.  Если есть желающие, можете дальше отвечать в этой теме.
 
dacool731:
  Вот значит удаление объектов ... из объектов у меня две линии Pivot и Price ...обе из них расчитываются на всех днях ... мне же надо чтобы Price расчитывалась только на сегодня, а на остальных днях нет. Думаю реализавать это удалением объектов (вот начал писать второй цикл и тут же застопорился). Ни много не пойму как это сделать. Буду благодарен за помощь. Напишите пожалуйста как должен выглядеть этот код

проще вообще не рисовать, там где не надо. Т.е. нужно в цикл вложить анализ условия - сегодня/не сегодня...

Внутри условия рисуем. Вне условия - удаляем.

 
new-rena:
проще вообще не рисовать, там где не надо. Т.е. нужно в цикл вложить анализ сегодня/не сегодня...
я вроде как решил линию просто ограничить https://www.mql5.com/ru/forum/62302 и все равно немного встрял
Не могу дописать самую малость
Не могу дописать самую малость
  • www.mql5.com
Часть кода по рисованию горизонтальной линии. - - Категория: технические индикаторы и анализ рынка форекс
 
dacool731:

изображение слегка не стабильное...почему-то линии моргают и поэтому не на все дни отобразились (на самом деле они отображаются на всех днях) ...ну а так это линии горизонтальные ...красная - Price (она на каждый день иллюстрирует параметр Price)... она должна показывать только на сегодняшний день...а завтра этот рисунок удаляется, параметр Price пересчитывется и рисуется новая линия только уже для завтрашнего дня ...расписал много, а суть то в том чтобы просто линия Price "образалась" и удалилась до сегодняшнего дня

Что-то не могу понять - вы этого хотели добиться?
Файлы:
2_PP.ex4  13 kb
Причина обращения: