Пользовательские символы. Ошибки, баги, вопросы, предложения. - страница 15

 
Roman:
Ну что же тут не понятного, в сообщении с багом #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_FOK, но нет флага SYMBOL_FILLING_IOC, то SYMBOL_FILLING_MODE вернёт 1. При этом "Вернуть" есть.
  • Если есть флаг SYMBOL_FILLING_IOC, но нет флага SYMBOL_FILLING_FOK, то SYMBOL_FILLING_MODE вернёт 2. При этом "Вернуть" есть.
  • Если есть флаг SYMBOL_FILLING_FOK, и есть флаг SYMBOL_FILLING_IOC, то SYMBOL_FILLING_MODE вернёт 3. При этом "Вернуть" есть.
Отсюда вывод: "Вернуть" есть всегда, а два других режима определяются наличием флагов.
 
Artyom Trishkin:

Правильно - нет. Это не идентификаторы - это флаги. Потому, что SYMBOL_FILLING_RETURN - есть всегда. А остальные два флага - могут либо быть оба, либо по-одному:

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

Покажите пожалуйста пример как правильно тогда установить флаг для биржевого заполнения

CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, SYMBOL_FILLING_RETURN);

А то я что то запутался в этих не явных флагах.

 
Roman:

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

Покажите пожалуйста пример как правильно тогда установить флаг для биржевого заполнения

А то я что то запутался в этих не явных флагах.

Ноль - если иных флагов не нужно.

 
Roman:

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

По чему бы не установить явно?  SYMBOL_FILLING_RETURN

Покажите пожалуйста пример как правильно тогда установить флаг для биржевого заполнения

А то я что то запутался в этих не явных флагах.

Вот из документации:

"В режимах исполнения "По рынку" и "Биржевой" политика заполнения "Вернуть" всегда разрешена для всех типов ордеров. Разрешенность остальных типов проверяется при помощи свойств SYMBOL_FILLING_FOK и SYMBOL_FILLING_IOC."

 
Artyom Trishkin:

Ноль - если иных флагов не нужно.

Установка ноль, устанавливает None.
None это не биржевое заполнение.
Если пробую так 

CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, SYMBOL_FILLING_FOK & SYMBOL_FILLING_IOC);

то SYMBOL_FILLING_FOK & SYMBOL_FILLING_IOC так же возвращает None, а не 3 как было вами сказано выше.

Как всё таки установить правильно биржевое заполнение?

CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, SYMBOL_FILLING_RETURN);
 

А вот так вот

CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, 3);

Устанавливает All, что соответствует всем разрешённым.

А в документации в колонке "Значение", не чего нет, пусто!
И в колонке "Идентификатор" для строки "Вернуть", всё же предлагаю указать правильную комбинацию для флагов!
Почему бы просто не добавить SYMBOL_FILLING_RETURN с значением 3, явно и понятно всем.

 
Roman:

Fillling-флаги на кастомных для какой практической цели?

 
Roman:

Установка ноль, устанавливает None.
None это не биржевое заполнение.
Если пробую так 

то SYMBOL_FILLING_FOK & SYMBOL_FILLING_IOC так же возвращает None, а не 3 как было вами сказано выше.

Как всё таки установить правильно биржевое заполнение?

CustomSymbolSetInteger(SName, SYMBOL_FILLING_MODE, SYMBOL_FILLING_FOK | SYMBOL_FILLING_IOC);
 
Artyom Trishkin:

Воот, эта комбинация устанавливает All. Благодарю.
Но согласитесь эта комбинация выглядит не явно.
Мы же при установке свойств, не используем логическое "Не"

Если не SYMBOL_FILLING_FOK или не SYMBOL_FILLING_IOC
тогда используется скрытый 
SYMBOL_FILLING_RETURN "Всегда есть"

В вашей комбинации, мы наоборот говорим явно, установить FOK или IOC.
В биржевом заполнении нет FOC или IOC по этому вводит в заблуждение.

По этому логично, эту комбинацию необходимо добавить в документацию, в колонку "Идентификатор" и его значение 3
Или для явности лучше добавить 
SYMBOL_FILLING_RETURN

Тогда Баг #20 исключаем из багов.
Но имеем ввиду, что нарушен признак явности.

 
fxsaber:

Fillling-флаги на кастомных для какой практической цели?

Для корректного отображения спецификации инструмента.
Так же возможно эти режимы где то задействованы в глубинах терминала.
В тестере или ещё где, по этому привык всё заполнять явно.