CreateObject

 
не понимаю в чем дело ! даже на самом простом заедает мне надо рисовать обекты, в большом количстве а по какой то причине либо они вовсе не рисуются либи ресутся тока первый ! там что какой то особый подход нужен !
//+------------------------------------------------------------------+
//|                                                          zzz.mq4 |
//|                                                             zzzz |
//|                                                              111 |
//+------------------------------------------------------------------+
#property copyright "zzz"
#property link      "zz@ewe.ru"
 
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Black
#property indicator_color2 Red
//---- input parameters
extern int       Up=2;
extern int       Down=2;
extern int       Norm=4;
//---- buffers
double UpFractal[];
double DownFractal[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,UpFractal);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,DownFractal);
   SetIndexDrawBegin(0,Up);
   SetIndexDrawBegin(1,Down);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
     int i,j,i_min,counted_bars=IndicatorCounted();
//----
       if(Bars<=Up+1 ||Bars<=Down+1 ) return(0);
 
   i=Bars;  
   if(counted_bars>0)
   i -= counted_bars;
   
   double Up,Down,oldUp,oldDown;
   datetime First, Second;
   bool start=FALSE;
   string nameUP;
   
   
   
      while(i>=0)
     {
     
      if(start==TRUE && iFractals(NULL, 0, MODE_UPPER,i)>0)
      {
      nameUP="UP_"+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
      ObjectCreate(nameUP, OBJ_TREND, 0, First, oldUp, Time[i], High[i]);
      ObjectSet(nameUP, OBJPROP_COLOR, Blue);
      ObjectSet(nameUP, OBJPROP_STYLE, DRAW_LINE);
      ObjectSet(nameUP, OBJPROP_RAY, 0);
      ObjectSet(nameUP,OBJPROP_WIDTH,3);
      First=Time[i];
      oldUp=High[i];
      Print("i"+i+" start=="+start+" First= "+First+" oldUp ="+oldUp); 
      
      }
      if(start==FALSE && iFractals(NULL, 0, MODE_UPPER,i)>0)
      {  
      Print("start==FALSE && iFractals(NULL, 0, MODE_UPPER,i)>0");   
       oldUp=NormalizeDouble(iFractals(NULL, 0, MODE_UPPER,i), Norm);
       First=Time[i];
       start=TRUE;
      Print("start=="+start+" First= "+First+" oldUp ="+oldUp); 
       
      }
  
        i--;
     }
 
 
//----
   return(0);
  }
//+------------------------------------------------------------------+

в принцепе и со скриптом также не действует

 
у объектов должны быть разные имена, например можно сделать так:
ObjectCreate(nameUP+i, OBJ_TREND, 0, First, oldUp, Time[i], High[i]);
 
ar4i:
не понимаю в чем дело ! даже на самом простом заедает мне надо рисовать обекты, в большом количстве а по какой то причине либо они вовсе не рисуются либи ресутся тока первый ! там что какой то особый подход нужен !
Или так:
//+------------------------------------------------------------------+
//|                                                          zzz.mq4 |
//|                                                             zzzz |
//|                                                              111 |
//+------------------------------------------------------------------+
#property copyright "zzz"
#property link      "zz@ewe.ru"
 
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Black
#property indicator_color2 Red
//---- input parameters
extern int       Up=2;
extern int       Down=2;
//---- buffers
double UpFractal[];
double DownFractal[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,UpFractal);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,DownFractal);
   SetIndexDrawBegin(0,Up);
   SetIndexDrawBegin(1,Down);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
ObjectsDeleteAll( EMPTY, OBJ_TREND); 
//----
   return(0);
  }
//--------------------------------------------------------------------
   double oldUp,oldDown; // Предыдущий Up, Down
   datetime First, Second;       // Время текущего, предыдущего
   bool start=FALSE;
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
     int i,j,i_min,counted_bars=IndicatorCounted();
     int Norm = MarketInfo(Symbol(),MODE_DIGITS);
//----
       if(Bars<=Up+1 ||Bars<=Down+1 ) return(0);
 
   i=Bars;  
   if(counted_bars>0)
   i -= counted_bars;
   
 
   string nameUP;                // Уникальное имя тренд. отрезка
   
   
   
      while(i>=0) 
     {
     
      if(start && iFractals(NULL, 0, MODE_UPPER,i)>0) // Есть фрактал на i-м баре
      {
      First=Time[i];
      nameUP="UP_"+ Second;//TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS); // Имя отрезка 
      ObjectCreate(nameUP, OBJ_TREND, 0, Second, oldUp, First, High[i]); // 
      ObjectSet(nameUP, OBJPROP_COLOR, Blue);
      ObjectSet(nameUP, OBJPROP_STYLE, DRAW_LINE);
      ObjectSet(nameUP, OBJPROP_RAY, 0);
      ObjectSet(nameUP,OBJPROP_WIDTH,3);
      Second=First;
      oldUp=High[i];
      }
      if(!start && iFractals(NULL, 0, MODE_UPPER,i)>0)
      {                                                  // Самый первый фрактал
       oldUp=NormalizeDouble(iFractals(NULL, 0, MODE_UPPER,i), Norm);
       Second=Time[i];
       start=TRUE;         // до новой инициализации индикатора
      }
  
        i--;
     }
 
 
//----
   return(0);
  }
//+------------------------------------------------------------------+