Скачать MetaTrader 5

Вроде все просто, но не работает

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

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

Идея такая, если есть 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
12265
Vitalie Postolache  
kilnart:

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

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

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

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

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

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

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

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

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

Vitalie Postolache
12265
Vitalie Postolache  
kilnart:

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

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


for (int i = 1; i<=100; i++)
Kilnart
260
Kilnart  
   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
12265
Vitalie Postolache  
это индикатор?
Kilnart
260
Kilnart  
скрипт
Vitalie Postolache
12265
Vitalie Postolache  
А не проще индикатор сделать?
Kilnart
260
Kilnart  
может и проще, но почему мой код не работает? что в нем не так?
Комбинатор
16033
Комбинатор  
надо делать name = Time[i]
Vitalie Postolache
12265
Vitalie Postolache  

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

#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
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий