Скачать MetaTrader 5

Подскажите как реализовать.

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

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

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

 

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
3947
Boris  
Просто перед открытием поставьте условие: if(OrdersTotal() == 0) 
Vitalie Postolache
12426
Vitalie Postolache  

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

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


NIKUA
14
NIKUA  

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

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

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

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

Boris
3947
Boris  
evillive:

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

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



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

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

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

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

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


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

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

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