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

 
Вроде оперативно исправили. Откатили к билду 3491 и трабла ушла. 
 
Sanya83 #:
Вроде оперативно исправили. Откатили к билду 3491 и трабла ушла. 

подскажите пожалуйста как откатиться к 3491? никогда не сталкивался с такой потребностью. замена terminal64.exe вроде билд меняет, а ошибка остается

 
Я делал следующим образом: скачал билд 3470 (или любой другой не выше 3492) и заменил файлы MetaEditor64, metatester64 и terminal64 (перед заменой нужно закрыть терминал). После этого открыл терминал, и дождался сообщения о том, что обновления готовы к установке и требуется перезапустить терминал. Соглашаюсь, терминал перезапустился с обновленным билдом 3491. В этом билде косяка с реальными тиками нету.
Билды предоставил fxsaber
 

Привет всем,


Я не говорю по-русски, но очень часто слежу за форумами. Я тоже заметил, что сборка 3494 и даже сборка 3500 на агенте тестера работает УЖАСНО медленно при тестировании на истории с «каждым тиком, основанным на реальных тиках». Это также дает ОЧЕНЬ разные результаты, поскольку я запускаю это также на таймфрейме H1 .... Мне пришлось откатиться до 3492, чтобы правильно протестировать историю.

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

Я должен был использовать это ниже


Как отключить liveupdate в MetaTrader 5? / CommunityPower EA (userecho.com)

и это

Как откатиться на предыдущую версию (сборку)... / CommunityPower EA (userecho.com)

 

Необычный баг Тестера (b3510), воспроизвести который пытался (много часов попыток) разными способами, но получилось только этим.

1. Создать папку и скопировать в нее exe-файлы своего терминала.

2. Распаковать файлы из прикрепленного архива в эту папку.

3. Запустить terminal64.exe.

4. Открыть Тестер и выбрать предложенный профайл.

5. Запустить Тестер и посмотреть результат в его журнале.


Для наглядности все шаги отобразил на этой картинке.


О сути бага. Создал кастомный символ. В Тестере тики этого символа подаются на OnTick искаженными - маркап на bid/ask, что создает граальную историю по сравнению с реальной.

Чтобы показать различия, в Тестере запускается такой советник (в приложенном архиве).

input int inAmount = 5;

const bool IsTerminal = !MQLInfoInteger(MQL_TESTER);

string SymbName = _Symbol;

MqlTick MemoryTicks[];
int Pos = 0;

// Распечатка последних тиков символа в Терминале/Тестере (CopyTicks и SymbolInfoTick).
void PrintLastTicks( const string Symb )
{
  MqlTick Ticks[];

  CopyTicksRange(Symb, Ticks);

  Print((IsTerminal ? "Terminal: " : "\nTester (CopyTicks): ") + Symb);
  ArrayPrint(Ticks, _Digits, NULL, ArraySize(Ticks) - inAmount); // https://www.mql5.com/ru/forum/42122/page48#comment_43341353
  
  if (!IsTerminal)
  {
    for (int i = ArrayResize(Ticks, inAmount) - 1; i >= 0; i--)
      Ticks[i] = MemoryTicks[--Pos % inAmount];
      
    Print(("\nTester (SymbolInfoTick): ") + Symb);      
    ArrayPrint(Ticks);
  }
}

void OnTick() { SymbolInfoTick(_Symbol, MemoryTicks[Pos++ % inAmount]); } // Запоминаем SymbolInfoTick-тики.

void OnDeinit( const int ) { PrintLastTicks(SymbName); } // Распечатываем последние тики.

int OnInit()
{  
  if (IsTerminal)
  {
    MqlTick Ticks[];
  
    MathSrand((int)TimeLocal());  
    SymbName = "TESTER_BUG055_" + _Symbol + "_" + (string)MathRand();
  
    // Создали символ.
    if (CustomSymbolCreate(SymbName, NULL, _Symbol) && SymbolSelect(SymbName, true) &&
        (CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, D'2022.11.01' * 1000, D'2022.11.19' * 1000) > 0))
    {
      CustomTicksReplace(SymbName, 0, LONG_MAX, Ticks); // Разместили в символе тики.
      
      MessageBox("Запустите одиночный прогон в Тестере этого же советника на символе " + SymbName +
                 " в режиме по реальным тикам, вся история.\n\nИ сравните данные по тикам," +
                 " что выдал этот советник в логах Терминала и Тестера.");
    }
  }
  else
    ArrayResize(MemoryTicks, inAmount);
      
  return(IsTerminal);
}


Результат в логе Тестера.

2022.11.18 23:54:59   Tester (CopyTicks): TESTER_BUG055_EURUSD_7509
2022.11.18 23:54:59                    [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2022.11.18 23:54:59   [0] 2022.11.18 23:54:59 1.03191 1.03208 0.0000        0 1668815699424       6       0.00000
2022.11.18 23:54:59   [1] 2022.11.18 23:54:59 1.03191 1.03210 0.0000        0 1668815699523       4       0.00000
2022.11.18 23:54:59   [2] 2022.11.18 23:54:59 1.03191 1.03208 0.0000        0 1668815699624       4       0.00000
2022.11.18 23:54:59   [3] 2022.11.18 23:54:59 1.03191 1.03209 0.0000        0 1668815699723       4       0.00000
2022.11.18 23:54:59   [4] 2022.11.18 23:54:59 1.03190 1.03209 0.0000        0 1668815699824       2       0.00000
2022.11.18 23:54:59   
2022.11.18 23:54:59   Tester (SymbolInfoTick): TESTER_BUG055_EURUSD_7509
2022.11.18 23:54:59                    [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2022.11.18 23:54:59   [0] 2022.11.18 23:54:59 1.03197 1.03202 0.0000        0 1668815699424       6       0.00000
2022.11.18 23:54:59   [1] 2022.11.18 23:54:59 1.03197 1.03204 0.0000        0 1668815699523       4       0.00000
2022.11.18 23:54:59   [2] 2022.11.18 23:54:59 1.03197 1.03202 0.0000        0 1668815699624       4       0.00000
2022.11.18 23:54:59   [3] 2022.11.18 23:54:59 1.03197 1.03203 0.0000        0 1668815699723       4       0.00000
2022.11.18 23:54:59   [4] 2022.11.18 23:54:59 1.03196 1.03203 0.0000        0 1668815699824       2       0.00000

Последние соответствующие пять тиков, полученные через CopyTicks и SymbolInfoTick, отличаются в bid/ask.

Тестер берет какие-то скрытые настройки из кастомного символа, которые недоступны через MQL-свойства и json-конфигурацию. Почему свойства кастомного символа не имеют полной прозрачности - отдельный (важный) вопрос.


Баг: Тестер генерирует (по реальным тикам) тики, которые не совпадают с историческими.

Строка для поискаOshibka 055.

Файлы:
Tester_Bug055.zip  11980 kb
 
fxsaber #:

Необычный баг Тестера (b3510), воспроизвести который пытался (много часов попыток) разными способами, но получилось только этим.

1. Создать папку и скопировать в нее exe-файлы своего терминала.

2. Распаковать файлы из прикрепленного архива в эту папку.

3. Запустить terminal64.exe.

4. Открыть Тестер и выбрать предложенный профайл.

5. Запустить Тестер и посмотреть результат в его журнале.


Для наглядности все шаги отобразил на этой картинке.


О сути бага. Создал кастомный символ. В Тестере тики этого символа подаются на OnTick искаженными - маркап на bid/ask, что создает граальную историю по сравнению с реальной.

Чтобы показать различия, в Тестере запускается такой советник (в приложенном архиве).


Результат в логе Тестера.

Последние соответствующие пять тиков, полученные через CopyTicks и SymbolInfoTick, отличаются в bid/ask.

Тестер берет какие-то скрытые настройки из кастомного символа, которые недоступны через MQL-свойства и json-конфигурацию. Почему свойства кастомного символа не имеют полной прозрачности - отдельный (важный) вопрос.


Баг: Тестер генерирует (по реальным тикам) тики, которые не совпадают с историческими.

Строка для поискаOshibka 055.

А до 3510  точно не было этого бага? Просто сейчас в данный момент занимаюсь тем же(  расхождение ТС реал и тестера на кастомах) и тут Ваше сообщение увидел.

 
Алексей #:

А до 3510  точно не было этого бага?

Думаю, данный баг не свежий.

 
fxsaber #:

Думаю, данный баг не свежий.

По моим наблюдением минимум 2 недели, пока только что не сверил и тут Ваше сообщение следом увидел.

 

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

mlt


По факту на реал тиках ни каких событий в  OnBookEvent не приходит.


//ЗАПУСКАТЬ В ТЕСТЕРЕ С ПОДКАЧЕННОЙ РЕАЛЬНОЙ ТИКОВОЙ ИСТОРИЕЙ

//+------------------------------------------------------------------+
int OnInit()
{
   if(!MarketBookAdd("XTIUSD"))
      return(INIT_FAILED);

   if(!MarketBookAdd("XBRUSD"))
      return(INIT_FAILED);

   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   MarketBookRelease("XTIUSD");
   MarketBookRelease("XBRUSD");
}

//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{

   Print(symbol);   //Нет событий OnBookEvent

}
 
Почему не работает функция ChartSaveTemplate() в визуальном тестере? В документации не нашел никаких упоминаний об этом.
Причина обращения: