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

 
Slava:

Что значит "стало"?

Всегда так было. С самого начала новой четвёрки.

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

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

 
агенты тестирования переполняют жесткий диск. Как быть - что настроить. Стоит 8 серверов по 120гб ссд
 
MQL5 Cloud Europe 1     genetic pass  tested with error "wrong timeframe request in Open Prices mode in OnTick function (EURUSD,M1)" 


Всем привет.

кто-нибудь сталкивался с такой ошибкой при оптимизации в облаке на Open Prices only


Ошибка не постоянная. Т.е. она возникает "очень редко" но при прогоне 10 000 результатов , раз 50 выплывает. 

ТФ при оптимизации не меняю. 

 
Vladislav Andruschenko:

Ошибка не постоянная. Т.е. она возникает "очень редко" но при прогоне 10 000 результатов , раз 50 выплывает.

Из Агента через фрейм нужно вытащить всю необходимую инфу для анализа.

 
fxsaber:

Из Агента через фрейм нужно вытащить всю необходимую инфу для анализа.

Всегда на 19 % такое происходят. Нашёл тему, говорят это из-за истории. 
Буду пробовать. 
 

Вся череда событий OnTradeTransaction идет после завершения OrderSend.

Советник

void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest&, const MqlTradeResult& )
{ 
  static bool FirstRun = true;  
  static ulong StartTime;
  
  if (FirstRun)
  {
    StartTime = GetMicrosecondCount();
    
    FirstRun = false;
  }

  Print(EnumToString(Trans.type));
  Print((GetMicrosecondCount() - StartTime) / 1000);    
}

Руками отправляем торговый приказ.

Лог

2018.02.14 09:41:46.671 '8854170': instant sell 1.00 EURUSD at 1.23673
2018.02.14 09:41:46.853 '8854170': accepted instant sell 1.00 EURUSD at 1.23673
2018.02.14 09:41:46.853 '8854170': deal #192088422 sell 1.00 EURUSD at 1.23673 done (based on order #208541700)
2018.02.14 09:41:46.853 '8854170': order #208541700 sell 1.00 / 1.00 EURUSD at 1.23673 done in 190.608 ms


Результат советника

2018.02.14 09:41:46.853 TRADE_TRANSACTION_ORDER_ADD
2018.02.14 09:41:46.853 0
2018.02.14 09:41:46.853 TRADE_TRANSACTION_DEAL_ADD
2018.02.14 09:41:46.853 1
2018.02.14 09:41:46.853 TRADE_TRANSACTION_ORDER_DELETE
2018.02.14 09:41:46.853 1
2018.02.14 09:41:46.853 TRADE_TRANSACTION_HISTORY_ADD
2018.02.14 09:41:46.853 2
2018.02.14 09:41:46.853 TRADE_TRANSACTION_REQUEST
2018.02.14 09:41:46.853 2


Отлично видно и по столбцу времени и по числовым показателям советника, что длительность выполнения торгового приказа никак не сказывается на череде событий OnTradeTransaction. Вся асинхронность летит к чертям! Умудрились же так напортачить. Build 1755.

 

Символ имеет Digits == 3

при этом в логе гораздо больше цифр выводится

'18000903': failed modify order #896199 buy limit 0.01 BTCUSD at 616.00100 sl: 0.00000 tp: 0.00000 -> 616.00100, sl: 0.00000 tp: 616.10100 [Invalid request]
 
В режиме "Ордера и Сделки" просмотра торговой истории не хватает столбца "Комментарий".
 
Гадкий баг не Терминала, а Платформы MT5
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)
#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, Bid);
  
//  OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask, 100, 0, 0);
}

Запускаем на MQ-Demo на каком-нибудь медленно двигающемся символе. Например, EURHUF.

Скрипт открывает BUY-позицию с TP = Bid. Т.е. позиция должна сразу закрыться. Но TP будет проверяться на соответствие условию акцептирования только на следующем тике!

Никакого мгновенного закрытия позиции не произойдет, пока не придет новый тик. Более того, если следующий у следующего тика будет Bid < TP, то TP так и останется без акцепта.


Это же касается и лимитных ордеров (закомментированная строка). В Тестере - аналогичная ситуация.

 
fxsaber:
Гадкий баг не Терминала, а Платформы MT5

Запускаем на MQ-Demo на каком-нибудь медленно двигающемся символе. Например, EURHUF.

Скрипт открывает BUY-позицию с TP = Bid. Т.е. позиция должна сразу закрыться. Но TP будет проверяться на соответствие условию акцептирования только на следующем тике!

Никакого мгновенного закрытия позиции не произойдет, пока не придет новый тик. Более того, если следующий у следующего тика будет Bid < TP, то TP так и останется без акцепта.


Это же касается и лимитных ордеров (закомментированная строка). В Тестере - аналогичная ситуация.

Пожалуйста в вопросах по MQL5 прикладывайте чистый MQL5 код. 

Надоело видеть Вашу НАСТЫРНУЮ рекламу по поводу и без.
Причина обращения: