Пользовательские символы. Ошибки, баги, вопросы, предложения. - страница 15
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну что же тут не понятного, в сообщении с багом #20 я указал установку идентификатора, и указал причину не соответствия.
SYMBOL_TRADE_EXEMODE
SYMBOL_TRADE_CALC_MODE
Это совсем другие режимы, и к проблеме не относятся.
Так яснее наверно будет.
А если нужно использовать всё таки другой идентификатор из ENUM SYMBOL_FILLING_XXX
То для SYMBOL_FILLING_RETURN идентификатора нет!
Правильно - нет. Это не идентификаторы - это флаги. Потому, что SYMBOL_FILLING_RETURN - есть всегда. А остальные два флага - могут либо быть оба, либо по-одному:
При отправке ордера можно указать политику заполнения заявленного в торговом приказе объема. Допустимые варианты исполнения ордера по объему для каждого символа указаны таблице. Для каждого инструмента может быть установлен не один режим, а несколько через комбинацию флагов. Комбинация флагов выражается операцией логического ИЛИ (|), например, SYMBOL_FILLING_FOK|SYMBOL_FILLING_IOC. Чтобы проверить разрешенность конкретного режима для инструмента, необходимо результат логического И (&) сравнить с флагом режима.
Политика заполнения
Идентификатор
Значение
Описание
Все/Ничего
SYMBOL_FILLING_FOK
1
Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме. Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен. Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке.
Все/Частично
SYMBOL_FILLING_IOC
2
В данном случае трейдер соглашается совершить сделку по максимально доступному на рынке объему в пределах указанного в ордере. В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен. Возможность использования IOC ордеров определяется на торговом сервере.
Вернуть
Идентификатор отсутствует
Данный режим используется для рыночных (Buy и Sell), лимитных и стоп-лимитных ордеров и только в режимах "Исполнение по рынку" и "Биржевое исполнение". В случае частичного исполнения рыночный или лимитный ордер с остаточным объемом не снимается, а продолжает действовать.
Правильно - нет. Это не идентификаторы - это флаги. Потому, что SYMBOL_FILLING_RETURN - есть всегда. А остальные два флага - могут либо быть оба, либо по-одному:
Но это же не явное поведение, которое вводит в заблуждение.
И в документации не сказано о признаке, что SYMBOL_FILLING_RETURN - есть всегда.
По чему бы не установить явно? SYMBOL_FILLING_RETURN
Покажите пожалуйста пример как правильно тогда установить флаг для биржевого заполнения
А то я что то запутался в этих не явных флагах.
Но это же не явное поведение, которое вводит в заблуждение.
И в документации не сказано о признаке, что SYMBOL_FILLING_RETURN - есть всегда.
По чему бы не установить явно? SYMBOL_FILLING_RETURN
Покажите пожалуйста пример как правильно тогда установить флаг для биржевого заполнения
А то я что то запутался в этих не явных флагах.
Ноль - если иных флагов не нужно.
Но это же не явное поведение, которое вводит в заблуждение.
И в документации не сказано о признаке, что SYMBOL_FILLING_RETURN - есть всегда.
По чему бы не установить явно? SYMBOL_FILLING_RETURN
Покажите пожалуйста пример как правильно тогда установить флаг для биржевого заполнения
А то я что то запутался в этих не явных флагах.
Вот из документации:
"В режимах исполнения "По рынку" и "Биржевой" политика заполнения "Вернуть" всегда разрешена для всех типов ордеров. Разрешенность остальных типов проверяется при помощи свойств SYMBOL_FILLING_FOK и SYMBOL_FILLING_IOC."
Ноль - если иных флагов не нужно.
Установка ноль, устанавливает None.
None это не биржевое заполнение.
Если пробую так
то SYMBOL_FILLING_FOK & SYMBOL_FILLING_IOC так же возвращает None, а не 3 как было вами сказано выше.
Как всё таки установить правильно биржевое заполнение?
А вот так вот
Устанавливает All, что соответствует всем разрешённым.
А в документации в колонке "Значение", не чего нет, пусто!
И в колонке "Идентификатор" для строки "Вернуть", всё же предлагаю указать правильную комбинацию для флагов!
Почему бы просто не добавить SYMBOL_FILLING_RETURN с значением 3, явно и понятно всем.
Fillling-флаги на кастомных для какой практической цели?
Установка ноль, устанавливает None.
None это не биржевое заполнение.
Если пробую так
то SYMBOL_FILLING_FOK & SYMBOL_FILLING_IOC так же возвращает None, а не 3 как было вами сказано выше.
Как всё таки установить правильно биржевое заполнение?
Воот, эта комбинация устанавливает All. Благодарю.
Но согласитесь эта комбинация выглядит не явно.
Мы же при установке свойств, не используем логическое "Не"
Если не SYMBOL_FILLING_FOK или не SYMBOL_FILLING_IOC
тогда используется скрытый SYMBOL_FILLING_RETURN - "Всегда есть"
В вашей комбинации, мы наоборот говорим явно, установить FOK или IOC.
В биржевом заполнении нет FOC или IOC по этому вводит в заблуждение.
По этому логично, эту комбинацию необходимо добавить в документацию, в колонку "Идентификатор" и его значение 3
Или для явности лучше добавить SYMBOL_FILLING_RETURN
Тогда Баг #20 исключаем из багов.
Но имеем ввиду, что нарушен признак явности.
Fillling-флаги на кастомных для какой практической цели?
Для корректного отображения спецификации инструмента.
Так же возможно эти режимы где то задействованы в глубинах терминала.
В тестере или ещё где, по этому привык всё заполнять явно.