Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Форматируй текст в редакторе сообщений. Это удобно!
dacool731
51
dacool731 2015.08.03 19:39 
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 расчитывалась только на сегодня, а на остальных днях нет. Думаю реализавать это удалением объектов (вот начал писать второй цикл и тут же застопорился). Ни много не пойму как это сделать. Буду благодарен за помощь. Напишите пожалуйста как должен выглядеть этот код
Vladimir Karputov
Модератор
45792
Vladimir Karputov 2015.08.03 19:51  

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

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

dacool731
51
dacool731 2015.08.03 19:53  
Karputov Vladimir:

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

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

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

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

Vladimir Karputov
Модератор
45792
Vladimir Karputov 2015.08.03 20:54  

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

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

dacool731
51
dacool731 2015.08.03 20:56  
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;                                                             //
  }                                                                      //
Vladimir Karputov
Модератор
45792
Vladimir Karputov 2015.08.03 21:00  
dacool731:
Снова "четвёрочный" код! Люди, пора переходить на пятёрку.  Если есть желающие, можете дальше отвечать в этой теме.
Renat Akhtyamov
4822
Renat Akhtyamov 2015.08.03 21:53  
dacool731:
  Вот значит удаление объектов ... из объектов у меня две линии Pivot и Price ...обе из них расчитываются на всех днях ... мне же надо чтобы Price расчитывалась только на сегодня, а на остальных днях нет. Думаю реализавать это удалением объектов (вот начал писать второй цикл и тут же застопорился). Ни много не пойму как это сделать. Буду благодарен за помощь. Напишите пожалуйста как должен выглядеть этот код

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

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

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

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

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