Не могу запустить советник

 
Здравствуйте.Опыт написания советников у меня небольшой,прямо скажем мизерный,поэтому обращаюсь за помощью.Написал небольшой кусок кода,который работает(т.е. считает и печатает в журнал результат),если вставить его в блок init.Но отказывается работать, если его втавить в блок start(т.е. с приходом каждого нового тика)В чём может быть моя ошибка?

Вот этот кусок:

{double a=0;
for(int i=4;i>=0;i--)
{
if (Open[i]<Close[i]) a=(Open[i]-Low[i])+(High[i]-Low[i])+(High[i]-Close[i]);
else a=(High[i]-Open[i])+(High[i]-Low[i])+(Close[i]-Low[i]);
Print("a=",a);
}
}

И ещё маленький вопрос: как мне по-быстрому,не загромоздив программу, сложить 5 полученных значений a?Посоветуйте,если можете.Спасибо.
 

Вот посмотрите у меня все работает:

int init()
  {
//----
 double Summa,a;
for(int i=4;i>=0;i--)
{
 
if (Open[i]<Close[i]) a=(Open[i]-Low[i])+(High[i]-Low[i])+(High[i]-Close[i]);
else a=(High[i]-Open[i])+(High[i]-Low[i])+(Close[i]-Low[i]);
 
 
Print("a=",a);
 
Summa=Summa+a;
}
 
Print("Summa=",Summa);
  
//----
   return(0);
  }
 
Mike:

Вот посмотрите у меня все работает:

int init()
  {
//----
 double Summa,a;
for(int i=4;i>=0;i--)
{
 
if (Open[i]<Close[i]) a=(Open[i]-Low[i])+(High[i]-Low[i])+(High[i]-Close[i]);
else a=(High[i]-Open[i])+(High[i]-Low[i])+(Close[i]-Low[i]);
 
 
Print("a=",a);
 
Summa=Summa+a;
}
 
Print("Summa=",Summa);
  
//----
   return(0);
  }
Спасибо огромное,братишка Майк!:) Будь добр,посоветуй чё-нить по первому моему вопросу...Мне нужно чтобы этот кусок работал с каждым новым тиком,но не получается.Вставляю его в start,но не работает.Или может вообще нельзя так сделать?...
 
bundes писал (а):
Mike:

Вот посмотрите у меня все работает:

int init()
  {
//----
 double Summa,a;
for(int i=4;i>=0;i--)
{
 
if (Open[i]<Close[i]) a=(Open[i]-Low[i])+(High[i]-Low[i])+(High[i]-Close[i]);
else a=(High[i]-Open[i])+(High[i]-Low[i])+(Close[i]-Low[i]);
 
 
Print("a=",a);
 
Summa=Summa+a;
}
 
Print("Summa=",Summa);
  
//----
   return(0);
  }
Спасибо огромное,братишка Майк!:) Будь добр,посоветуй чё-нить по первому моему вопросу...Мне нужно чтобы этот кусок работал с каждым новым тиком,но не получается.Вставляю его в start,но не работает.Или может вообще нельзя так сделать?...


Все работает вот смотри:
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
 double Summa,a;
for(int i=4;i>=0;i--)
{
 
if (Open[i]<Close[i]) a=(Open[i]-Low[i])+(High[i]-Low[i])+(High[i]-Close[i]);
else a=(High[i]-Open[i])+(High[i]-Low[i])+(Close[i]-Low[i]);
 
 
Print("a=",a);
 
Summa=Summa+a;
}
 
Print("Summa=",Summa);
  
//----
   return(0);
  }
 
Нет,Майк,не получаецца..Не пашет.Скажи,когда я создавал советник, там нужно было вместе с названием советника,именем автора вводить внешние параметры.Я их не вводил.Может изза этого не работает?
 
Вот советник целиком.Первые пять строчек написаны от балды.Может быть ниже чего-то не хватает и поэтому не работает?
//+------------------------------------------------------------------+
//| Bundes.mq4 |
//| GOSHA |
//| http://www.gosha.ru |
//+------------------------------------------------------------------+
#property copyright "GOSHA"
#property link "http://www.gosha.ru"

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double Summa,a;
for(int i=4;i>=0;i--)
{
if (Open[i]<Close[i]) a=(Open[i]-Low[i])+(High[i]-Low[i])+(High[i]-Close[i]);
else a=(High[i]-Open[i])+(High[i]-Low[i])+(Close[i]-Low[i]);
Print("a=",a);
Summa=Summa+a;
}
Print("Summa=",Summa);
//----
return(0);
}
 

Мой друг я скопировал твой код и все работает. Быть может ты не ствиш галочку разрешить эксперту торговать?

 
Mike:

Мой друг я скопировал твой код и все работает. Быть может ты не ствиш галочку разрешить эксперту торговать?



Ставлю,Майк,ставлю.Уже все варианты с галками перепробывал))Не печатает советник результат кода в журнал,а когда в init вставлял - печатает.Я занимаюсь программированием 3 день,мне простительно не знать.Может у тебя другая программа?У меня MetaTrader 4.
Где ты скачал свой терминал?
 
А вообще советники разрешены?
Такая реакция бывает когда стоит общий запрет на работу советников. Init работает всегда, а Start только если советники разрешены.
 
bundes:
Mike:

Мой друг я скопировал твой код и все работает. Быть может ты не ствиш галочку разрешить эксперту торговать?



Ставлю,Майк,ставлю.Уже все варианты с галками перепробывал))Не печатает советник результат кода в журнал,а когда в init вставлял - печатает.Я занимаюсь программированием 3 день,мне простительно не знать.Может у тебя другая программа?У меня MetaTrader 4.
Где ты скачал свой терминал?

Я практически уверен что ты накосячил с разрешением экспертов работать. Посмотри поподробнее.
 
БРАТЦЫ,РАБОТАЕТ!!!ЦЕЛУЮ ВСЕХ!ДАНКЕ ШЁН!!!))))
Майк,ещё маленький вопрос если можно.Где ты нашёл функцию Summa?Я всю справку в MT4 облазил и не могу её там найти,чтоб изучить.. .Заранее спасибо..
Причина обращения: