Как в MQL MТ5 отличить счет с хеджированием от счета с неттингом ?

 

Всех приветствую.

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

Как я понимаю, необходимо вызывать функцию AccountInfoInteger() с каким-то ключевым параметром.

Но, среди перечислений что-то я не нашел перечисления "неттинг-хедж".

Единственное, что я нашел - это AccountInfoInteger(ACCOUNT_MARGIN_MODE), и смотреть возвращаемый результат - если вернется ACCOUNT_MARGIN_MODE_RETAIL_HEDGING, то счет хеджевый, если нет - то неттинговый.

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

Кто как отличает в МТ5 неттинг от хеджа ?

 
George Merts:

Всех приветствую.

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

Как я понимаю, необходимо вызывать функцию AccountInfoInteger() с каким-то ключевым параметром.

Но, среди перечислений что-то я не нашел перечисления "неттинг-хедж".

Единственное, что я нашел - это AccountInfoInteger(ACCOUNT_MARGIN_MODE), и смотреть возвращаемый результат - если вернется ACCOUNT_MARGIN_MODE_RETAIL_HEDGING, то счет хеджевый, если нет - то неттинговый.

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

Кто как отличает в МТ5 неттинг от хеджа ?

Вы похоже всё правильно написали - через AccountInfoInteger() нужно узнавать. Вот выдержка из PositionSelect:

При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций. В этом случае, PositionSelect выберет позицию с наименьшим тикетом.

 
George Merts:

Всех приветствую.

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

Как я понимаю, необходимо вызывать функцию AccountInfoInteger() с каким-то ключевым параметром.

Но, среди перечислений что-то я не нашел перечисления "неттинг-хедж".

Единственное, что я нашел - это AccountInfoInteger(ACCOUNT_MARGIN_MODE), и смотреть возвращаемый результат - если вернется ACCOUNT_MARGIN_MODE_RETAIL_HEDGING, то счет хеджевый, если нет - то неттинговый.

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

Кто как отличает в МТ5 неттинг от хеджа ?

ENUM_ACCOUNT_MARGIN_MODE margin_mode=ENUM_ACCOUNT_MARGIN_MODE(AccountInfoInteger(ACCOUNT_MARGIN_MODE));
  if(margin_mode!=ACCOUNT_MARGIN_MODE_RETAIL_NETTING)
  {
    Print("Брокер не поддерживает биржевой расчёт маржи в режиме 'Неттинг'!");
  }
 
George Merts:

Всех приветствую.

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

Как я понимаю, необходимо вызывать функцию AccountInfoInteger() с каким-то ключевым параметром.

Но, среди перечислений что-то я не нашел перечисления "неттинг-хедж".

Единственное, что я нашел - это AccountInfoInteger(ACCOUNT_MARGIN_MODE), и смотреть возвращаемый результат - если вернется ACCOUNT_MARGIN_MODE_RETAIL_HEDGING, то счет хеджевый, если нет - то неттинговый.

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

Кто как отличает в МТ5 неттинг от хеджа ?

Здравствуйте. Если пользуетесь стандартной библиотекой - можете заглянуть туда. Там в первую очередь появилось это изменение. Где-то в торговых классах.
 
Alexey Kozitsyn:
Здравствуйте. Если пользуетесь стандартной библиотекой - можете заглянуть туда. Там в первую очередь появилось это изменение. Где-то в торговых классах.

В AccountInfo есть. Один из плюсов использования СБ, не надо ползать по API, достаточно в ТС нажать alt-f7 и ввести текстовый поиск по had

//+------------------------------------------------------------------+
//| Get the property value "ACCOUNT_MARGIN_MODE" as string           |
//+------------------------------------------------------------------+
string CAccountInfo::MarginModeDescription(void) const
  {
   string str;
//---
   switch(MarginMode())
     {
      case ACCOUNT_MARGIN_MODE_RETAIL_NETTING: str="Netting";  break;
      case ACCOUNT_MARGIN_MODE_EXCHANGE      : str="Exchange"; break;
      case ACCOUNT_MARGIN_MODE_RETAIL_HEDGING: str="Hedging";  break;
      default                                : str="Unknown margin mode";
     }
//---
   return(str);
  }
 
Alexey Kozitsyn:
Здравствуйте. Если пользуетесь стандартной библиотекой - можете заглянуть туда. Там в первую очередь появилось это изменение. Где-то в торговых классах.

Да, пользуюсь, но у меня весь код переносим, соответственно один и тот же класс должен уметь работать и с неттинговым и с хеджевым счетом. А классы СБ - такой функциональности не содержат.

Ну, в общем, ответ получен. Я просто думал, что есть отдельная функция.

 
Alexey Volchanskiy:

В AccountInfo есть. Один из плюсов использования СБ, не надо ползать по API, достаточно в ТС нажать alt-f7 и ввести текстовый поиск по had

Так вот же - этот класс имеет функцию MarginMode() - но, мне казалось, должна быть функция AccountType().

Ну да ладно. Просто примем к сведению.

Причина обращения: