Вопрос о функции IsTradeAllowed()

 

Открыл я описание данной функции.

Хотя я раньше не особо задумываясь использовал эту функцию, но.. Хочется знать канкретно. Зачем она нужна? Какова может быть "невозможность торговли" ?

Я понимаю, что может быть занят торговый потом, но для этого случая имеется функция IsTradeContextBusy(). А по какой причине может вернуть false функциях IsTradeAllowed() ?

 

1. Счёт заблокирован

2. Брокером запрещена торговля вообще

3. Брокером запрещена торговля автоматическая

4. Отжата кнопка автоторговли в терминале

5. Снята галочка "Разрешить советнику торговать" в настройках советника/скрипта

6. Может ещё какие причины...

Есть более специфичные функции, позволяющие точнее узнать причину отказа: MQLInfoInteger(MQL_TRADE_ALLOWED), TerminalInfoInteger(TERMINAL_TRADE_ALLOWED),  AccountInfoInteger(ACCOUNT_TRADE_EXPERT), AccountInfoInteger(ACCOUNT_TRADE_ALLOWED).

 

У данной функции есть 2 вариант:

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

Я так понял, первый это проверить можно ли торговать вообще на всех инструментах, а второй на канкретном? Тогда возникает вопрос о надобности второго варианта. Если использовать первый, и получить ответ, что можно. Значит торговать можно. Какой прок с второго варианта?

Если у второго варианта нет явных приемуществ и каких-либо дополнительной пользы, то зачем это канкретика?

 
hoz:

У данной функции есть 2 вариант:

Я так понял, первый это проверить можно ли торговать вообще на всех инструментах, а второй на канкретном? Тогда возникает вопрос о надобности второго варианта. Если использовать первый, и получить ответ, что можно. Значит торговать можно. Какой прок с второго варианта?

Если у второго варианта нет явных приемуществ и каких-либо дополнительной пользы, то зачем это канкретика?

У меня после всех представлений:

  if(IsTradeAllowed() == True)
  {

И всё остальное! Работает! Когда какое-нибудь отключение, советник не посылает ничего на сервер, он, в общем, и не пошлёт без тиков, но так, для соблюдения порядка! :)

 
borilunad:

У меня после всех представлений:

И всё остальное! Работает! Когда какое-нибудь отключение, советник не посылает ничего на сервер, он, в общем, и не пошлёт без тиков, но так, для соблюдения порядка! :)

 

Борис, у тебя всё тело советника заключено в эти скобки? Если так, то наверное это не очень-то корректно - ты запрещаешь тем самым советнику собирать статистику.
 
artmedia70:
Борис, у тебя всё тело советника заключено в эти скобки? Если так, то наверное это не очень-то корректно - ты запрещаешь тем самым советнику собирать статистику.
Артём, весь сбор статистики расположен до этих скобок.
 

Всё то, конено, хорошо. Но IsTradeContextBusy() кто-нить использует? Или ограничиваться можно лишь IsTradeAllowed() ?

 Бывает так, что один из этих состояний true, а другое false?

 
hoz:

Всё то, конено, хорошо. Но IsTradeContextBusy() кто-нить использует? Или ограничиваться можно лишь IsTradeAllowed() ?

 Бывает так, что один из этих состояний true, а другое false?

Конечно, IsTradeAllowed()= False, то не имеет значания IsTradeContextBusy().

А если IsTradeAllowed()= True, то IsTradeContextBusy() может быть False.

Но я не использую его, т.к. поток в любое время может освободится, а команда от эксперта запаздает!

 
hoz:

У данной функции есть 2 вариант:

Я так понял, первый это проверить можно ли торговать вообще на всех инструментах, а второй на конкретном? Тогда возникает вопрос о надобности второго варианта. Если использовать первый, и получить ответ, что можно. Значит торговать можно. Какой прок с второго варианта?

Если у второго варианта нет явных приемуществ и каких-либо дополнительной пользы, то зачем это конкретика?

Глаз режет. Конкретно
 
Vinin:
Глаз режет. Конкретно
Похоже, изучает и санкрит, потому-то путает. :)