Коллеги, решил расширить свою библиотеку и выполнить поиск не обращаясь к истории. Поиск удалившегося ордера только среди рыночных. Поднимал уже обсуждения, думал решу проблему, но оказалось нет. Мы ищем ордер которого нет в рыночных! Магик или тиккет записан в глобальной переменной. Находим удалившийся ордер и выcтавляем следующий ордер. Найти его мало, надо в отношении его совершить действия(!). Проблема что выдается постоянное значение тру(1): Вот на чем я остановился:
Ну так выбери этот ордер по тикету и проверь время закрытия. Если больше нуля, то он удалён.
Ну так выбери этот ордер по тикету и проверь время закрытия. Если больше нуля, то он удалён.
не прокатит, выбрать можно только явно указав MODE_TRADES или MODE_HISTORY, в MODE_TRADES все рыночные ордера и отложенные, а в MODE_HISTORYвсе закрытые ордера и все удаленные будут
задача у топикстартера с "выкрутасами", ну если не обращаться к истории ордеров, значит принудительно выбрать так:
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ордер открыт"); else Print("Ордера нет в рынке");
только перед вызовом OrderSelect() нужно обязательно проверить доступность сервера иначе ошибку выбора ордера не обработаете, я про: IsConnected(), IsTradeAllowed(),IsTradeContextBusy()
хотя оптимальнее все таки в истории искать закрытый ордер, куда он оттуда денется? ну разве, что юзер поставит глубину истории ордеров текущий день )))
не прокатит, выбрать можно только явно указав MODE_TRADES или MODE_HISTORY, в MODE_TRADES все рыночные ордера и отложенные, а в MODE_HISTORYвсе закрытые ордера и все удаленные будут
задача у топикстартера с "выкрутасами", ну если не обращаться к истории ордеров, значит принудительно выбрать так:
только перед вызовом OrderSelect() нужно обязательно проверить доступность сервера иначе ошибку выбора ордера не обработаете, я про: IsConnected(), IsTradeAllowed(),IsTradeContextBusy()
хотя оптимальнее все таки в истории искать закрытый ордер, куда он оттуда денется? ну разве, что юзер поставит глубину истории ордеров текущий день )))
bool OrderSelect( int index, // индекс или тикет ордера int select, // флаг способа выбора int pool=MODE_TRADES // источник данных для выбора );
Примечание
Параметр pool игнорируется, если ордер выбирается по номеру тикета. Номер тикета является уникальным идентификатором ордера.
Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых ордеров терминала.
bool OrderSelect( |
Примечание
Параметр pool игнорируется, если ордер выбирается по номеру тикета. Номер тикета является уникальным идентификатором ордера.
Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых ордеров терминала.
наверное да, никогда не выбирал по тикету из истории ордеров - не было необходимости, проверять нужно как работает, тогда так:
if(OrderSelect(ticket,SELECT_BY_TICKET)) { if(OrderCloseTime()>0) Print("Ордера нет в рынке"); Print("Ордер открыт"); }
не хочу новую тему открывать, но как оказалось решаю похожую задачу:
необходимо серию ордеров частично закрыть и потом выставить безубыток для этих ордеров
проблема: оказывается, при частичном закрытии ордера у него тикет изменяется, т.е. если выбрать ордер после частичного закрытия по тикету, то у него окажется время закрытия >0 ?...
а бывают случаи, что при частичном закрытии ордера у него не изменяется тикет? - искал на форуме поиском, видел решение этого вопроса через дописывание в комментарий ордера информации и анализ комментария ордера - плохое решение, нужно что то надежнее
как правильно закрыть частично серию ордеров и потом найти остатки ордеров?
а бывают случаи, что при частичном закрытии ордера у него не изменяется тикет?
Нет, тикет всегда новый.
искал на форуме поиском, видел решение этого вопроса через дописывание в комментарий ордера информации и анализ комментария ордера - плохое решение, нужно что то надежнее
как правильно закрыть частично серию ордеров и потом найти остатки ордеров?
А чем не устраивает анализ комментария? При частичном закрытии в комментарий как раз и пишется тикет ордера от которого остался остаток.
1. Нет, тикет всегда новый.
2. А чем не устраивает анализ комментария? При частичном закрытии в комментарий как раз и пишется тикет ордера от которого остался остаток.
1. да, я в этом убедился, но на 2-х серверах проверил, может быть, что бывают серверы по другому настроены? т.е. тикет частично закрытого ордера останется прежний?
2. зависит от настроек сервера, некоторые серверы в комментарий дописывают свою информацию, некоторые серверы в 0 часов удаляют комментарий или пишут информацию о свопе, а вот Ваш пример с дозаписью комментария я пока не встречал, значит опять же анализ комментария ордера не надежный способ
Вам нужно обратить внимание вот на чти строки в мануале
Отличить открытый ордер от отложенного ордера можно по типу ордера. Если время закрытия ордера не равно 0, то ордер является закрытым или удаленным отложенным и был выбран из истории терминала. Отличить закрытый ордер от удаленного отложенного также можно по типу ордера.
При выборке ордера нужно добавить
OrderCloseTime==0;//Этотот тип ордера который висит в рынке он может быть отложенным или активираванным тоесть ордер в торгах
OrderCloseTime!=0;//Это ордера которые находятся в карзине брокера и которые уже были сняты с рынка.
Коллеги, поиск по тиккету в истории это давно решенная задача. Даже время закрыт он был или нет не нужно. Поиск по тиккету или уникальному ордеру.
Почему мне нужен поиск без обращения к истории. Это скорость обработки, так как рыночных ордеров меньше чем ордеров в истории - рыночных 10, а в истории сотни...

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Коллеги, решил расширить свою библиотеку и выполнить поиск не обращаясь к истории. Поиск удалившегося ордера только среди рыночных. Поднимал уже обсуждения, думал решу проблему, но оказалось нет. Мы ищем ордер которого нет в рыночных! Магик или тиккет записан в глобальной переменной. Находим удалившийся ордер и выcтавляем следующий ордер. Найти его мало, надо в отношении его совершить действия(!). Проблема что выдается постоянное значение тру(1): Вот на чем я остановился: