[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 580

 
rigonich:

Ура, я , кажется проблему удаления ордеров у себя решил. Отдельной функцией считаю количество "нужных"(подлежащих удалению) ордеров -- Total --, вызываю эту функцию, затем while с условием  ( Total>0) потом, цикл удаления for(int i=Total-1 ;i<=0l;i--), опять ф-я подсчета "нужных" , счетчик попыток удаления с выходом из   while при достижении заданного уровня. Так удаляются все. 
кстати хороший вариант, и пусть этот while гоняет свой цикл до конца света пока не удалит ордера, спасибо, щас попробую.
 

нужно вставить условия НАЛИЧИЯ открытой сделки (одной, без всяких майджиков) в один ряд например, с пересечением средних.

 

нашел это 

============================================== 

int start()

  {

   for(int i=0; i<OrdersTotal(); i++) 

     {

      if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) )

PlaySound ("alert.wav");

   return(0);

  }} 

==============================================

 открытая позиция  есть, а звука нет.

подскажите что не так?  

 

или как проще записать условие:

ЕСЛИ МА 5 пересекает МА 10 и есть открытая позиция - закрыть эту позицию.

 

кажется тут понадобится void.... 

 
lottamer:

да..просто надо эти mqh файлы открывать 4-ым Эдитором...

Если они из учебника по MQL 4, они и будут открываться  4-ым Эдитором . Поместите их в папку includ или переименуйте в  mq4 и поместите в папу эксперт ,основную, если это советник, или папки скриптов или индикаторов соответственно, и открывайте.
 
Desead:
кстати хороший вариант, и пусть этот while гоняет свой цикл до конца света пока не удалит ордера, спасибо, щас попробую.


Если поместить в деинит --не толучится. на ее выполнение в мт 4 отводится 2.5 сек.
 
rigonich:

Если поместить в деинит --не толучится. на ее выполнение в мт 4 отводится 2.5 сек.

чёрт, значит в этом проблема у меня. интересно а как же её тогда обойти ,если удалять мне нужно всю сетку только когда я выгружаю робота...я тут даже ничего не могу придумать получается :(
 
lottamer:

нужно вставить условия НАЛИЧИЯ открытой сделки (одной, без всяких майджиков) в один ряд например, с пересечением средних.

 

нашел это 

============================================== 

int start()

  {

   for(int i=0; i<OrdersTotal(); i++) 

     {

      if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) )

PlaySound ("alert.wav");

   return(0);

  }} 

==============================================

 открытая позиция  есть, а звука нет.

подскажите что не так?  

 

или как проще записать условие:

ЕСЛИ МА 5 пересекает МА 10 и есть открытая позиция - закрыть эту позицию.

 

кажется тут понадобится void.... 


Посмотрите, разрешены ли звуки для МТ в винде, и есть ли файлы в папке  Sound. Но на бстром рынке сн будет работать как будильник.
 
rigonich:

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


не, ну я хоть и новичок, но такие ошибки не делаю. :))

другие эксперты поют как соловьи! в этом же терминале!  

 
Desead:

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

поместить перед вызовом деинит по тому же условию, по которому вызываете деинит.
 
lottamer:


не, ну я хоть и новичок, но такие ошибки не делаю. :))

другие эксперты поют как соловьи! в этом же терминале!  


И еще если это скрипт -- надо чтобы было включено разрешение на торговлю для экспертов, и чтобы в окне, куда вы его бросаете не было других работающих скриптов или экспертов.К тому же он будет " дзенькать " если будут открытые сделки по любому инструменту.
 
rigonich:

поместить перед вызовом деинит по тому же условию, по которому вызываете деинит.


Так деинит вызывается когда я удаляю робота с графика - я это условие по другому не могу отследить.....наверное тогда проще написать отдельный скрипт который удаляет все оставшиеся отложенники, по другому походу никак.

 

 кстати ещё мысль вот по этому поводу:

Ура, я , кажется проблему удаления ордеров у себя решил. Отдельной функцией считаю количество "нужных"(подлежащих удалению) ордеров -- Total --, вызываю эту функцию, затем while с условием  ( Total>0) потом, цикл удаления for(int i=Total-1 ;i<=0l;i--), опять ф-я подсчета "нужных" , счетчик попыток удаления с выходом из   while при достижении заданного уровня. Так удаляются все. 

тут может возникнуть бесконечный цикл если вдруг после момента подсчёта один из ордеров по любой причине  исчезнет