Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся активность участников MQL5.community на одной странице!
Kilnart
260
Kilnart 2014.01.25 08:42 

Привет ребят. Код простой (в моем восприятии), но почему то не работает.

Идея такая, если есть UP свеча, ставится стрелка вверх, Down свеча стрелка вниз. Создаю цикл, но не понимаю почему он работает не правильно.

   string name;
   
   for (int i = 0; i<=100; i++)
   {
      if (Open[i]<Close[i])
      {
         name=Open[i];
         
         ObjectCreate(name,OBJ_ARROW,0,Time[i],Low[i]);
         ObjectSet(name,OBJPROP_ARROWCODE,SYMBOL_ARROWUP);
      }
      else if (Close[i]<Open[i])
      {
         name=Close[i];
         
         ObjectCreate(name,OBJ_ARROW,0,Time[i],High[i]);
         ObjectSet(name,OBJPROP_ARROWCODE,SYMBOL_ARROWDOWN);
      }
   }

http://clip2net.com/s/6FuSPl

все ошибки отмечать не буду, смысл понятен.

что я не учитываю, где ошибка?

Vitalie Postolache
11038
Vitalie Postolache 2014.01.25 08:47  
kilnart:

Привет ребят. Код простой (в моем восприятии), но почему то не работает.

Идея такая, если есть UP свеча, ставится стрелка вверх, Down свеча стрелка вниз. Создаю цикл, но не понимаю почему он работает не правильно.

http://clip2net.com/s/6FuSPl

все ошибки отмечать не буду, смысл понятен.

что я не учитываю, где ошибка?

Потому что лень подумать. Клоз на нулевом баре непостоянен пока он не закрыт а значит и определить не получится, вверх или вниз (может изначально рвануть вниз, а закрыться вверх). Надо цикл на один бар назад сдвинуть.
Kilnart
260
Kilnart 2014.01.25 08:49  

дело не в лени, учусь пока что, не все понимаю.

   for (int i = 0-1; i<=100; i++)

имеется ввиду вот так надо сделать?

Vitalie Postolache
11038
Vitalie Postolache 2014.01.25 08:50  
kilnart:

дело не в лени, учусь пока что, не все понимаю.

имеется ввиду вот так надо сделать?


for (int i = 1; i<=100; i++)
Kilnart
260
Kilnart 2014.01.25 08:52  
   string name;
   
   for (int i = 1; i<=100; i++)
   {
      if (Open[i]<Close[i])
      {
         name=Open[i];
         
         ObjectCreate(name,OBJ_ARROW,0,Time[i],Low[i]);
         ObjectSet(name,OBJPROP_ARROWCODE,SYMBOL_ARROWUP);
      }
      else if (Close[i]<Open[i])
      {
         name=Close[i];
         
         ObjectCreate(name,OBJ_ARROW,0,Time[i],High[i]);
         ObjectSet(name,OBJPROP_ARROWCODE,SYMBOL_ARROWDOWN);
      }
   }

http://clip2net.com/s/6Fv4yS

ничего не изменилось

Vitalie Postolache
11038
Vitalie Postolache 2014.01.25 08:54  
это индикатор?
Kilnart
260
Kilnart 2014.01.25 08:56  
скрипт
Vitalie Postolache
11038
Vitalie Postolache 2014.01.25 09:07  
А не проще индикатор сделать?
Kilnart
260
Kilnart 2014.01.25 09:12  
может и проще, но почему мой код не работает? что в нем не так?
Комбинатор
15641
Комбинатор 2014.01.25 11:02  
надо делать name = Time[i]
Vitalie Postolache
11038
Vitalie Postolache 2014.01.25 11:11  

оформить индикатор в форме скрипта может и можно, но разумнее всё же в виде работающего индикатора, чем терять время и нервы разбираясь чего это скрипт не работает:

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Red

double val1[];
double val2[];

int init()
  {
   IndicatorBuffers(2);
   
   SetIndexStyle(0,DRAW_ARROW,EMPTY,1);
   SetIndexArrow(0,241);
   
   SetIndexStyle(1,DRAW_ARROW,EMPTY,1);
   SetIndexArrow(1,242);
   
   SetIndexBuffer(0,val1);
   SetIndexLabel(0,"UP!");
   SetIndexBuffer(1,val2);
   SetIndexLabel(1,"DOWN!");
//---
   return(0);
  }

int deinit()
  {
   return(0);
  }

int start()
{
   int limit, counted_bars=IndicatorCounted();
   if(counted_bars>0) counted_bars--;

   limit=Bars-counted_bars-1;

   for (int i = limit; i>=0; i--)
   {
      val1[i]=0;val2[i]=0;
      if (Open[i]<Close[i])
      {
         val1[i]=Low[i];
      }
      if (Open[i]>Close[i])
      {
         val2[i]=High[i];
      }
   } 
   return(0);
}

/ /12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий