ФОРТС: OnTradeTransaction() коды возврата - страница 2

 
Михаил:

Мы с Вами говорим "на разных языках".

Ордер, может быть удалён в результате кросс-сделки,

а придет ORDER_STATE_CANCELED с кодом возврата "0".

Брокер тут ни причём. 

Вы понимаете что МТ5 универсальная платформа, и при адаптации к условиям конкретного шлюза, Брокер (каждый брокер) по своему настраивает серверную часть.

Что программист Брокера пропишет то сервер и будет возвращать.

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

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

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

В любом случае повторюсь, без СД Брокера тут не разобраться. 

 
Nikolay Demko:

Вы понимаете что МТ5 универсальная платформа, и при адаптации к условиям конкретного шлюза, Брокер (каждый брокер) по своему настраивает серверную часть.

Что программист Брокера пропишет то сервер и будет возвращать.

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

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

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

В любом случае повторюсь, без СД Брокера тут не разобраться. 

Уважаемый Николай!

Если КАЖДЫЙ прграммер брокера будет писать "свои" коды возврата....

Подумайте, что будет :) 

 
Михаил:

Уважаемый Николай!

Если КАЖДЫЙ прграммер брокера будет писать "свои" коды возврата....

Подумайте, что будет :) 

Не передёргивайте, программер Брокера настраивает сервер один раз при предстартовой подготовке, и не что попало, а лишь из имеющегося набора.

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

Поэтому настройка серверной части производится у самого брокера, это раз. А второе почему нужно ображаться к брокеру, это потому что у него есть логи серверной части, и лишь когда брокер скажет так мол и так, это баг сервера можно уже к MQ, хотя в таком случае вам уже не придётся беспокоиться, они сами обратятся к разработчику

 
Nikolay Demko:

Не передёргивайте, программер Брокера настраивает сервер один раз при предстартовой подготовке, и не что попало, а лишь из имеющегося набора.

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

Поэтому настройка серверной части производится у самого брокера, это раз. А второе почему нужно ображаться к брокеру, это потому что у него есть логи серверной части, и лишь когда брокер скажет так мол и так, это баг сервера можно уже к MQ, хотя в таком случае вам уже не придётся беспокоиться, они сами обратятся к разработчику

Ответ брокера:

 Добрый день.

 

Нет, эта настройка на стороне разработчиков.

В конце прошлого года поднимался вопрос следующего содержания:

 

Московская биржа штрафует за ошибочные транзакции. Целиком положение можно посмотреть по ссылке http://fs.moex.com/files/4266 

Так, например, биржа штрафует:

Тип Транзакции*

Результат выполнения (код ошибки)*

Балл Q

AddOrder

Возникла кросс-сделка (31)

Q1

Недостаточно средств клиента (332)

Q2

Недостаточно средств брокерской фирмы (333)

Q3

Заявка FOK не сведена (4103)

Q4

DelOrder

Заявка не найдена (14)

Q5

MoveOrder

Возникла кросс-сделка (31)

Q6

Заявка не найдена (50)

Q7

Недостаточно средств клиента (332)

Q8

Недостаточно средств брокерской фирмы (333)

Q9

DelUserOrders

Транзакция завершена успешно,

и не удалено ни одной заявки

Q10

 

В МТ5 кроме кода возврата "недостаточно средств клиента" остальные коды возврата отсутствуют в "кодах возврата торгового сервера".

От MetaQuotes был получен следующий ответ:

 

Здравствуйте,

1. К сожалению, вопрос с трансляцией кодов ответа биржи в том или ином виде не простой и требует ряда изменений.  Сейчас ведётся поиск наиболее приемлемого решения. Скорее всего нужный функционал будет добавлен в течении следующего года.

2. Что касается таблицы ошибочных транзакций - с учётом того что торговый сервер МТ5 осуществляет предварительную проверку торговых запросов клиента (в том числе контроль маржинальных требований), то фактически отказ от биржи может быть получен в 2-х случаях:

Тип Транзакции*

Результат выполнения (код ошибки)*

Балл Q

AddOrder

Возникла кросс-сделка (31)

Q1

Недостаточно средств клиента (332)

Q2

Недостаточно средств брокерской фирмы (333)

Q3

Заявка FOK не сведена (4103)

Q4

DelOrder

Заявка не найдена (14)

Q5

MoveOrder

Возникла кросс-сделка (31)

Q6

Заявка не найдена (50)

Q7

Недостаточно средств клиента (332)

Q8

Недостаточно средств брокерской фирмы (333)

Q9

DelUserOrders

Транзакция завершена успешно,

и не удалено ни одной заявки

Q10


Оба из которых практически маловероятны.

 

С уважением,

Михаил Батуров

Начальник Отдела поддержки пользователей торговых систем

Управления сопровождения торговых систем

Брокерский дом «ОТКРЫТИЕ»

 

Иногда, MQ, в некоторых ответах ставят в тупик.

Пример:

MQ: "Оба из которых практически маловероятны.

 

Да мало ли по какой причине произошел сбой!

По символу MGNT 12.05.2015 произошли изменения (шаг цены стал равным 1,

цены должны быть целыми числами)

Брокер, вероятно, не отслеживает изменения биржи:

 

Если бы у меня в советнике не стояла защита по кодам возврата,

то я бы получил за несколько секунд тысячи транзакций:

 

2015.05.15 10:00:10.051 Forts_trader (MGNT-6.15,H1)     StopTrading: Неправильная цена в запросе

А такая ситуация тоже должна быть "маловероятна"! 


 

Уважаемые разработчики!

Ответьте, пожалуйста, когда же, наконец, Вы обратите

внимание на КОДЫ ВОЗВРАТА торгового сервера

Когда "подглючивает" сервер МТ5 или сбой на бирже, то происходит следующее:

Эксперт посылает приказы удалить СУЩЕСТВУЮЩИЙ  ордер, а в ответ приходит

"Invalid request" !!!! И эксперт продолжает "долбить" сервак приказами на удаление

ордера. 

//+------------------------------------------------------------------+
// Remove order                                                      |
//+------------------------------------------------------------------+
void COrder::Remove()
{
  if ( ticket > 0 )
  {
    if ( OrderSelect( ticket ) )
    {
      mem_magic = ulong( OrderGetInteger( ORDER_MAGIC ) );
      mem_tick = GetTickCount();
      req_id = 0;
      MqlTradeRequest request = {0};
      MqlTradeResult  result  = {0};
            
      request.action = TRADE_ACTION_REMOVE;
      request.order = ticket;
          
      if ( OrderSendAsync( request, result ) )
      {
        if ( result.retcode == TRADE_RETCODE_PLACED )
        { 
          req_id = result.request_id;
//---          
          switch( order_status )
          {
            case BUY_ORDER:  state = ORD_BUY_DO_CANCEL;
                             break;
                
            case SELL_ORDER: state = ORD_SELL_DO_CANCEL;
                             break;           
          } 
          SetTransCount( true );
        }
        else
        {
          mem_magic = 0;
          mem_tick = 0;
          CheckError( result.retcode, "Remove: Результат удаления ордера не верен! Причина: ", order_status, ticket );
        }  
      }
      else
      {
        mem_magic = 0;
        mem_tick = 0;
        CheckError( result.retcode, "Remove: Ордер не отослан! Причина: ", order_status, ticket );
      }
    }
    else
    {
      ticket = 0;
      modify_count = 0;
    }
  }
  else
  {
    modify_count = 0;
  }
}

 

 Как может быть не правильный запрос, если ордер ДЕЙСТВУЮЩИЙ???

2015.09.15 15:27:31.402 Trades  'xxxxx': failed modify order #20619541 sell limit 35.00 BR-11.15 at 50.33000 sl: 0.00000 tp: 0.00000 -> 49.19000, sl: 0.00000 tp: 0.00000 [Invalid request]
2015.09.15 15:27:32.611 Trades  'xxxxx': failed cancel order #20619541 sell limit 35.00 BR-11.15 at 50.33000 [Invalid request]
2015.09.15 15:27:34.163 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:42.815 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:43.006 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:43.358 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:43.407 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:44.562 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:44.572 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:45.593 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:45.892 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:47.007 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:47.407 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:47.769 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:47.789 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:50.819 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:50.879 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:27:50.900 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:28:04.330 Trades  'xxxxx': failed cancel order #20619543 buy limit 50.00 BR-11.15 at 48.29000 [Invalid request]
2015.09.15 15:28:04.330 Trades  'xxxxx': failed cancel order #20619541 sell limit 35.00 BR-11.15 at 50.33000 [Invalid request]
 

Опять начались постоянные редактирования поста. Как буд-то от этого тема становится заметнее разработчикам.

Вы бы в сервис-деске лучше бы их теребили каждый день, а не форум обновляли невидимыми обновлениями... 

 
Andrey Khatimlianskii:

Опять начались постоянные редактирования поста. Как буд-то от этого тема становится заметнее разработчикам.

Вы бы в сервис-деске лучше бы их теребили каждый день, а не форум обновляли невидимыми обновлениями... 

Доброе утро, Андрей!

А там тоже никто не отвечает (всех "достал"). 

 
А здесь, сообщество будет знать о текущих проблемах.
 

А Вы, Андрей, против исправления ошибок в МТ5 и

улучшения торгового функционала платформы? 

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