Ошибки, баги, вопросы - страница 399

 

papaklass, спасибо за ответ!

Пример (наверное, повторюсь):

Минимальный лот = 1.0; минимальный шаг лота = 0.1. Котировка начинает падать, трейдер пытается закрыть длинную позицию размером 10.1 лота. В случае новостного рынка он может недождаться исполнение ордера ORDER_FILLING_AON. Разумнее применять RDER_FILLING_CANCEL. Встречная сделка на продажу исполняется частично (на 10.0 лота). Оставшаяся часть длинной позиции (0.1 лота) продолжает нести убытки. Закрыть ее нельзя, т.к. минимальный лот сделки = 1.0 лота. Т.е. трейдеру, чтобы полностью выйти с рынка необходимо:

1. Понести очевидные убытки, купив не менее 1.0 лота.

2. Пытаться совершить сделку на продажу на 1.1 лота с параметром ORDER_FILLING_AON.

 

Таким образом, с точки зрения здравомыслия ввод ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN накладывает строгое требование к величинам минимального лота и минимального шага лота, они должны быть равны. 

 

Еще пример.

Есть длинная позиция лотом 1.0 с установленными SL/TP. Трейдер пытается совершить обратную сделку (продажу) объемом 1.1 лота c указанием предельных SL/TP (для продажи).

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

А есть нет такого объема и у нас ORDER_FILLING_CANCEL? Мы получим ошибку о неправильных SL/TP. Отсюда, скажем скромно, мудрость - посылать SL/TP = 0 при перекрестных сделках с параметром ORDER_FILLING_CANCEL.

 

Понимаю, что многие из MQL5-программистов люди неглупые, но, считаю, что будет не лишним получить от разработчиков статью с грамотным разъяснением алгоритма проверки корректности выставления ордера.

Повторю свой вопрос. Есть ли такая статья? Если нет, можно ли надеется на ее появление и как скоро?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
papaklass:

При исполнении ордера объем оставшейся позиции не может быть меньше минимального.

Откуда такая уверенность?

На один пост выше привел пример (первый) случае, когда такая ситуация возможна.

Либо на сервере есть специальная фича, которая не дает частично закрыть ордер, чтобы остаток был менее минимального лота. Где это в документации явно написано? 

 
voix_kas:

Откуда такая уверенность?

На один пост выше привел пример (первый) случае, когда такая ситуация возможна.

Либо на сервере есть специальная фича, которая не дает частично закрыть ордер, чтобы остаток был менее минимального лота. Где это в документации явно написано? 

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

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

 
Interesting:

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

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

Что именно и где именно написано "на сервере..."? 

В Ваших сообщениях есть одна нехорошая вещь: домыслы. Уж простите за прямое оппонирование. :-)

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

 
voix_kas:

Что именно и где именно написано "на сервере..."? 

В Ваших сообщениях есть одна нехорошая вещь: домыслы. Уж простите за прямое оппонирование. :-)

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

Попробуйте скажем на Альпари (если не ошибаюсь у них минимальный лот 0.10) скриптом без всяких проверок открыть лот скажем на 0.01.

Посмотрите что на этот счет вернется в ответе (информация в структуре).

Можно также попробовать в тестере на счетах чемпионата 2010 года прогнать эксперта с лотом в 0.01.

После чего продолжим предметный разговор о том что и где возможно.

voix_kas:

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

Может ли атом водорода быть меньше атома водорода. может наверное, но это уже будет не наша вселенная и не "наши" физические законы...

И в каком же разделе документации должно об этом говориться "Азбука" или "Основы математики"?

Уж простите за прямое оппонирование. :-)

Automated Trading Championship 2010
  • championship.mql5.com
Automated Trading Championship 2010
 
Interesting:

Попробуйте скажем на Альпари (если не ошибаюсь   них минимальный лот 0.10) скриптом без всяких проверок открыть лот скажем на 0.01.

Посмотрите что на этот счет вернется в ответе (информация в структуре).

Можно также попробовать в тестере на счетах чемпионата 2010 года прогнать эксперта с лотом в 0.01.

После чего продолжим предметный разговор о том что и где возможно.

Уж простите за прямое оппонирование. :-)

Уважаемый, вы прочтите мой вопрос.

Я не спрашиваю, можно ли совершить сделку с объемом, который меньше минимально установленного лота на конкретном счете/типе счета. Разумеется, нет.

Мой вопрос звучит так: допустима ли с точки зрения концепции MQL5 ситуация, при которой частичное исполнение сделки оставляет остаток открытой позиции менее минимально допустимого лота? (разумеется, речь идет о способе исполнения ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN).

И речь не о эмпирических выводах, а о конкретных требованиях/ограничениях в "движке" MQL5, которые официально опубликованы.

 
voix_kas:

Уважаемый, вы прочтите мой вопрос.

Я не спрашиваю, можно ли совершить сделку с объемом, который меньше минимально установленного лота на конкретном счете/типе счета. Разумеется, нет.

Мой вопрос звучит так: допустима ли с точки зрения концепции MQL5 ситуация, при которой частичное исполнение сделки оставляет остаток открытой позиции менее минимально допустимого лота? (разумеется, речь идет о способе исполнения ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN).

И речь не о эмпирических выводах, а о конкретных требованиях/ограничениях в "движке" MQL5, которые официально опубликованы.

Только что проверил вручную все прекрасно закрывается. Открыл бай 0.21 лот, закрыл селл 0.2 лота в рынке остался бай 0.01 лот хотя минимальный 0.1. Как то на четверке еще проверял такое, там тоже ни каких ошибок нет при частичном закрытии
 
papaklass:

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

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

Ваша трактовка понятна. Но обратимся к документации:

SYMBOL_VOLUME_MIN    Минимальный объем для заключения сделки

SYMBOL_VOLUME_STEP Минимальный шаг изменения объема для заключения сделки

Т. е., для нашего примера возможны сделки (а значит и ордера) объёмом 0.1, 0.11, 0,12 ... и т.д.

и невозможны 0.09, 0.08, 0.07 .. и т.д.

Именно сделки, про объём позиции ничего не сказано.

Теперь пример: имеем лот buy 1.0, частично закрываемся sell 0.95 (условиям грануляции объёма соответствует), остаётся позиция объёмом 0.05 лота. И вот её мы уже закрыть не можем.

Надо сначала увеличить позицию до как минимум 1.05 (ордер не может быть меньше 0.1), а уж затем полностью её закрыть.

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

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
sergey1294:
Только что проверил вручную все прекрасно закрывается. Открыл бай 0.21 лот, закрыл селл 0.2 лота в рынке остался 0.01 лот хотя минимальный 0.1. Как то на четверке еще проверял такое, там тоже ни каких ошибок нет при частичном закрытии

Оставшуюся позицию объемом 0.01 лота удается закрыть противоположной сделкой такого же объема?

Т.е. сделка селл объемом 0.01 проходит (разумеется, полностью закрывая открытую позицию)?

 
voix_kas:

Уважаемый, вы прочтите мой вопрос.

Я не спрашиваю, можно ли совершить сделку с объемом, который меньше минимально установленного лота на конкретном счете/типе счета. Разумеется, нет.

Мой вопрос звучит так: допустима ли с точки зрения концепции MQL5 ситуация, при которой частичное исполнение сделки оставляет остаток открытой позиции менее минимально допустимого лота? (разумеется, речь идет о способе исполнения ORDER_FILLING_CANCEL и ORDER_FILLING_RETURN).

И речь не о эмпирических выводах, а о конкретных требованиях/ограничениях в "движке" MQL5, которые официально опубликованы.

Отвечу просто - не возможна и не допустима, при любых условиях (иначе это в СД сразу. Причем, не только "мы" бы возмутились, как тестеры клиентской части, а еще и брокеры тестирующие серверную часть).

Отвечая на техническую часть Вашего вопроса отвечу что проверка как и положено существует в клиентской части (терминал и тестер), а также без всяких сомнений в серверной.

Проверка в клиентской части необходимо во первых для предварительного отлова всевозможных нарушений торговых условий и правил, а во вторых для снижения нагрузки на сервер и избежание "атак" некорректными запросами (терминал просто не отправит запрос на сервер если обнаружит нарушение торговых правил или явную ошибку в запросе).

В свою очередь сервер (как последняя инстанция) также в обязательном порядке проверит торговый запрос на корректность (в том числе корректность предполагаемых последствий выполнения этого запроса).

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