Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
OrderGetInteger -работает исключительно с отложенными ордерами в рынке
HistoryOrderGetInteger -работает с исполненными ордерами в истории
Кому ещё интересно, код, исполняемый файл и лог эксперта во вложении.
МТ-5 ФОРТС
Выводы:
1. Пока ордер полностью не исполнился или не снят - НИКАКОЙ истори по нему нет.
2. А у частично исполненого ордера ORDER_POSITION_ID не ставится.
Всем спасибо, разобрался.
DK 0 10:29:26.734 Trades : deal #4522435 sell 1.00 SBPR-9.14 at 5255 done (based on order #4988265)
теперь оно - частичное исполнение.
Ребята, да вы что? Этот листинг показывает что один ордер ( #4988265 ) исполнился двумя сделками ( #4522435 & #4522434) и не имеет отношение к частичному исполнению.
Вот как это происходит, допустим мы хотим купить 50 контрактов VTBR-9.14 по рынку. Купить мы можем только у поставщиков ликвидности, тех ребят что выставляют лимитные заявки на продажу. Их уровень и объем видны в верхней половине стакана. Смотрим его:
Выставляем ордер на покупку. Наш ордер могут выполнить только 4 разных продавца. Те что разместили лимитные заявки на продажу на различных торговых уровнях. Видно что купить мы можем 1 контракт по цене 3874, 40 контрактов по цене 3875, 1 контракт по цене 3876 и 28 контрактов по цене 3877. Значит, наш ордер исполнят сразу 4 продавца, четырьмя сделками:
Объем/
доступный объем
Совокупный
Объем
Обратите внимание на время. Время заключение сделок необязательно совпадает с временем выставлением ордера. Приведу еще один пример что бы было понятней:
Частичное исполнение
Допустим мы хотим купить 100 контрактов VTBR-9.14 по цене не хуже чем 3873. Выставляем BuyLimit объемом 100 контрактов на уровень 3873. Однако к моменту выставления заявки уже имеются несколько продавцов, которые продают свои контракты по более лучшей цене, чем указана в нашем ордере:
Сразу после выставления этого лимитного ордера, произойдут трейды в количестве 5 штук, которые частично исполнят нашу лимитную заявку в объеме 70 контрактов (1+3+1+39+26).
Совершенные трейды попадут в историю сделок, при этом сам лимитный ордер по-прежнему будет активен и наблюдатся в вкладке "торговля" в таком виде:
После того как наш ордер слижет лимитные заявки противоположенного направления, его цена будет лучшим предложением для желающих продать свои контракты:
Т.к. наше предложение лучше, а рынок ликвиден, наш ордер начнут исполнять другие участники рынка, с помощью встречных, рыночных или отложенных ордеров.
Через некоторое время ордер исполнится и перейдет во кладу "История".
Если рассмотреть весь процесс во времени получится следующее:
1. Выставляем лимитный ордер. Его время установки соответствует ORDER_TIME_SETUP_MSC.
2. Начинают срабатывать сделки, инициированные этим ордером. Эти сделки сразу попадают в историю. Сам ордер еще находится на вкладке "Торговля" и выглядит так, как это показано на рисунке выше.
3. Спустя некоторое время все сделки срабатывают, ордер набирает необходимый объем и переносится в историю ордеров. Его время исполнения ORDER_TIME_DONE в общем случае соответствует последней совершенной сделке.
Ордер, по каким-то причинам (нехватка ликвидности, истечение срока действия ордера), может не набрать нужный объем. В таком случае он перенесется в историю в состоянии "частично исполнен". Т.е. не весь заявленный в нем объем будет исполнен сделками.
Обратите внимание на скриншот этого ордера:
Ордер исполнялся в течении 25 секунд (!) и все это время находился на вкладке активных ордеров. И лишь с последним трейдом был перенесен в историю. Его ORDER_TIME_DONE соответственно стал равен времени последнего трейда.
P/S Как я и обещал( по поводу опубликования ответа сервисдеск).
Ответа от сервисдеск не будет, т.к я снял свою заявку за ненадобностью.
Спасибо komposter-у, за предложение написать тестового советника с
подробными логами.
Нормально!? А Integer-а, который возился с Вами целый вечер и заставлял Вас ДУМАТЬ, не хотите поблагодарить?
Вот и помогай после такого отношения...
Нормально!? А Integer-а, который возился с Вами целый вечер и заставлял Вас ДУМАТЬ, не хотите поблагодарить?
Вот и помогай после такого отношения...
В этом его ошибка, надо было не помогать думать, а сделать за него.
sandex:
вы не в той части смотрите, OrderGetInteger(ORDER_POSITION_ID) -вы пытаетесь смотреть в той части которая не участвовала в открытии/изменении/закрытии позиции
вам надо смотреть вот так HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)
-----------------
Ваше высказывание?
Хотите продолжить?
sandex:
вы не в той части смотрите, OrderGetInteger(ORDER_POSITION_ID) -вы пытаетесь смотреть в той части которая не участвовала в открытии/изменении/закрытии позиции
вам надо смотреть вот так HistoryOrderGetInteger(ticket,ORDER_POSITION_ID)
-----------------
Ваше высказывание?
Хотите продолжить?
Зачем? Зачем вы это делаете? Типа человек написал чепуху? Не было бы этой чепухи, если бы вы свою чепуху не писали. Вы же писали, что запись об ордере появляется в истории ордеров и при этом он висит в рынке.
Хотите продолжить?
Завершение, думаю последнее.
Ни на одном форуме, где я раньше участвовал и участвую
нет такого отношения форумчан друг к другу!
Форум - это сообщество людей-единомышленников, решающих (обсуждающих) СОВМЕСТНО
кокие-то проблемы какого-то напрвления, где его участники помогают друг другу.
Все люди - РАЗНЫЕ, один "на лету схватывает" суть вопроса, а другому нужно время,
чтобы осмыслить и разобраться.
Подумайте на досуге об этом!
P/S А спасибо Yurich-у и komposter-у я сказал, именно за то, что
ни одного лишнего слова они не сказали, только по делу и с уважением
к человеку( пусть даже он не прав или заблуждается).
Вот они - пример настоящих форумчан!
Я уже уселся в партере. Жду с нетерпением.... :)