Обсуждение статьи "В MetaTrader 5 добавлена хеджинговая система учета позиций" - страница 3

 
Ihor Herasko:
Такой вопрос: появилось ли свойство, которое позволяет программно определить тип счета (неттинговый, хеджевый)? Ведь если писать хеджевого эксперта, то нужно запрещать его работу сразу при загрузке на неттинговом счете. Свойство ACCOUNT_MARGIN_MODE появилось, но какое из них использовать, чтобы узнать тип счета пока непонятно.

ACCOUNT_MARGIN_MODE_RETAIL_HEDGING

https://www.mql5.com/ru/forum/23/page18#comment_2379483

Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:. - Страница 18 - Категория: общее обсуждение
 
Alexey:

ACCOUNT_MARGIN_MODE_RETAIL_HEDGING

https://www.mql5.com/ru/forum/23/page18#comment_2379483

Прошу прощения. Не сразу понял, что это и есть значение. Почему-то подумалось, что это идентификатор, который следует передавать в AccountInfoInteger, а функция вернет размер маржи. Немного запутано в справке написано: "позволяет получить режим расчета маржи". В итоге продолжение "и учета позиций на счете" уже не читается.
 

Все эти строки вызывают ошибку:

ENUM_ACCOUNT_INFO_INTEGER account_type=(ENUM_ACCOUNT_INFO_INTEGER)AccountInfoInteger(ACCOUNT_MARGIN_MODE);
Print(AccountInfoString(ACCOUNT_MARGIN_MODE));
Print(AccountInfoInteger(ACCOUNT_MARGIN_MODE));

ACCOUNT_MARGIN_MODE синим в editor-е не подсвечен. Делаю что-то не так? Или у меня старый build MT5? (Version 5 build 1241 от 22 dec 2015.) Тогда как принудительно обновится до нового?

 
Oksana Berenko:

Все эти строки вызывают ошибку:

ACCOUNT_MARGIN_MODE синим в editor-е не подсвечен. Делаю что-то не так? Или у меня старый build MT5? (Version 5 build 1241 от 22 dec 2015.) Тогда как принудительно обновится до нового?

Старый. Новый можно закачать с сервера MetaQuotes-Demo. Текущая версия, насколько мне известно, уже 1301 (бета). Прочитать про обновления можно здесь.

https://www.mql5.com/ru/forum/23/page18 

Список изменений в билдах MetaTrader 5 Client Terminal
Список изменений в билдах MetaTrader 5 Client Terminal
  • www.mql5.com
Автоматическое обновление доступно через систему LiveUpdate:. - Страница 18 - Категория: общее обсуждение
 
Oksana Berenko:

Все эти строки вызывают ошибку:

ACCOUNT_MARGIN_MODE синим в editor-е не подсвечен. Делаю что-то не так? 

ENUM_ACCOUNT_INFO_INTEGER account_type=(ENUM_ACCOUNT_INFO_INTEGER)AccountInfoInteger(ACCOUNT_MARGIN_MODE);

Не правильный тип-приемник, нужно:

ENUM_ACCOUNT_MARGIN_MODE mode = (ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE);

Изучайте программирование.

Или у меня старый build MT5? (Version 5 build 1241 от 22 dec 2015.) Тогда как принудительно обновится до нового?

Билд у Вас тоже устаревший. В нем еще нет запрашиваемых модификаторов. Вам необходимо обновить свой MetaTrader 5, для чего подключиться к серверу MetaQuotes-Demo.

 
Vasiliy Sokolov:

Не правильный тип-приемник, нужно:

Изучайте программирование.

Билд у Вас тоже устаревший. В нем еще нет запрашиваемых модификаторов. Вам необходимо обновить свой MetaTrader 5, для чего подключиться к серверу MetaQuotes-Demo.

Спасибо за подсказку про тип-приемник, но я с ним еще раньше разобралась после подсказки от Алексея про билд и установки нового. Программирую давно, успешно, на нескольких языках. Вот только недавно понадобился mql5 для небольшой задачи. Так как использую в основном MetaTrader 4, то в mql5 такой необходимости не было. Всё-равно спасибо.
 
Для меня вот неочевидно было как сделать частичное закрытие позиции, наподобие функции OrderClose в мт4. Догадался, что нужно посылать рыночный запрос с указанием идентификатора позиции (request.position), противоположным направлением сделки и кол-вом закрываемых лотов. Без узаказания идентификатора открывается новая сделка. Можно в статью добавить этот момент.
 
Dmitry Homenkov:
Для меня вот неочевидно было как сделать частичное закрытие позиции, наподобие функции OrderClose в мт4. Догадался, что нужно посылать рыночный запрос с указанием идентификатора позиции (request.position), противоположным направлением сделки и кол-вом закрываемых лотов. Без узаказания идентификатора открывается новая сделка. Можно в статью добавить этот момент.

Slawa подробно отвечал здесь. Сразу, конечно, не догадаться.

Вот как определить SL и TP у закрытых позиций - загадка

 
Andrey Khatimlianskii:

Это шедеврально!

Это на период правки истории сделок оговорка, или 100%-го соответствия не будет никогда?

Или это вообще про что-то другое (встречное закрытие, брокерское вмешательство)? 

Хронологически

  1. Отложенный ордер сработал частично - открылась позиция с Position_ID = Order_Ticket.
  2. Закрыли позицию руками.
  3. Остаток ордера исполнился - открылась позиция с Position_ID != Order_Ticket.

Чему будет равен итоговый ORDER_POSITION_ID и как, соответственно, отработает HistorySelectByPosition - еще тот вопрос.

Очевидно, что у одной (из двух) сделки открытия в ее ордере DEAL_ORDER будет DEAL_POSITION_ID != ORDER_POSITION_ID.

Так что на HistorySelectByPosition даже на Хедже закладываться точно не стоит.

 
fxsaber:

Хронологически

  1. Отложенный ордер сработал частично - открылась позиция с Position_ID = Order_Ticket.
  2. Закрыли позицию руками.
  3. Остаток ордера исполнился - открылась позиция с Position_ID != Order_Ticket.

Чему будет равен итоговый ORDER_POSITION_ID и как, соответственно, отработает HistorySelectByPosition - еще тот вопрос.

Очевидно, что у одной (из двух) сделки открытия в ее ордере DEAL_ORDER будет DEAL_POSITION_ID != ORDER_POSITION_ID.

Так что на HistorySelectByPosition даже на Хедже закладываться точно не стоит.

По-моему, вы придумываете проблемы на ровном месте. Ну открылась (на хеджевом счете) вторая позиция по остатку ордера с другим Position_ID. Допустим. Какая в этом проблема? Позиции то реально разные будут. HistorySelectByPosition тут не причем.

Хотите отлавливать все торговые операции четко по конкретному сигналу - ставьте им MagicNumber и самостоятельно раскручивайте цепочку. 99.99% трейдеров не поймут вашей кручины.

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