Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нашел интересную программу? Опубликуй ее в CodeBase - миллионы трейдеров оценят это!
NIKUA
14
NIKUA 2014.09.04 07:58 

В коде программы, после открытия любого ордера, необходимо предотвратить открытие других ордеров пока не будет закрыт текущий, открытый.

Выглядит примерно так:

 

if( OrderSelect(ticket_sell, SELECT_BY_TICKET)==true)  // Что тут поменять( заменить), чтоб выполнялся return пока открыт ордер, не используя операторов цикла?

        {

          return;

        }  

if(s0>Ask && s1<C1)

       {

         ticket_sell=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,Bid+3000*Point,Bid-3000*Point);

        

       } 

        

Boris
3883
Boris 2014.09.04 09:18  
Просто перед открытием поставьте условие: if(OrdersTotal() == 0) 
Vitalie Postolache
11075
Vitalie Postolache 2014.09.04 09:36  

А чего вас циклы пугают?

borilunad:
Просто перед открытием поставьте условие: if(OrdersTotal() == 0) 
Это работает только в тестере или только если на счёте больше никто не торгует, ни руками, ни программно. Как только появляются "чужие" ордера, пусть даже отложенные, а не рыночные, всё, путаница. Хотя если задача в блокировании работы советника, можно и так.


NIKUA
14
NIKUA 2014.09.04 12:57  

Большое Спасибо за ответы!

Только в моём случае не: if(OrdersTotal() == 0) , а if(OrdersTotal() > 0). Протестировать удалось, в чем и заключалась задача, но evillive прав, в работе этот метод не згодится, так как торгуют другие  советники, ордера открыты часто.

Буду искать другой способ. 

Что по поводу циклов, у меня они в тестере намертво зависают. Опыта у меня мало. 

Boris
3883
Boris 2014.09.04 14:19  
evillive:

А чего вас циклы пугают?

Это работает только в тестере или только если на счёте больше никто не торгует, ни руками, ни программно. Как только появляются "чужие" ордера, пусть даже отложенные, а не рыночные, всё, путаница. Хотя если задача в блокировании работы советника, можно и так.



Это как минимум! Он как просил, я так же подсказал! Если нужны различные варианты, то у меня на это работает цикл для сбора всей необходимой информации!
Boris
3883
Boris 2014.09.04 14:27  
NikUA:

Большое Спасибо за ответы!

Только в моём случае не: if(OrdersTotal() == 0) , а if(OrdersTotal() > 0). Протестировать удалось, в чем и заключалась задача, но evillive прав, в работе этот метод не згодится, так как торгуют другие  советники, ордера открыты часто.

Буду искать другой способ. 

Что по поводу циклов, у меня они в тестере намертво зависают. Опыта у меня мало. 


Причину зависания ищите в своём коде! У меня работают 4 цикла в старте, не считая циклов в вынесенных функциях, и ничего не зависает! И тестируйте не на всех тиках, а на открытии бара на М1!
NIKUA
14
NIKUA 2014.09.04 16:11  
borilunad:

Причину зависания ищите в своём коде! У меня работают 4 цикла в старте, не считая циклов в вынесенных функциях, и ничего не зависает! И тестируйте не на всех тиках, а на открытии бара на М1!

благодарю!
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий