подскажите каким образом ... - страница 3

 
Вот бы такую на МТ. Генератор генерит, программа ходит по шагам и ждет внешних событий: прихода тика, появления объекта на окне. Быстро обрабатывает и ходит дальше. Красота :)))

В сущности, в моём случае так и происходит.
Зацикленный скрипт только тем и занимается, что безостановочно ходит по кругу, последовательно опрашивая всё своё окружение, выискивая в этом окружении какие бы то ни было изменения. А при нахождении изменений - реагирует на них. В том-то и ценность этой "зацикленой" технологии.

А подгонять торговый сервер никак? Только сидеть и ждать как он отреагирует?

В этой части никак. Это от событий на стороне трейдера никак не зависит.
Что может сделать трейдер, если проблемы с доставкой информ. пакетов из Новосибирска в Москву происходят где-то в Челябинске? Или что он может сделать, если завис сервер, просто не отвечает?

Каждый решает эту проблему по-своему и в зависимости от нужды.
Скажем, если надо просто закрыть один-единственный ордер, то можно просто почаще отсылать приказы (вообще-то, так делать не правильно, но в данном случае мы говорим о техн. возможности), а если надо открыть ордер и один приказ отправлен на сервер и не получен ответ, то.. что? отправить ещё один приказ? (риск, что открыто будет 2 ордера) или не отправлять? - риск, что не откроется ни один.
В общем, оношения с сервером штука специфическая и универсального решения не имеет.
 
Скрипт от советника отличается только тем, что после прихода тика (запускаются они оба одинаково - по факту прихода тика) скрипт, когда дойдёт до return, выгружается, а эксперт в этой же ситуации переходит в ждущий режим и снова запускается следующим тиком. В остальном они практически одинаковы.
Скрипт на тики ни как не реагирует
Оговорился? =)
 
Вот тебе кусок кода советника, который удаляет отложенные ордера, когда один из них сработал. Если у тебя на одной валюте только один советник стоит, то МагикНомер можешь убрать.
      for(cnt=0;cnt<OrdersTotal();cnt++)
         {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()&& OrderMagicNumber()==1)  
            { 
            for(i=0;i<OrdersTotal();i++)
               {
               OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
               if(OrderType()>OP_SELL && OrderSymbol()==Symbol()&& OrderMagicNumber()==1){result=OrderDelete(OrderTicket());return(0);}   
               }
            }
         }


Но если несколько, то не забудь задать его при постановке.

 
Скрипт от советника отличается только тем, что после прихода тика (запускаются они оба одинаково - по факту прихода тика) скрипт, когда дойдёт до return, выгружается, а эксперт в этой же ситуации переходит в ждущий режим и снова запускается следующим тиком. В остальном они практически одинаковы.
Скрипт на тики ни как не реагирует
Оговорился? =)

Нет, пожалуй, не оговорился. Это мой прокол. Скрипт-то у меня с самого начала зациклен. Вот я и не уделил этой мысли никакого внимания.
Конечно же, когда скрипт присоединяется к окну, он начинает работать тотчас же. Тики тут ни при чём.
Мда..:)
 
Большое спасибо Roger. Как раз то, что нужно. Я так понимаю, когда на экране много графиков разных валют, то на каждом графике отложенные ордера с одинаковыми магик номерами, а на каждую валюту свой магик номер. Да?
 
Нет. По валютам он и так проводит селекцию. На один тип советника свой магик номер. Он может работать на всех валютах. А вот если ты на ту же валюту, но на другой график сажаешь другой советник, тогда меняй магик номер.
 
спасибо :))
Причина обращения: