Подскажите правильно ли я написал скрипт?

 

Всем привет, я не шарю в языке mql4, поэтому не знаю правильно ли я написал скрипт.

Суть в том что терминал должен издавать Звук, если Бар подходит под условия.


Вот скрипт:


void start()
{
if(((High[1]-Low[1])> 3*(Open[1]-Close[1]))&&((Open[1]-Close[1])> 3)) // цена high минус low больше чем
// цена открытия минус цена закрытия умноженное на три
// цена открытия минус цена закрытия больше чем три
MessageBox("1-1 *Danger!!!* ","Бар №");
PlaySound ("alert.wav");
return(0);
}

 
void start()
{
  if(((High[1]-Low[1])> 3*(Open[1]-Close[1]))&&((Open[1]-Close[1])> 3)){ // цена high минус low больше чем
     // цена открытия минус цена закрытия умноженное на три
     // цена открытия минус цена закрытия больше чем три
     MessageBox("1-1 *Danger!!!* ","Бар №");
     PlaySound ("alert.wav");
  }
return;
}
 
Если использовать как скрипт, то он бесполезен. Если как советник, то условие (Open[1]-Close[1])> 3 не будет работать, и когда исправишь, то после наступления условия, он замучает тебя сигналами до прихода следующего бара.
 
FAQ:

Спасибо.


Roger:
Если использовать как скрипт, то он бесполезен. Если как советник, то условие (Open[1]-Close[1])> 3 не будет работать, и когда исправишь, то после наступления условия, он замучает тебя сигналами до прихода следующего бара.

Я немного изменил код, он работает как мне нужно, Но ты прав он сигналит при каждом тике, можешь подсказать как сделать чтобы звук был только 1 раз ?

вот код :


void start()
{
double a=((Open[1]-Close[1])*10000);
double r=((High[1]-Low[1])*10000);
double ho=((High[1]-Open[1])*10000);
double hc=((High[1]-Close[1])*10000);
double ol=((Open[1]-Low[1])*10000);
double cl=((Close[1]-Low[1])*10000);
double f= a, s;
s=MathAbs(f); // Вывод: абсолютная величина -a есть a

if(((3*f)< r )&&(f > 3)&&(((ho<3)||(hc<3)&&(Low[1]<Low[2]))||((ol<3)||(cl<3)&&(High[1]>High[2])))) // условие


{Print(" DANGER ", r," и ", f );
PlaySound ("expert1.wav");}

return ;

Спасибо.
 
void start()
 {
static int newbar;
if(newbar==Time[0])return;
newbar=Time[0];
 double a=((Open[1]-Close[1])*10000); 
 double r=((High[1]-Low[1])*10000);
 double ho=((High[1]-Open[1])*10000);
 double hc=((High[1]-Close[1])*10000);
 double ol=((Open[1]-Low[1])*10000);
 double cl=((Close[1]-Low[1])*10000);
 double f= a, s;
 s=MathAbs(f); // Вывод: абсолютная величина -a есть a 

 if(((3*f)< r )&&(f > 3)&&(((ho<3)||(hc<3)&&(Low[1]<Low[2]))||((ol<3)||(cl<3)&&(High[1]>High[2])))) // условие 


 {Print(" DANGER ", r," и ", f );
 PlaySound ("expert1.wav");}

 return ;
Причина обращения: