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

 
Andrey Miguzov #:

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

Если есть тикет ордера, но нет цены - то это норм.

Было бы классно, если бы Вы код fxsaber/аналогичный код выполнили на реальном счете и логи показали - это конкретное доказательство, что есть ошибки.

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

ну, вот теперь я вижу нотки конструктива. но, только нотки. если нет возможности проверить на реальном счете, то какой смысл было начинать бодаться? то есть, все должны поверить на слово исключительно на авторитет Сабера (или кого либо ещё)?

вот в том то и дело, речь не о тикете ордера! а о тикете сделки.

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

 
fxsaber #:

ЗЫ Прослушивалка всех торговых операций.

  1. Запустите прослушивалку.
  2. Выставите ордер скриптом или руками.
  3. Закройте прослушивалку.
  4. Смотрите результат в \MQL5\Files\OnTradeTransaction.txt.
Это полная картина, что происходит внутри терминала.

Открытие маркет-ордера. Часть лога (в приложении).

2022.06.13 11:34:59.619
Trans.deal = 0
Trans.order = 0
Trans.symbol = 
Trans.type = TRADE_TRANSACTION_REQUEST (10)
Trans.order_type = ORDER_TYPE_BUY (0)
Trans.order_state = ORDER_STATE_STARTED (0)
Trans.deal_type = DEAL_TYPE_BUY (0)
Trans.time_type = ORDER_TIME_GTC (0)
Trans.time_expiration = 1970.01.01 00:00:00
Trans.price = 0.0
Trans.price_trigger = 0.0
Trans.price_sl = 0.0
Trans.price_tp = 0.0
Trans.volume = 0.0
Trans.position = 0
Trans.position_by = 0
Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 


2269836084
Request.symbol = EURUSD
Request.volume = 1.0
Request.price = 0.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = 
Request.position = 0
Request.position_by = 0
Result.retcode = 10008
Result.deal = 0
Result.order = 
2269836084
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = 
Result.request_id = 23
Result.retcode_external = 0

Сразу после этого сообщения OrderSend вернул true.


2022.06.13 11:34:59.647
Trans.deal = 2259843812
Trans.order = 


2269836084
Trans.symbol = EURUSD
Trans.type = TRADE_TRANSACTION_DEAL_ADD (6)
Trans.order_type = ORDER_TYPE_BUY (0)
Trans.order_state = ORDER_STATE_STARTED (0)
Trans.deal_type = DEAL_TYPE_BUY (0)
Trans.time_type = ORDER_TIME_GTC (0)
Trans.time_expiration = 1970.01.01 00:00:00
Trans.price = 1.04783
Trans.price_trigger = 0.0
Trans.price_sl = 0.0
Trans.price_tp = 0.0
Trans.volume = 1.0
Trans.position = 


2269836084
Trans.position_by = 0
Request.action = ENUM_TRADE_REQUEST_ACTIONS::0 (0)
Request.magic = 0
Request.order = 0
Request.symbol = 
Request.volume = 0.0
Request.price = 0.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = 
Request.position = 0
Request.position_by = 0
Result.retcode = 0
Result.deal = 0
Result.order = 0
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = 
Result.request_id = 0
Result.retcode_external = 0

Сообщение о только что пришедшей сделке в Терминал.


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

А могла и вовсе не прийти - реджект маркет-ордера, например, через несколько секунд. Однако, маркет-ордер был выставлен, поэтому true от OrderSend и можно работать дальше.

Файлы:
 
Andrey Dik #:

Согласен с тобой по всем моментам.

Но, согласен ли ты с тем, что если известен тикет сделки, то должна быть известна и цена сделки? Простой вопрос, да или нет.

А вас не затруднит уточнить откуда известен тикет сделки?

И уточните пожалуйста, вы говорите о счёте hadge или netting?

 
Alexey Viktorov #:

А вас не затруднит уточнить откуда известен тикет сделки?

И уточните пожалуйста, вы говорите о счёте hadge или netting?

в структуре ответа MqlTradeResult result после вызова OrderSend ().

речь о счете неттинг. 

 
Andrey Dik #:

в структуре ответа MqlTradeResult result после вызова OrderSend ().

речь о счете неттинг. 

Вы хотите сказать, что структура заполнена не вся?

struct MqlTradeResult
  {
   uint     retcode;          // Код результата операции
   ulong    deal;             // Тикет сделки, если она совершена
   ulong    order;            // Тикет ордера, если он выставлен
   double   volume;           // Объем сделки, подтверждённый брокером
   double   price;            // Цена в сделке, подтверждённая брокером
   double   bid;              // Текущая рыночная цена предложения (цены реквота)
   double   ask;              // Текущая рыночная цена спроса (цены реквота)
   string   comment;          // Комментарий брокера к операции (по умолчанию заполняется расшифровкой кода возврата торгового сервера)
   uint     request_id;       // Идентификатор запроса, устанавливается терминалом при отправке 
   uint     retcode_external; // Код ответа внешней торговой системы
  };

Тикет сделки есть, а цены сделки нету?

Или вы хотите выбрать сделку из истории когда она ещё не помещена в историю?

 
Alexey Viktorov #:

Вы хотите сказать, что структура заполнена не вся?

Тикет сделки есть, а цены сделки нету?

Или вы хотите выбрать сделку из истории когда она ещё не помещена в историю?

да, именно это я и говорю уже второй день. тикет сделки есть, а её цену нету. 

но, при этом, даже если позже запросить цену позиции выбрав по тикету или по символу, то получаем 0.0 цены позиции. адекватную цену позиции можно узнать только через какое то неопределенно долгое время.
и это совершенно неприемлемое поведение брокера. в данном случае виноват именно брокер. 
 
Andrey Dik #:
да, именно это я и говорю уже второй день. тикет сделки есть, а её цену нету. 

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

Андрей, давайте отделим мух от котлет… Давайте конкретно сначала выясним о структуре MqlTradeResult, для полного понимания вам не мешало-бы после OrderSend() распечатать структуру и показать всем. 

Распечатайте каждый шаг…  OrderSend вернула true, вот есть об этом запись… Вот все поля структуры, вот выбрана позиция, результат и запись об успешности выбора… И так далее. Уверяю вас, разработчики не будут разбираться в этих перепалках. И плюс ко всему всем будет понятна последовательность действий. А так, то структура, то позиция, то ещё чего-то…

 
Andrey Dik #:
да, именно это я и говорю уже второй день. тикет сделки есть, а её цену нету. 

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

Очевидно, что не будет желающих открыть реальный счёт для экспериментов, поэтому предложенный Алексеем вариант выглядит как наиболее перспективный для привлечения внимания разработчиков.
 
Alexey Viktorov #:

Андрей, давайте отделим мух от котлет… Давайте конкретно сначала выясним о структуре MqlTradeResult, для полного понимания вам не мешало-бы после OrderSend() распечатать структуру и показать всем. 

Распечатайте каждый шаг…  OrderSend вернула true, вот есть об этом запись… Вот все поля структуры, вот выбрана позиция, результат и запись об успешности выбора… И так далее. Уверяю вас, разработчики не будут разбираться в этих перепалках. И плюс ко всему всем будет понятна последовательность действий. А так, то структура, то позиция, то ещё чего-то…

для кого? для сообщества? - так всем пофигу, меня никто не поддержал.

разработчикам? - так все уверены, что разработчики мне не ответят.

итак, зачем? тратить моё время на создание теста? - так разработчики сами всё проверят, если захотят конечно.

ок, сделаю тест.

Sergey Gridnev #:
Два дня Вы ругались с теми, кто пытался обсудить проблему. Только сейчас стало проясняться, в чем проблема.

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

А зачем нужно было мне вставлять палки в колёса? я не ругался, а настойчиво просил не мешать.

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

 
Andrey Dik #:

для кого? для сообщества? - так всем пофигу, меня никто не поддержал.

разработчикам? - так все уверены, что разработчики мне не ответят.

итак, зачем? тратить моё время на создание теста? - так разработчики сами всё проверят, если захотят конечно.

ок, сделаю тест.

А зачем нужно было мне вставлять палки в колёса? я не ругался, а настойчиво просил не мешать.

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

А как вас поддерживать если ваши аргументы неубедительны? По той-же причине и разработчики не ответят. Вы думаете они будут открывать реальный счёт для этих тестов? В результате ваше обращение в никуда… И палки вам не вставляли, а пытались высказыванием своей точки зрения убедить вас в своём понимании. Понимании написанного в документации. 

Ведь вы не будете спорить с тем, что сервер брокера нагружен достаточно сильно и вполне возможны задержки. Позиция открыта, но информация о ней ещё не дошла до терминала. Ведь что самое главное в торговле? Конечно по возможности быстрей открыть позицию, а потом уже обработать её свойства. Что в этом криминального? А вы хотите как в МТ4, послал OrderSend(), терминал висит пока не придёт вся информация по ордеру? Я думаю вот такими трудностями разработчики добились быстродействия терминала. Где не почитай везде пишут что шустрей терминала нет…

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