Разработчики! Автообновление! - страница 3

 
Renat:

Только что повторил такой ордер, а потом программно его удалил вашим скриптом:

Вот скрипт, чуть упростил и убрал лишнее (для удаления ордера достаточно его номера):

Для моего эксперта мне нужен этот "лишний код"

А я и не говорю, что ВСЕГДА не удаляется, ИНОГДА не удаляется.:( 

 
Mikalas:

Для моего эксперта мне нужен этот "лишний код"

А я и не говорю, что ВСЕГДА не удаляется, ИНОГДА не удаляется.:( 

Тогда поможет распринтовка и контроль всех операций.

Может пробуете удалять ордер, близко стоящий к исполнению? Печатайте также текущие bid/ask цены при попытке удаления.

 
Renat:

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

Но ошибка классическая, ей минимум 10 лет. Самый простой способ - удалять циклом с конца.

Ндаа, видимо тут была все-же моя ошибка. И ф-ия теперь из 20 раз ни раз не подвела.
bool DeleteOrders()
  {
//---
   int total=OrdersTotal();
   if(total<1) return(true);
   ulong t=0;
//---
   for(int i=total-1;i>=0;i--) if((t=OrderGetTicket(i))>0) if(!Trade.OrderDelete(t)) return(false); else Sleep(500);
//---
   return(true);
  }
 
Renat:

Тогда поможет распринтовка и контроль всех операций.

Может пробуете удалять ордер, близко стоящий к исполнению? Печатайте также текущие bid/ask цены при попытке удаления.

Renat,

Если ордер действующий, то я МОГУ ЕГО УДАЛИТЬ (не важно какая цена у него)!

Для этого я делаю

If ( OrderSelect( ticket ) ) 

Если в МТ-5 есть ситуация, которую Вы описываете ( цена близкая к исполнению),

то тогда ОЙ!

Я всегда выставляю ордера САМЫЕ близкие к исполнению!!!! 

 
Mikalas:

Renat,

Если ордер действующий, то я МОГУ ЕГО УДАЛИТЬ (не важно какая цена у него)!

Если в МТ-5 есть ситуация, которую Вы описываете ( цена близкая к исполнению),

то тогда ОЙ! 

Это называется "реалии рынка" безотносительно торговой платформы.

Не все биржи или провайдеры ликвидности позволят выдернуть ордер, близкий к исполнению. Это их право и они решают как процессить ордеры. Исполнение находится сильно далеко от терминала, цепочка исполнения может быть многоступенчатой и брокер имеет право гарантировать, что у него не выдернут ордер, который близок к исполнению.

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

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

Я всегда выставляю ордера САМЫЕ близкие к исполнению!!!!

Вот с этого и надо было начинать объяснение проблем.

 
Renat:

Это называется "реалии рынка" безотносительно торговой платформы.

Не все биржи или провайдеры ликвидности позволят выдернуть ордер, близкий к исполнению. Это их право и они решают как процессить ордеры. Исполнение находится сильно далеко от терминала, цепочка исполнения может быть многоступенчатой и брокер имеет право гарантировать, что у него не выдернут ордер, который близок к исполнению.

Все это зависит от конечной точки исполнения и их регламента.

Причем тут биржи и брокеры?

Если я установил ордер, то я могу удалить его ( я работаю на ФОРТС, а не на кухне ФОРЕКС )! 

 
Mikalas:

Причем тут биржи и брокеры?

Если я установил ордер, то я могу удалить его ( я работаю на ФОРТС, а не на кухне ФОРЕКС )! 

Я вполне могу согласиться, что мир вращается вокруг вас, а брокеры и биржи готовы безмерно рисковать ради вас.

Но вам лучше все-таки прислушаться к объяснениям.


В любом случае, расширьте логгирование, включая распечатку всех цен и проверьте все еще раз. К сожалению, вы не вполне полно описали ситуацию и не имеете важной составляющей - окружение рынка в момент отказа снятия ордера.

 
Renat:

Я вполне могу согласиться, что мир вращается вокруг вас, а брокеры и биржи готовы безмерно рисковать ради вас.

Но вам лучше все-таки прислушаться к объяснениям.


В любом случае, расширьте логгирование, включая распечатку всех цен и проверьте все еще раз. К сожалению, вы не вполне полно описали ситуацию и не имеете важной составляющей - окружение рынка в момент отказа снятия ордера.

Я очень ценю Ваш тонкий юмор, но как Вы объясните это:

 

Это мой лог возврата функции COrder::Remove

if ( OrderSendAsync( request, result ) )
{
  if ( result.retcode == TRADE_RETCODE_PLACED )
  { 
    req_id = result.request_id;
  }
}
else
{
  Print( "Ордер не удалён! Билет = ", ticket, "; Код возврата = ", GetRetCode( result.retcode ) );
}
Это сообщение выдает ТЕРМИНАЛ, а не биржа или брокер!!
 
Mikalas:

Я очень ценю Ваш тонкий юмор, но как Вы объясните это:

 

Это мой лог возврата функции COrder::Remove

Еще раз повторю - распечатывайте все что можно и возвращайтесь с новыми данными, пожалуйста.

И если выдает неправильный запрос, значит еще усиленнее ищите возможные причины. Я сделал немало, по крупицам предоставленных данных отвечая и подсказывая куда смотреть.

 
Renat:

Еще раз повторю - распечатывайте все что можно и возвращайтесь с новыми данными, пожалуйста.

И если выдает неправильный запрос, значит еще усиленнее ищите возможные причины. Я сделал немало, по крупицам предоставленных данных отвечая и подсказывая куда смотреть.

Я после 23:50 ( сейчас мой лог пустой, всё в терминале) все логи отправлю в сервисдекс, куда я уже вчера обратился. 

 

P/S Понятно, что очень часто бывают ошибки пользователей, но MQ, каждый раз, совершая свою ошибку,

всячески пытается опровергнуть это.

Я ОЧЕНЬ ХОРОШО понимаю, что без ошибок не бывает в таком огромном проекте.

А тестирование нового билда у вас не на высоте. Поэтому и предложил дать

возможность пользователям остаться на предыдущем билде.

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