Товарищи программисты, помогите правильно написать скрипт.

 

Привет всем, я написал небольшой советник, но так как не смыслю в программировании, он работает некорректно.

Суть советника - при выполнении условия Создавать объект, Издавать звук, Писать комментарий и отправлять пуш уведомление.

Проблема - Звук воспроизводиться не при наступлении условия, а когда запускается терминал о_о. А объект создается только 1 раз, после активации советника, а все последующие срабатывания советника выполняются правильно только две функции - комментарий и пуш уведомление.

Помогите сделать так что бы звук воспроизводился, и объект создавался - каждый раз при наступлении условия.

Спасибо

вот сам скрипт

п.с. - когда я пару лет назад использовал скрипт только с двумя функциями - Звук и комментарий -Всё работало правильно, а теперь проблема :(

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

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

  {
ObjectCreate ("Arrow 14970",OBJ_ARROW, 0, Time[1], High[1]+2*r/100000);
ObjectSet ("Arrow 14970", OBJPROP_ARROWCODE, 252);
ObjectSet("Arrow 14970", OBJPROP_WIDTH, 5);
ObjectSet("Arrow 14970", OBJPROP_COLOR, Lime);  

PlaySound ("expert1.wav");

Print(" DANGER ", r," и ", f );

SendNotification( "DANGER!"+DoubleToStr(clo,Digits) );
 }

 return (0) ;
   }
 

Для отслеживания наступления события нужен или индикатор или советник или скрипт зацикливают.

Скрипт запускается сразу и если не зациклен - завершается.

 
elchoopo:

Это и есть советник
значит перепроверяем условие...
 
ktest0:
значит перепроверяем условие...

Условие советник видит нормально, при выполнении условия прописывается комментарий и отправляется уведомление. не работает только звуковое оповещение и не создается объект (
 

что говорит GetLastError() после ObjectCreate ?

и где расположен файл expert1.wav?

 
ktest0:

что говорит GetLastError() после ObjectCreate ?

Эту функцию я особо не понимаю ..


ktest0:

и где расположен файл expert1.wav?

в папке sound с остальными звуками, он воспроизводиться нормально, только всего 1 раз так же как и объект
 

Пишет ошибку 4200 "Обьект уже существует". Вроде надо или новый создавать, или старый передвинуть на новое место, куда детектор покажет.


А лучше оформить в виде индикатора, там этот символ буфером рисует неограниченное количество раз.

Непонятно только как "раньше работало".

 
Попытка многократного создания объекта с одним именем.
 
tara:
Попытка многократного создания объекта с одним именем.

Это я понял, а как это исправить ? :о

 
evillive:

Пишет ошибку 4200 "Обьект уже существует". Вроде надо или новый создавать, или старый передвинуть на новое место, куда детектор покажет.


А лучше оформить в виде индикатора, там этот символ буфером рисует неограниченное количество раз.

Непонятно только как "раньше работало".


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

Передвигать объект мне не нужно так как он нужен именно для отслеживания количества срабатываний на графике.

С индикаторами я не знаю как работать :(

 
elchoopo:

Это я понял, а как это исправить ? :о


Добавить в имя что-нибудь уникальное: текущее время, номер объекта и т.п.