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

 
Alexey Viktorov #:

Потом ведь ордер уже выбран в действующих… Значит ничто не должно мешать его модификации…

STARTED - нельзя ничего сделать. PLACED - можно.

 
fxsaber #:

STARTED - нельзя ничего сделать. PLACED - можно.

Может я распечатку сделал не правильно, но статус ордера одинаков и при инвалиде, и без инвалида…

Потом, ведь ордер уже выбран среди открытых. Значит его статус не должен быть  STARTED, разве не так?

 
Alexey Viktorov #:

Может я распечатку сделал не правильно, но статус ордера одинаков и при инвалиде, и без инвалида…

Потом, ведь ордер уже выбран среди открытых. Значит его статус не должен быть  STARTED, разве не так?

Запустите этот скрипт.

void OnStart()
{
  long State = -1;
  
  while (!IsStopped())
    if (OrderGetTicket(OrdersTotal() - 1) && (State != OrderGetInteger(ORDER_STATE)))
      Print(EnumToString((ENUM_ORDER_STATE)(State = OrderGetInteger(ORDER_STATE))));
}

И руками откройте отложку (желательно, чтобы не было других ордеров).

2023.04.25 12:57:26.983 '160325739': buy limit 1 AUDUSD at 0.66664
2023.04.25 12:57:27.036 '160325739': accepted buy limit 1 AUDUSD at 0.66664
2023.04.25 12:57:27.036 ORDER_STATE_STARTED

2023.04.25 12:57:27.041 ORDER_STATE_PLACED
2023.04.25 12:57:27.043 '160325739': order #2289634089 buy limit 1 / 1 AUDUSD at 0.66664 done in 59.632 ms

2023.04.25 12:58:11.323 ORDER_STATE_REQUEST_ADD
2023.04.25 12:58:11.352 ORDER_STATE_PLACED
2023.04.25 12:58:11.352 '160325739': deal #2278919416 buy 1 AUDUSD at 0.66664 done (based on order #2289634089)
 
fxsaber #:

Запустите этот скрипт.

И руками откройте отложку (желательно, чтобы не было других ордеров).

Зачем мне такие азы? Я прекрасно понимаю, что ордер имеет разный статус. Прекрасно понимаю, что я мог неправильно сделать распечатку.

Спасибо за подсказку, видимо надо поставить другой тип транзакции… Буду пробовать.

 
Alexey Viktorov #:

Зачем мне такие азы? Я прекрасно понимаю, что ордер имеет разный статус. Прекрасно понимаю, что я мог неправильно сделать распечатку.

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

#define TOSTRING(A) #A + " = " + (string)(A) + " "

void OnStart()
{
  long State = -1;
  
  while (!IsStopped())
  {
    const int Total = OrdersTotal();
    
    if (Total)
    {
      if (!OrderGetTicket(Total - 1))
        Print(TOSTRING(Total) + "Ticket = 0");
      else if (State != OrderGetInteger(ORDER_STATE))
        Print(TOSTRING(OrderGetInteger(ORDER_TICKET)) + EnumToString((ENUM_ORDER_STATE)(State = OrderGetInteger(ORDER_STATE)))); 
    }  
  }
}


2023.04.25 13:27:38.395 '160325739': market buy 1 AUDUSD
2023.04.25 13:27:38.475 OrderGetInteger(ORDER_TICKET) = 2289635415 ORDER_STATE_STARTED

2023.04.25 13:27:38.479 '160325739': accepted market buy 1 AUDUSD
2023.04.25 13:27:38.479 OrderGetInteger(ORDER_TICKET) = 2289635415 ORDER_STATE_REQUEST_ADD

2023.04.25 13:27:38.479 '160325739': market buy 1 AUDUSD placed for execution
2023.04.25 13:27:38.479 '160325739': order #2289635415 buy 1 / 1 AUDUSD at market done in 90.404 ms
2023.04.25 13:27:38.479 OrderGetInteger(ORDER_TICKET) = 2289635415 ORDER_STATE_PLACED

2023.04.25 13:27:38.480 '160325739': deal #2278920765 buy 1 AUDUSD at 0.66660 done (based on order #2289635415)

2023.04.25 13:27:48.261 '160325739': market sell 1 AUDUSD, close #2289635415 buy 1 AUDUSD 0.66660
2023.04.25 13:27:48.314 OrderGetInteger(ORDER_TICKET) = 2289635420 ORDER_STATE_STARTED

2023.04.25 13:27:48.314 '160325739': accepted market sell 1 AUDUSD, close #2289635415 buy 1 AUDUSD 0.66660
2023.04.25 13:27:48.315 OrderGetInteger(ORDER_TICKET) = 2289635420 ORDER_STATE_REQUEST_ADD

2023.04.25 13:27:48.316 '160325739': market sell 1 AUDUSD, close #2289635415 buy 1 AUDUSD 0.66660 placed for execution
2023.04.25 13:27:48.343 '160325739': order #2289635420 sell 1 / 1 AUDUSD at market done in 83.044 ms
2023.04.25 13:27:48.343 OrderGetInteger(ORDER_TICKET) = 2289635420 ORDER_STATE_PLACED
2023.04.25 13:27:48.343 Total = 1 Ticket = 0

2023.04.25 13:27:48.345 '160325739': deal #2278920771 sell 1 AUDUSD at 0.66655 done (based on order #2289635420)
 
fxsaber #:

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


Понятно, что терминал не идеален и количество ордеров может быть уже больше нуля, а выбрать ордер не получается… И что? Ну увидели такой недостаток терминала, а как это использовать? Да и зачем мне количество если ордер не выбран.

Ведь в моём случае совсем наоборот. Ордер выбран, но статус не позволяет его модифицировать. Это я уже проверил. Спасибо за наводку где искать тараканов…

 
Ошибки, баги, вопросы - Включите форвард-тестирование.
Ошибки, баги, вопросы - Включите форвард-тестирование.
  • 2023.04.13
  • www.mql5.com
В режиме двух окон в горизонт положении смартфона нет кнопки. То есть если телефон в кредле в горизонтальном режиме и нужно выключить курсор. Вызвать боковую панель кликом по соседнему окну и там отключить курсор тоже не получается
 
fxsaber #:

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


fxsaber #: я давно хотел спросить: зачем вы эти тесты делаете? Вы не сотрудник MQL, не авторизированный пользователь. Вам для забавы ?

Вы находите такие уязвимости в которые мне не удалость попасть за 10 лет в програминге.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2023.04.25
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Volodymyr Zubov #:

fxsaber #: я давно хотел спросить: зачем вы эти тесты делаете?

Авось в алготрейдинге дорогой.
 
Volodymyr Zubov #:

fxsaber #: я давно хотел спросить: зачем вы эти тесты делаете? Вы не сотрудник MQL, не авторизированный пользователь. Вам для забавы ?

Вы находите такие уязвимости в которые мне не удалость попасть за 10 лет в програминге.

он миллион долларов сделал на багах) не реальных конечно

и кстати, 1й0 лет, могли бы и знать его прошлые имена тут