Скачать MetaTrader 5

Примеры: Ошибка 146 ("Торговый поток занят") и как с ней бороться

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Продавай продукты через Маркет и отслеживай статистику продаж
MetaQuotes Software Corp.
Модератор
181413
MetaQuotes Software Corp. 2006.05.12 17:37 

New article Ошибка 146 ("Торговый поток занят") и как с ней бороться has been published:

Статья посвящена бесконфликтной торговле нескольких экспертов на одном терминале МТ 4 и рассчитана на пользователя, обладающего базовыми навыками работы с терминалом и программирования на MQL 4.

Author: Andrey Khatimlianskii

MQL4 Comments
16319
MQL4 Comments 2006.05.14 23:57  
Большое спасибо. Это многим будет полезно. Ждём новую статью об обработке ошибок возвращаемых сервером.
Andrey Khatimlianskii
136
Andrey Khatimlianskii 2006.05.15 00:07  
Конечно, следующая статья уже на подходе ;)

ps: буду признателен за любые конструктивные замечания и предложения по поводу статьи
Andrey Khatimlianskii
136
Andrey Khatimlianskii 2006.05.15 11:36  
ExpertTrader:

Я не знаю, вроде сделал все так, но проблема осталать...

2006.05.15 12:12:58 TradeDispatcher: trade context is busy

Опишите подробнее ситуацию:
  • какая версия терминала?
  • сколько работает экспертов?
  • во всех экспертах используются функции TradeIsBusy() и TradeIsNotBusy()?
  • перед всеми торговыми операциями?
Желательно привести полный код всех работающих экспертов, тогда я смогу максимально точно воспроизвести ситуацию.
Andrey Khatimlianskii
136
Andrey Khatimlianskii 2006.05.15 12:37  
ExpertTrader:


4. На момент предыдущего сообщения перед всеми операциями, но т.к. из-за добавления этих функций к трейлинг-стопу выходило сообщение Превышен лимит ожидания (30 сек.)!, и стоп не передвигался, я убрал их от туда.

Вот и ответ на ваш вопрос - слишком частые передвижения СтопЛосса без разделения доступа к торговому потоку.
Надо либо двигать реже (каждые n пунктов), либо поставить больше лимит ожидания.

ps: лучше вместо кода эксперта прикрепить файл - будет удобнее читать комментарии ;)
Pavel Smirnov
26
Pavel Smirnov 2006.09.02 10:15  

komposter писал(а):

В использовании функций TradeIsBusy() и TradeIsNotBusy() может возникнуть только одна проблема - если после того, как торговый поток будет занят, эксперта удалить с графика, переменная TradeIsBusy останется равной 1
Хотел спросить, а разве не поможет в решении этой проблемы следующее :

if(IsStopped())
{
Print("Эксперт был остановлен пользователем!");
TradeIsBusy=0;
return(-1);
}
и тогда, при ручном удалении эксперта, переменная обнулится ?
Спасибо.
Andrey Khatimlianskii
136
Andrey Khatimlianskii 2006.09.04 09:08  
ForexFox:
Хотел спросить, а разве не поможет в решении этой проблемы следующее :
if(IsStopped())
{
Print("Эксперт был остановлен пользователем!");
TradeIsBusy=0;
return(-1);
}
и тогда, при ручном удалении эксперта, переменная обнулится ?
Переменная - одна на всех экспертов. Если её обнулять из каждого эксперта, начнётся бардак ;)
Например, если удалить с графика эксперт, который в данный момент не торгует, он обнулит переменную, и несколько других экспертов "подерутся" за торговый поток.
Pavel Smirnov
26
Pavel Smirnov 2006.09.08 12:58  
komposter:
ForexFox:
Хотел спросить, а разве не поможет в решении этой проблемы следующее :
if(IsStopped())
{
Print("Эксперт был остановлен пользователем!");
TradeIsBusy=0;
return(-1);
}
и тогда, при ручном удалении эксперта, переменная обнулится ?
Переменная - одна на всех экспертов. Если её обнулять из каждого эксперта, начнётся бардак ;)
Например, если удалить с графика эксперт, который в данный момент не торгует, он обнулит переменную, и несколько других экспертов "подерутся" за торговый поток.

А, ну да, все правильно.
Спасибо за разъяснение
MQL4 Comments
16319
MQL4 Comments 2006.12.11 00:13  

А на каком же тогда принципе торгуют торговые системы на чемпионате? там же единый поток на каждый сервак, а система обхода ошибки наверняка не у всех в ТС прописана.

Andrey Khatimlianskii
136
Andrey Khatimlianskii 2006.12.16 18:54  
fornax:

А на каком же тогда принципе торгуют торговые системы на чемпионате? там же единый поток на каждый сервак, а система обхода ошибки наверняка не у всех в ТС прописана.

Эта статья посвящена одновременной работе нескольких экспертов на одном терминале.
На чемпионате каждый эксперт работает на своем терминале, поэтому ошибки 146 быть не может в принципе ;)
Victor Lukashuck
267
Victor Lukashuck 2007.01.25 02:47  
Подскажите, пожалуйста. В опубликованом алгоритме преведена последовательность
1.// определяем необходимость входа в рынок
2.// рассчитываем уровни Стоп Лосс, Тейк Профит и размер лота
3.// ждём освобождения торгового потока и занимаем его (если произошла ошибка,
4.// выходим)
5.// обновляем рыночную информацию
6.// пересчитываем уровни Стоп Лосс и Тейк Профит
7.// открываем позицию

Вопрос в том, что расчет в соответствии с пунктом 2. нигде не используется и мне кажется его можно пропустить. Ведь мы всё равно повторно расчитывам уровни в пункте 6. Или я не прав?
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий