Error 132 || 133

 

Ситуация.

Торговля фьючерсами. Торговля не круглосуточная. Есть ночные перерывы в торговле. Торговый сервер ДЦ в это время возвращает ошибку 133 (trade is disabled (торговля запрещена)). Если следовать рекомендациям разработчиков МТ4, то при такой ошибке нужно прекратить все попытки торговых операций, т.е. блокировать работу советника. Но если его блокировать, то как же он сможет торговать, когда торговля будет разрешена?

Вопрос.

Почему при ночных паузах в торговле ДЦ не применяют ошибку 132 (Рынок закрыт)? Это ошибка торгового сервера или ДЦ могут по своему усмотрению применять ошибку либо 132 (рынок закрыт), либо 133 (торговля запрещена)? Если так, то не следует ли тогда исправить рекомендации, чтобы ошибки 132 и 133 разработчики советников обрабатывали одинаково?

 

<Глупость удалена мной>

Игорь, а IsTradeAllowed() тут не помогает? Вроде как не торговый запрос...

 
KimIV:

Если следовать рекомендациям разработчиков МТ4, то при такой ошибке нужно прекратить все попытки торговых операций, т.е. блокировать работу советника. Но если его блокировать, то как же он сможет торговать, когда торговля будет разрешена?

Ну можно ведь посылать например каждую минуту "левый" торговый запрос на сервер (например ордер по нулевой цене). Если возвратится ошибка, отличная от 133 (в данном случае вернётся 129), то значит торговля не запрещена. Этот же способ используется и для диагностики запрета торговли советниками.

Я думаю такой подход не будет особо перегружать сервер. В конце концов можно согласовать с ДЦ допустимую частоту таких запросов. Ведь другого решения у нас нет.

А вообще конечно ДЦ должен отключать торговлю в свойствах инструмента, чтобы MarketInfo(Symbol(),MODE_TRADEALLOWED) выдавало 0. Тогда и проблем никаких не будет

 
Не совсем понял. Какой смысл пытаться торговать, если тики не поступают? Советник так точно будет бездействовать. Только зацикленный скрипт. Но опять же - какой смысл скрипту осуществлять торговые операции, если цена не изменилась?
 
Mathemat писал (а) >>
Игорь, а IsTradeAllowed() тут не помогает? Вроде как не торговый запрос...

Нет, не помогает. IsTradeAllowed() проверяет вот эту галочку

и незанятость торгового потока.

 
KimIV >>:

Ситуация.

Торговля фьючерсами. Торговля не круглосуточная. Есть ночные перерывы в торговле. Торговый сервер ДЦ в это время возвращает ошибку 133 (trade is disabled (торговля запрещена)). Если следовать рекомендациям разработчиков МТ4, то при такой ошибке нужно прекратить все попытки торговых операций, т.е. блокировать работу советника. Но если его блокировать, то как же он сможет торговать, когда торговля будет разрешена?

Вопрос.

Почему при ночных паузах в торговле ДЦ не применяют ошибку 132 (Рынок закрыт)? Это ошибка торгового сервера или ДЦ могут по своему усмотрению применять ошибку либо 132 (рынок закрыт), либо 133 (торговля запрещена)? Если так, то не следует ли тогда исправить рекомендации, чтобы ошибки 132 и 133 разработчики советников обрабатывали одинаково?

To KimIV . Ситуация сходная, только на круглосуточном форексе. Специально поставил на малый таймфрейм (M15) полтора десятка советников, чтобы частоту сделок повысить и ошибки доступа отловить, паузы и т.д..

Все прекрасно безошибочно работало в течение около 8 часов, и потом вдруг поперло:


2008.10.16 17:24:31 '1150888': instant order sell 0.10 EURGBP at 0.7796 sl: 0.8081 tp: 0.0000
2008.10.16 17:24:27 '1150888': order was opened : #31320164 sell 0.10 EURGBP at 0.7795 sl: 0.8067 tp: 0.0000
2008.10.16 17:24:27 '1150888': request in process
2008.10.16 17:24:23 '1150888': request was accepted by server
2008.10.16 17:24:20 '1150888': instant order sell 0.10 EURGBP at 0.7795 sl: 0.8067 tp: 0.0000
2008.10.16 17:24:10 '1150888': requote 0.7794 / 0.7796 for open sell 0.10 EURGBP at 0.7796 sl: 0.8081 tp: 0.0000
2008.10.16 17:24:09 '1150888': request was accepted by server
2008.10.16 17:24:08 '1150888': instant order sell 0.10 EURGBP at 0.7796 sl: 0.8081 tp: 0.0000
2008.10.16 17:23:58 '1150888': order sell 0.10 EURGBP opening at 0.7795 sl: 0.8067 tp: 0.0000 failed [Trade is disabled]
2008.10.16 17:23:57 '1150888': instant order sell 0.10 EURGBP at 0.7795 sl: 0.8067 tp: 0.0000
2008.10.16 17:23:48 '1150888': order sell 0.10 EURGBP opening at 0.7796 sl: 0.8068 tp: 0.0000 failed [Trade is disabled]

........

с 17.15

потом вдруг внезапно успокоилось. Чтобы это значило, не подскажете? Может разобрались уже.
 
rider писал(а) >>
To KimIV .
Может разобрались уже.

не, вопрос остался открытым...

 
KimIV >>:

не, вопрос остался открытым...

В, принципе, ничего страшного не присходит.... если в журнал не смотреть :).... остальные (по другим инструментам) ордера уже исполнились, да и пауза соблюдена. Единственное, что не исполнено, так это рекомендация разработчиков терминала..... но они же не брокер.

А, из опыта, на реале, - брокер как к этому отнесется?
Я у "этого" недавно, в техподдержку вопрос забросил, молчат пока.

 

Sleep поставить эдак на пять минут при 133 ошибке

 
rider писал(а) >>
А, из опыта, на реале, - брокер как к этому отнесется?
На реале у меня не было таких ошибок. В основном реквоты (138) и занятость торгового потока (146). Изредка таймауты (128).
 
Helex >>:

Sleep поставить эдак на пять минут при 133 ошибке

Sleep не вопрос.... вопрос во времени  открытия и в причинах такого поведения на спокойном рынке.

KimIV >>:
На реале у меня не было таких ошибок. В основном реквоты (138) и занятость торгового потока (146). Изредка таймауты (128).

146 и 128 я благополучно, благодаря статьям Komposter'a, отфильтровал....попробуйте. Простите за совет Дилетанта Мастеру :)

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