Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы - страница 41

 
Slava:
А когда пойдёт торговля, то подгрузится ещё один инструмент - EURUSD

Нет, не подгрузится. В визуализаторе смотрел, все корректно - один символ во время торговли.

 
fxsaber:

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

На сервере, где есть комиссия (воспроизводил на ForexTimeFXTM-Demo01, EUR, Hedge) в режиме по реальным тикам после первой торговой операции подключается дополнительно еще один символ из стандартных. И все, конечно, считается гораздо медленнее, чем должно было быть.


На MQ-Demo, где нет комиссии (и это, неправильно, т.к. тест корректности комиссии не провести на главном демо-сервере), работает все правильно.


Воспроизводится данная проблема?

Из-за этого бага, если нужна комиссия, сильные тормоза при оптимизации.

 

Возможно ли на этом ползунке выводить номер положения?

Кликаю по ползунку и клавишами клавиатуры LEFT/RIGHT меняю скорость. Иногда нужна предпоследняя скорость. Визуально не видно, в каком точно положении сейчас ползунок. И очень легко выбрать последнюю скорость.

Ну а если она выбрана, то это зависание Визуализатора. И можно все результаты выкидывать на помойку. Цифровая подмога к скорости, как на скрине, была бы кстати.


ЗЫ Оказывается, если не совершать торговые операции, то максимальная скорость в Визуализаторе не вызывает зависания. Получается, почти мертвое зависание связано с торговыми операциями.

 

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

Ниже воспроизведение этого.


На MQ-Demo, EUR, Hedge в Тестере ставим такой советник и разрешаем DLL (нужно для автоматического открытия HTML-отчетов в браузере).

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#define VIRTUAL_LIMITS_TP_SLIPPAGE // Лимитники и TP исполняются по первой цене акцепта - положительные проскальзывания
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

#define REPORT_TESTER             // В тестере будут автоматически записываться отчеты
//#define REPORT_TESTER_INPUTS      // В отчете одиночного прохода будут видны входные параметры советника - требует разрешения DLL.
#define REPORT_BROWSER            // Создание отчета с запуском браузера - требует разрешения DLL.
#include <Report.mqh> // https://www.mql5.com/ru/code/18801

int OnInit()
{
  // Если стоп/фриз-уровень не нулевой - выходим.
  return(!MQLInfoInteger(MQL_TESTER) ||
         SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) ||
         SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL));
}

void OnTick()
{
  static bool FirstRun = true;
  
  if (FirstRun)
  {
    MqlTick Tick;
    
    if (SymbolInfoTick(_Symbol, Tick) && Tick.bid && Tick.ask/* && Tick.last*/)
    {
      // Сформировали комментарий для ордера: время и цена текущего тика.
      const string comment = TimeToString(Tick.time, TIME_SECONDS) + "." + IntegerToString(Tick.time_msc % 1000, 3, '0') + " " + 
                             DoubleToString(Tick.bid, _Digits) + "/" + DoubleToString(Tick.ask, _Digits);
                             
      OrderSend(_Symbol, OP_BUYLIMIT, 1, Tick.ask, 0, 0, 0, comment); // Выставляем BuyLimit по текущей цене

      FirstRun = false;
    }  
  }    
  else if (!OrdersTotal()) // Если нет открытых ордеров - выходим.
    TesterStop();
  
  if (OrderSelect(0, SELECT_BY_POS) && (OrderType() <= OP_SELL)) // Выставляем TP позиции по текущей цене
    OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderClosePrice(), 0);  
}


Во вкладке Настройки Тестера делаем CTRL+V этих строк

[Tester]
Symbol=EURUSD
Period=M1
Optimization=0
Model=4
FromDate=2019.12.13
ToDate=2019.12.14
ForwardMode=0
Deposit=100000
Currency=EUR
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6
Visual=0
[TesterInputs]
VirtualTester=false
ReverseDeals=false
Report=true


Запускаем. В браузере появится очет отрговли.

Затем выставляем VirtualTester=true и снова запускаем, получив еще один отчет в браузере.


Первый раз мы вели торговлю в штатном MT5-Тестере, во второй - в стороннем.


Сравниваем отчеты. Вот они на одной картинке (сверху - штатный MT5-Тестер, снизу - сторонний).



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


ЗЫ Обход нарисовался.

 
fxsaber:

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

Почему МТ5 исполнил лимитку только через 2.6 секунды? Цена отошла в другую сторону сразу после установки? Или не было тиков?

 
Andrey Khatimlianskii:

Почему МТ5 исполнил лимитку только через 2.6 секунды? Цена отошла в другую сторону сразу после установки? Или не было тиков?

Следующий тик, удовлетворяющий лимитнику был через такое время. Конечно, в Тестере можно выставить лимитник по текущей цене и не получить его исполнение. Например, выставить лимитник на экстремуме.

 
fxsaber:

Следующий тик, удовлетворяющий лимитнику был через такое время. Конечно, в Тестере можно выставить лимитник по текущей цене и не получить его исполнение. Например, выставить лимитник на экстремуме.

Вы уточняйте о чем речь: форекс, биржа, rann?

На форексе нет лимитных ордеров и быть не может.

 
Sergey Chalyshev:

Вы уточняйте о чем речь: форекс, биржа, rann?

Речь о Тестере.

 
fxsaber:

Речь о Тестере.

Тестер на биржевом и форекс счетах по разному работает.
 
Sergey Chalyshev:
Тестер на биржевом и форекс счетах по разному работает.

Инструкция для воспроизведения на любом символе имеется. Есть вопросы - просто запустите.

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