Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 99

 
Vladimir Pastushak:

В мт 5 1968 всплывает ошибка 4001 Неожиданная внутренняя ошибка  при смене шаблонов с помощью советника

тот же код в мт 4 работает без ошибок

Можно Ваш пример, чтобы мы воспроизвели у себя?
 
Slava:

Ошибка Тестера с воспроизведением

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2018.12.13 21:49

HistorySelect работает неправильно для отложенных ордеров: ордера попадают в историю по времени ORDER_TIME_SETUP, а не по ORDER_TIME_DONE.


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


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


Большая просьба поправить.


ЗЫ Эта ошибка только в Тестере. В Терминале все отрабатывает правильно.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2018.12.14 08:47

Воспроизведение

int Amount = 0;

void OnInit()
{
  MqlTradeRequest Request = {0};
  MqlTradeResult Result;
  
  Request.action = TRADE_ACTION_PENDING;
  Request.symbol = _Symbol;
  Request.volume = 1;
  
  Request.type = ORDER_TYPE_BUY_LIMIT;
  Request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK) - 100 * _Point;
  Amount += OrderSend(Request, Result);

  Request.type = ORDER_TYPE_SELL_LIMIT;
  Request.price = SymbolInfoDouble(_Symbol, SYMBOL_BID) + 100 * _Point;
  Amount += OrderSend(Request, Result);
}

#define PRINT(A) Print(#A + " = " + (string)(A))

void OnTick()
{
  if ((OrdersTotal() != Amount) && HistorySelect(TimeCurrent() - 1, TimeCurrent()))
  {
    PRINT(HistoryOrdersTotal()); // 0
    PRINT(HistoryDealsTotal());  // 1
    
    TesterStop();
  }
}


Результат

2018.12.01 00:00:00   buy limit 1.00 EURUSD at 1.13073 (1.13155 / 1.13173)
2018.12.01 00:00:00   sell limit 1.00 EURUSD at 1.13255 (1.13155 / 1.13173)
EURUSD : real ticks begin from 2018.12.03 00:00:00
2018.12.03 00:02:12   order [#3 sell limit 1.00 EURUSD at 1.13255] triggered
2018.12.03 00:02:12   deal #2 sell 1.00 EURUSD at 1.13499 done (based on order #3)
2018.12.03 00:02:12   deal performed [#2 sell 1.00 EURUSD at 1.13499]
2018.12.03 00:02:12   order performed sell 1.00 at 1.13499 [#3 sell limit 1.00 EURUSD at 1.13255]
2018.12.03 00:02:12   HistoryOrdersTotal() = 0
2018.12.03 00:02:12   HistoryDealsTotal() = 1
 
Slava:
Можно Ваш пример, чтобы мы воспроизвели у себя?

По кастомным еще такая пустяковая проблема

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2018.12.12 17:42

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

 
fxsaber:


С каких времен определены (вопрос разработчикам)

и как они работают? Следующий компилируемый код выглядит бредово


И здесь ситуация не ясна

Странные вопросы, вроде ж давно пора запомнить, что в MQL указатели всегда неявно кастятся к объектам. А неявные операторы копирования в MQL уже пару лет как.  Причём даже совсем недавно похожая тема всплывала и с Ильёй обсуждалась.
 
Alexey Navoykov:
Странные вопросы, вроде ж давно пора запомнить, что в MQL указатели всегда неявно кастятся к объектам.  Причём даже совсем недавно похожая тема всплывала и с Ильёй обсуждалась. Зачем мусолить по 10 раз одно и то же...

Тема нормальная, т.к. баги.

 
fxsaber:

Тема нормальная, т.к. баги.

В чём баг то?  Про операторы копирования я дополнил выше
 
Alexey Navoykov:
В чём баг то?  Про операторы копирования я дополнил выше

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2019.01.10 10:16

Следующий компилируемый код выглядит бредово

    A* b = NULL;    
    m_A[1] = b;    


И здесь ситуация не ясна

A* m_A[2];

void OnStart()
{
A a;

    m_A[0] =a;  // Почему это работает?
    m_A[0] =&a; // Когда должно работать только это?
}
 
Slava:

Вы имеете в виду синтетику, рассчитывающуюся по формуле?

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

Да, формульн. синт. вот смотрите (сервер альпари демо хедж)

график до того, как жму "обновить график" в контекстном меню каст. символа

после

по красной линии видно что дописываются какие-то недостающие бары и график смещается маленько назад 

после перезагрузки териминала баров опять не хватает, нужно жать "обновить"

 
Maxim Dmitrievsky:

Да, формульн. синт. вот смотрите (сервер альпари демо хедж)

график до того, как жму "обновить график" в контекстном меню каст. символа

после

по красной линии видно что дописываются какие-то недостающие бары и график смещается маленько назад 

после перезагрузки териминала баров опять не хватает, нужно жать "обновить"

Можно посмотреть логи клиентского терминала с записями о формировании M1 баров синтетики? После старта терминала и после обновления графика
 
fxsaber:

...

в С++ этой перегрузки оператора = нет, VS ругается.

Вы уже не первый год тут, странно что до сих пор не в курсе, что данная особенность - это фича MQL
Причина обращения: