Скачать MetaTrader 5

MetaTrader

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

Можно или нет установить несколько советников в один торговый терминал (на один счет), но на разные валютные пары? соответственно чтобы они корректно работали.  При моем опыте получалась что, торговый поток (IsTradeAllowed()) занят одним из советников другие просто не могут открыть позицию.

Server Muradasilov
11293
Server Muradasilov  
voviko:

Можно или нет установить несколько советников в один торговый терминал (на один счет), но на разные валютные пары?

Да
Vladimir Deryagin
608
Vladimir Deryagin  
Server Muradasilov:
Да
При моем опыте получалась что, торговый поток занят (IsTradeAllowed) одним из советников другие просто не могут открыть позицию.
Aleksey
2570
Aleksey  
voviko:
При моем опыте получалась что, торговый поток занят (IsTradeAllowed) одним из советников другие просто не могут открыть позицию.
Что делают когда есть очередь? Занимают её. Если поток занят, подождите пока освободится. Или переходите на МТ5, там проблем с очередью не должно быть.
Vladimir Deryagin
608
Vladimir Deryagin  
Aleksey:
Что делают когда есть очередь? Занимают её. Если поток занят, подождите пока освободится. Или переходите на МТ5, там проблем с очередью не должно быть.

С помощью какой функции? (Если поток занят, подождите пока освободится)

Пробовал так:

int start()
  {
   if(!IsTradeAllowed())
      Print("торговый поток занят,жду");
// бесконечный цикл
   while(true)
      if(IsTradeAllowed())
        {
         break;
        }
Aleksey
2570
Aleksey  
voviko:

С помощью какой функции? (Если поток занят, подождите пока освободится)

Пробовал так:

Это слишком жёстко. А в таком варианте возможно требуется что-то типа RefreshRates внутри цикла +sleep. Сто лет уже как с МТ4 слез, не помню точно, в общем обновлять окружение.

Самым правильным будет уход на следующий тик, т.е. return вместо Print и проверка условий на следующем тике. К тому же, это освободит поток.

Да вроде на четвёрке тоже добавляли количество одновременных запросов в потоке.

Комбинатор
16928
Комбинатор  
IsTradeAllowed к потоку не имеет никакого отношения. IsTradeContextBusy
MetaQuotes
Админ
26089
Renat Fatkhullin  

В МТ4 можно одновременно до 16 сделок проводить (12 одновременно из разных экспертов), так что trade context busy получить очень сложно.

В МТ5 гораздо больше сделок, особенно с учетом асинхронного режима.

Aleksey
2570
Aleksey  
Фьючерсные объемы для МТ:
IsTradeAllowed к потоку не имеет никакого отношения. IsTradeContextBusy

Блин, попутал. Вопрос сбил с толку ))

Я так понимаю автор имел ввиду IsTradeContextBusy

Vladimir Deryagin
608
Vladimir Deryagin  
Aleksey:

Блин, попутал. Вопрос сбил с толку ))

Я так понимаю автор имел ввиду IsTradeContextBusy


Справочник MQL4


IsTradeAllowed

Возвращает информацию о возможности торговли при помощи экспертов.

bool  IsTradeAllowed();

Вторая форма вызова возвращает информацию о возможности торговли для заданного символа в указанное время.

bool  IsTradeAllowed(
  const string symbol       // символ
  datetime     tested_time  // время
   );

Параметры

symbol

[in]  Символ.

tested_time

[in]  Время.

Возвращаемое значение

Возвращает true, если эксперту разрешено торговать и поток для выполнения торговых операций свободен, иначе возвращает false.


IsTradeContextBusy

Возвращает информацию о состоянии потока выполнения торговых операций.

bool  IsTradeContextBusy();

Возвращаемое значение

Возвращает true, если поток для выполнения торговых операций занят, иначе возвращает false.

Пример:

 

 if(IsTradeContextBusy()) Print("Торговый поток занят. Подождите");
Aleksey
2570
Aleksey  
voviko:

Возвращает true, если эксперту разрешено торговать и поток для выполнения торговых операций свободен, иначе возвращает false.

в обоих случаях надо выходить, точней, отложить торговую операции на следующий тик
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий