Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересует мнение трейдеров? Заведи опрос на форуме!
reutoodor
56
reutoodor 2013.10.18 18:34 

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

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

Проблема - Звук воспроизводиться не при наступлении условия, а когда запускается терминал о_о. А объект создается только 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) ;
   }
ktest0
631
ktest0 2013.10.18 18:54  

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

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

ktest0
631
ktest0 2013.10.18 18:57  
elchoopo:

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

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

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

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

reutoodor
56
reutoodor 2013.10.18 19:29  
ktest0:

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

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


ktest0:

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

в папке sound с остальными звуками, он воспроизводиться нормально, только всего 1 раз так же как и объект
Vitalie Postolache
12129
Vitalie Postolache 2013.10.18 19:37  

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


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

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

Алексей Тарабанов
7196
Алексей Тарабанов 2013.10.18 19:47  
Попытка многократного создания объекта с одним именем.
reutoodor
56
reutoodor 2013.10.18 20:02  
tara:
Попытка многократного создания объекта с одним именем.

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

reutoodor
56
reutoodor 2013.10.18 20:06  
evillive:

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


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

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


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

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

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

Алексей Тарабанов
7196
Алексей Тарабанов 2013.10.18 20:15  
elchoopo:

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


Добавить в имя что-нибудь уникальное: текущее время, номер объекта и т.п.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий