Вопросы от "чайника" - страница 15

 
Yedelkin:
Дополнительный вопрос: а есть ли какой-нибудь элегантный способ сохранить информацию при передаче double <-> long?
Копирование простых структур https://www.mql5.com/ru/docs/basis/types/casting#casting_structure
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
stringo:

все 64. По факту. Не цепляйтесь к типу знаковому или беззнаковому.

Самое лучшее - это убедиться самому. Тогда вопрос закроется раз и навсегда.

да. я уже написал, что забыл про преобразование типов.

и уже всё проверил. Знак не теряется. всё ок.

 
stringo:
Копирование простых структур https://www.mql5.com/ru/docs/basis/types/casting#casting_structure
Спс! То же, о чём второй пример у Метадрайвера! ...Вот, как важен акцент на казалось бы уже прочитанном.
 
sergeev:

посмотрите PositionClose в классе CTrade.
Уверен, что там будет так же как делаете вы. Вывод напрашивается один - по другому сейчас нельзя.

Но я поддерживаю вашу просьбу. И прошу разработчиков рассмотреть этот вариант.

Добавить тип операции TRADE_ACTION_CLOSE - закрытие позиции по указанному инструменту в своём объёме по текущей цене.

Это был бы идеальный вариант! Поддерживаю.

Для остальных участников форума еще раз вкратце обрисую проблему.

При существующей в MQL5 системе учета сделок/ордеров и способов закрытия позиции всегда существует ненулевая вероятность того, что позиция имеющая SL/TP и закрытая с рынка на самом деле не закроется, а произойдет открытие противоположной позиции.

Чем ближе рынок находится к SL/TP позиции, тем эта вероятность увеличивается, делая вообще невозможным закрытие с рынка при близких SL/TP (т.к. за время отсылки нового рыночного ордера для закрытия может произойти закрытие по SL/TP)

Существующие варианты решения проблемы неудовлетворительны:

а) если убирать SL/TP перед закрытием, это во-первых отнимает время, а во-вторых в случае обрыва связи позиция останется в рынке без стопа и т.д.

б) ждать срабатывания по SL/TP тоже не вариант, т.к. бывает необходимость выйти раньше.

 Я понимаю, что введение новой системы учета накладывает определенные ограничения, но когда в угоду концепции полностью приносится в жертву удобство использования продукта вряд ли им заинтересуются массы :(

Уважаемые разработчики, что Вы посоветуете применить для ГАРАНТИРОВАННОГО выхода из рынка (цена значения не имеет) ? В MQL4 я подавая запрос на закрытие мог быть уверен, что позиция закроется либо эксперт получит код ошибки и продолжит попытки.

 
Yedelkin:

Выполнено! В шифровке заменить 14-ю строчку на L.l = 4548887299649496524

............

Зачёд!  ;)

 
Из справки:
PositionClose
...
Примечание

Успешное окончание работы метода PositionClose(...)
не всегда означает успешное совершение торговой операции.
Необходимо проверять результат выполнения торгового запроса
(код возврата торгового сервера) вызовом метода ResultRetcode().

Честно предупредили.

*** 

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

Чтобы позиция гарантированно закрылась, будет увеличиваться проскальзывание в зависимости от волатильности? Или как? Это такой "привет пипсовщикам"? 

Поддерживаю вопрос разработчикам.

 

Silent, там дело не в проскальзывании и проверке кода возврата.

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

Торговый сервер видит этот запрос именно как открытие новой позы. Он не научен понимать, что мы на самом деле хотим закрыть существующую позу.

С точки зрения неттинга - это вроде правильно, но тогда невозможно ГАРАНТИРОВАННО закрыть с рынка позицию имеющую SL/TP. Как бы далеко не был этот SL/TP мы не застрахованы от того, что за время подачи нового ордера (для закрытия) цена зацепит наш SL/TP и позиция закроется сама по себе. А наш новый ордер отработает и откроет противоположную позицию.

Единственный выход на мой взгляд, как предложил sergeev, научить сервер различать запрос на открытие новой позы от закрытия существующей при помощи введения нового флажка типа операции "TRADE_ACTION_CLOSE".

Хотя может быть у разработчиков есть свой вариант? 

 
Неужели ни у кого нет решения?
 
Cron:
Неужели ни у кого нет решения?
Решения-то есть, но они Вас вряд ли устроят.. Например, удалять SL/TP и далее по алгоритму. ..Вы же сами указали: "С точки зрения неттинга - это вроде правильно, но тогда невозможно ГАРАНТИРОВАННО закрыть с рынка позицию...".
 
Yedelkin:
Решения-то есть, но они Вас вряд ли устроят.. Например, удалять SL/TP и далее по алгоритму. ..Вы же сами указали: "С точки зрения неттинга - это вроде правильно, но тогда невозможно ГАРАНТИРОВАННО закрыть с рынка позицию...".

Да, удалять SL/TP - это потеря времени плюс риск остаться в рынке без стопа при проблемах со связью.

Думаю, все же, что для удобства множества пользователей работающих в ДЦ, можно было бы добавить "TRADE_ACTION_CLOSE". [ И например отключать этот тип операции там где неттинг важен? (ФОРТС, РТС).]

Без некоторых шагов навстречу пользователю переход на МТ5 для многих клиентов ДЦ смысла не имеет. Я, имея некоторый опыт в программировании, все равно столкнулся с некоторыми сложностями в портировании эксперта с MQL4 в MQL5. Однако все они были так или иначе решены кроме этой проблемы с SL/TP и закрытием с рынка.

Не буду учить разработчиков тому, что они умеют безусловно лучше меня, но все же хочу заметить, что погоня за универсальным продуктом и для бирж и для ДЦ в ущерб userfriendly приведет к меньшей востребованности продукта и многие останутся на МТ4 :(

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