order is locked - что это значит? - страница 2

 
Что это значит?


В MT Terminal, для совершения торговых операций доступно одно подключение к серверу.
Данное сообщение означает, что в настоящий момент данное подключение занято обработкой предыдущей торговой операции.

Как действовать после такой ошибки?

Это может быть вызвано слишком высокой активностью эксперта (например близкие по времени модификации после каждого тика). Возможно также что это какая то неисправность. Если можно, пришлите пожалуйста журнал клиента за 27.05.2005 на адрес
said AT metaquotes . ru
 
В MT Terminal, для совершения торговых операций доступно одно подключение к серверу.
Данное сообщение означает, что в настоящий момент данное подключение занято обработкой предыдущей торговой операции.

А это можно както в скрипте выявить?
И как правильно это сделать?
 
В MT Terminal, для совершения торговых операций доступно одно подключение к серверу.
Данное сообщение означает, что в настоящий момент данное подключение занято обработкой предыдущей торговой операции.

komposter 24.05.05 22:44
1. 1 эксперт на одном графике. Одновременно открывает максимум 4 позиции. Между _всеми_ торговыми операциями соблюдается пауза 30 сек. Открыт 1 терминал.


Жаль, что приходится повторять 2 раза.

Возможно также что это какая то неисправность. Если можно, пришлите пожалуйста журнал клиента за 27.05.2005

отправил


А это можно както в скрипте выявить?
И как правильно это сделать?

кажется, Ренат говорил, что IsTradeAllowed() кроме галочки в опциях отражает состояние торгового подключения ( 1 - свободно, 0 - занято ). Но могу ошибаться...
 
Вот кстати мой лог

22:01:59 MetaTrader 4.00 build 171 started
22:02:10 '18805': login (4.00, #27B49610)
22:57:57 '18805': login (4.00, #27B49610)
22:59:05 '18805': login (4.00, #27B49610)
22:59:05 '18805': request 0.10 USDCAD
22:59:05 '18805': request accepted by server
22:59:05 '18805': answer 0.10 USDCAD 1.2479 / 1.2484
22:59:05 TradeDispatcher: all trade context is busy
22:59:05 '18805': order by request buy 0.10 USDCAD at 1.2484 sl: 1.2184 tp: 1.2494
22:59:05 '18805': request accepted by server
22:59:05 '18805': request in process
22:59:05 '18805': order open : #290052 buy 0.10 USDCAD at 1.2484 sl: 1.2184 tp: 1.2494
22:59:09 TradeDispatcher: all trade context is busy
22:59:09 '18805': instant order buy 0.10 EURJPY at 132.7300 sl: 129.7300 tp: 132.8300
22:59:09 '18805': request accepted by server
22:59:09 '18805': request in process
22:59:09 '18805': order open : #290054 buy 0.10 EURJPY at 132.7300 sl: 129.7300 tp: 132.8300
22:59:20 TradeDispatcher: all trade context is busy
22:59:20 '18805': instant order sell 0.10 USDJPY at 108.7200 sl: 111.7200 tp: 108.6200
22:59:20 '18805': request accepted by server
22:59:20 '18805': request in process
22:59:20 '18805': order open : #290056 sell 0.10 USDJPY at 108.7200 sl: 111.7200 tp: 108.6200
22:59:23 '18805': request 0.10 GBPCHF
22:59:23 '18805': request accepted by server
22:59:24 '18805': answer 0.10 GBPCHF 2.2705 / 2.2713
22:59:24 '18805': order by request sell 0.10 GBPCHF at 2.2705 sl: 2.3005 tp: 2.2695
22:59:24 '18805': request accepted by server
22:59:24 '18805': request in process
22:59:24 '18805': order open : #290058 sell 0.10 GBPCHF at 2.2705 sl: 2.3005 tp: 2.2695
22:59:32 '18805': request 0.10 GBPJPY
22:59:32 '18805': request accepted by server
22:59:33 '18805': answer 0.10 GBPJPY 196.6500 / 196.7300
22:59:33 '18805': order by request sell 0.10 GBPJPY at 196.6500 sl: 199.6500 tp: 196.5500
22:59:33 TradeDispatcher: all trade context is busy
22:59:33 '18805': request accepted by server
22:59:33 '18805': request in process
22:59:33 '18805': order open : #290061 sell 0.10 GBPJPY at 196.6500 sl: 199.6500 tp: 196.5500
22:59:49 '18805': instant order sell 0.10 USDCHF at 1.2552 sl: 1.2852 tp: 1.2542
22:59:49 '18805': request accepted by server
22:59:49 '18805': request in process
22:59:49 '18805': order open : #290063 sell 0.10 USDCHF at 1.2552 sl: 1.2852 tp: 1.2542
22:59:50 '18805': instant order buy 0.10 EURUSD at 1.2207 sl: 1.1907 tp: 1.2217
22:59:51 '18805': request accepted by server
22:59:51 '18805': request in process
22:59:51 '18805': order open : #290064 buy 0.10 EURUSD at 1.2207 sl: 1.1907 tp: 1.2217
23:01:52 '18805': instant order buy 0.10 GBPUSD at 1.8091 sl: 1.7791 tp: 1.8101
23:01:52 '18805': request accepted by server
23:01:52 '18805': request in process
23:01:52 '18805': order open : #290074 buy 0.10 GBPUSD at 1.8091 sl: 1.7791 tp: 1.8101

Как видно - TradeDispatcher: all trade context is busy возникает с самого начала
 
В MT Terminal, для совершения торговых операций доступно одно подключение к серверу.
Данное сообщение означает, что в настоящий момент данное подключение занято обработкой предыдущей торговой операции.

А это можно както в скрипте выявить?
И как правильно это сделать?

IsTradeAllowed()
 
Т.е. перед каждым OrderSend надо использовать IsTradeAllowed() ?
 
Т.е. перед каждым OrderSend надо использовать IsTradeAllowed() ?

да, желательно.
а после каждого OrderSend в случае неудачи анализировать ошибку
 
Может лучше сделать чтобы OrderSend и OrderClose сами вызывали IsTradeAllowed ?
 
Может лучше сделать чтобы OrderSend и OrderClose сами вызывали IsTradeAllowed ?

так они это делают. максимум проверок перед отправкой на сервер. в том числе свободность торгового контекста. указанная ошибка после этой проверки и возникает
 
Может лучше сделать чтобы OrderSend и OrderClose сами вызывали IsTradeAllowed ?

так они это делают. максимум проверок перед отправкой на сервер. в том числе свободность торгового контекста. указанная ошибка после этой проверки и возникает

А если пауза _точно_ соблюдалась?
Или торговая операция может длиться больше 30 сек?
Или, может, незавершённая торг. операция тоже занимает коннект? У меня пауза выдерживается только после удачного завершения.

Скажите, смотрели ли вы мой лог? Прояснилось ли что-то?