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

 
Nikolai Semko #:

Нельзя загрузить то, чего нет, а можно только сэмулировать. Чем тестер и занимается.


Короче тест у меня пошел, и что удивительно с той же даты, с тем же CopyTickRange.
CopyTickRange на удивление начал возвращать какое то количество тиков.
Проверил по времени, совпадает с началом истории.
А при первом моём обращении на форум, с той же даты  возвращал нарастающие тики.
Как это понимать?
ЭТО БАГ.

Эмуляция на реальных тиках?
Вот это жёсткий поворот!
Что и вводит в заблуждение пользователя.

Какая к чёрту эмуляция! На реальных тиках!
Нет реальных тиков, поднимай предупреждение с остановкой теста!
Это гнев в сторону MQ.

Только же, недавно Ренат писал о юристах, и брокерах если будут вводить в заблуждение по комиссии.
То будет ай-яй-яй как не хорошо судится.
А тут реальные тики эмулировать, а кули можно.
Слов нет.

 
Nikolai Semko #:


Нельзя загрузить то, чего нет, а можно только сэмулировать. Чем тестер и занимается, но с момента тестового стартового интервала.


Я всегда считал (и читал в доках), что реальные тики эмулируются только для тех минут, где в истории есть бар, но нет тиков. Вы это имеете ввиду?

Если другое, тогда где про это можно почитать?

 
mktr8591 #:

Обратил внимение на следующую вещь:

запускаю одиночное тестирование на EURUSD на MQ-Demo с 27.08.2009 по 28.08.2009



В логе следующие строки:

Вот эта строка - EURUSD : real ticks begin from 2022.08.26 00:00:00.

Причем здесь 26.08.2022? Посмотрел историю тиков по символу - тики есть как минимум с 01.08.2022.

Что я упустил?

Вот вот вот, это изменяющийся трудноуловимый баг.

 
Nikolai Semko #:


Но можно попробовать загрузить всю историю тиков и время нулевого тика и будет этой стартовой датой.


Кажется, разобрался.

Если я запускаю любой прогон с датой начала периода, например, 01.01.2022, то тиковая история загружается и доступна в тестере при последующих прогонах. (когда запускаю прогон с 01.04.2022,  CopyTicks... возвращают тики с 01.01.2022).

Но почему-то, когда я загружаю историю тиков с этой же даты через "Обзор рынка-Символы-Вкладка Тики", в тестере она не доступна : если запустить прогон с 01.03.2022, то в логе "real ticks begin from 01.03.2022" и CopyTicks не видит тики с 01.01. до 01.03. 

1.Это баг или фича?

2. Как еще можно загрузить историю тиков, помимо запуска фэйкового прогона в тестере?

 
mktr8591 #:

Кажется, разобрался.

Если я запускаю любой прогон с датой начала периода, например, 01.01.2022, то тиковая история загружается и доступна в тестере при последующих прогонах. (когда запускаю прогон с 01.04.2022,  CopyTicks... возвращают тики с 01.01.2022).

Но почему-то, когда я загружаю историю тиков с этой же даты через "Обзор рынка-Символы-Вкладка Тики", в тестере она не доступна : если запустить прогон с 01.03.2022, то в логе "real ticks begin from 01.03.2022" и CopyTicks не видит тики с 01.01. до 01.03. 

1.Это баг или фича?

2. Как еще можно загрузить историю тиков, помимо запуска фэйкового прогона в тестере?

Хм, я не знаю, инициирует ли CopyTicks из тестера загрузку тиков с сервера, если их нет на жестком диске.



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

 
mktr8591 #:

Кажется, разобрался.

Если я запускаю любой прогон с датой начала периода, например, 01.01.2022, то тиковая история загружается и доступна в тестере при последующих прогонах. (когда запускаю прогон с 01.04.2022,  CopyTicks... возвращают тики с 01.01.2022).

Но почему-то, когда я загружаю историю тиков с этой же даты через "Обзор рынка-Символы-Вкладка Тики", в тестере она не доступна : если запустить прогон с 01.03.2022, то в логе "real ticks begin from 01.03.2022" и CopyTicks не видит тики с 01.01. до 01.03. 

1.Это баг или фича?

2. Как еще можно загрузить историю тиков, помимо запуска фэйкового прогона в тестере?


Вот моё первое обращение на форум с проблемой.
Начало тестового периода в настройках тестера 2022.08.22
Реальные кастомные тики в истории у меня гарантировано с  2022.08.10

То есть 12 дней реальной кастомной тиковой истории, до начала интервала тестирования.

А лог тестера выдавал

real ticks begin from 2022.08.22 00:00:00

и CopyTicksRange отдавал нарастающие тики, на каждом событии OnTick.


После долгого объяснения тут на форуме о проблеме,
CopyTicksRange удивительным образом начал отдавать все тики истории, с 10 числа.
Это сто процентов БАГ.  

То появится, то пропадёт.
Сейчас отдаёт правильно.

2022.08.29 19:52:00.225 LJ,M1: testing of Experts\TestTicks.ex5 from 2022.08.22 00:00 to 2022.08.23 00:00 started
2022.08.29 19:52:00.256 LJ : real ticks begin from 2022.08.10 00:00:00
2022.08.29 19:52:00.260 2022.08.22 00:00:44   Скопировано тиков:  8289
2022.08.29 19:52:00.260 2022.08.22 00:00:44   Время первого тика в истории: 2022.08.10 00:00
2022.08.29 19:52:04.259 2022.08.22 00:01:15   Скопировано тиков:  8290
2022.08.29 19:52:04.259 2022.08.22 00:01:15   Время первого тика в истории: 2022.08.10 00:00


А в логе ниже на тот же начальный интервал теста 22 число, отдавал не правильно.

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

Ошибки, баги, вопросы

Roman, 2022.08.26 18:27

b3391

Запускаю этот код в тестере, на кастомном символе.
Почему в тестере CopyTicksRange() копирует по одному нарастающему объекту?
А в терминале возвращает все доступные. 

//+------------------------------------------------------------------+
//|                                                    TestTicks.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

MqlTick tick[];

int T = 0;


//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   T = CopyTicksRange("LJ", tick, COPY_TICKS_TRADE, 0, 0);
   Print("Скопировано тиков:  ", T);

}
//+------------------------------------------------------------------+
2022.08.26 19:17:58.672 LJ,M1: testing of Experts\TestTicks.ex5 from 2022.08.22 00:00 to 2022.08.23 00:00 started
2022.08.26 19:17:58.714 LJ : real ticks begin from 2022.08.22 00:00:00
2022.08.26 19:17:58.715 2022.08.22 00:00:44   Скопировано тиков:  1
2022.08.26 19:18:01.114 2022.08.22 00:01:15   Скопировано тиков:  2
2022.08.26 19:18:03.515 2022.08.22 00:01:44   Скопировано тиков:  3
2022.08.26 19:18:05.916 2022.08.22 00:02:12   Скопировано тиков:  4
2022.08.26 19:18:08.316 2022.08.22 00:02:32   Скопировано тиков:  5
2022.08.26 19:18:10.716 2022.08.22 00:02:52   Скопировано тиков:  6
2022.08.26 19:18:13.117 2022.08.22 00:04:05   Скопировано тиков:  7
2022.08.26 19:18:15.517 2022.08.22 00:04:21   Скопировано тиков:  8

 
Nikolai Semko #:

Хм, я не знаю, инициирует ли CopyTicks из тестера загрузку тиков с сервера, если их нет на жестком диске.



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

проверил. Удалил с компьютера тиковые файлы.
Все норм.

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

 
mktr8591 #:

Как еще можно загрузить историю тиков, помимо запуска фэйкового прогона в тестере?

Делаю только так.

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

Библиотеки: MultiTester

fxsaber, 2020.01.25 12:39

Самый удобный способ закачать историю тиков (запускать советник в Терминале).

#property description "Закачивает тики через Тестер."

sinput datetime inFromDate = D'2019.01.01'; // С какой даты закачать тики
sinput bool inAllSymbols = false;           // По всем символам (true) или текущему (false)

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132

string PrevTesterSettings = NULL;

string GetMyName( void )
{
  return(StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Experts\\")));
}

bool RunMe( const datetime FromDate, const bool AllSymbols = false )
{
  const string Str = "[Tester]" +
                     "\nExpert=" + GetMyName() +
                     "\nSymbol=" + _Symbol +
                     "\nOptimization=" + (AllSymbols ? "3" : "0") +
                     "\nModel=4" +
                     "\nFromDate=" + TimeToString(FromDate, TIME_DATE) +
                     "\nToDate=" + TimeToString(TimeCurrent(), TIME_DATE) +
                     "\nForwardMode=0" +
                     "\nProfitInPips=1" +
                     "\nOptimizationCriterion=0" +
                     "\nVisual=0";
                     
  return(MTTESTER::SetSettings2(Str) && MTTESTER::ClickStart());
}

int OnInit()
{
  bool Res = !MQLInfoInteger(MQL_TESTER) && EventSetTimer(1);

  if (Res = Res && MTTESTER::GetSettings(PrevTesterSettings))
    if (!(Res = RunMe(inFromDate, inAllSymbols)))
      MTTESTER::SetSettings2(PrevTesterSettings);

  return(Res ? INIT_SUCCEEDED : INIT_FAILED);
}

void OnTimer()
{
  if (MTTESTER::IsReady())
  {
    MTTESTER::SetSettings2(PrevTesterSettings);
    
    if (inAllSymbols)
      MTTESTER::CloseNotChart();

    ExpertRemove();
  }
}


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


 
Nikolai Semko #:

Хм, я не знаю, инициирует ли CopyTicks из тестера загрузку тиков с сервера, если их нет на жестком диске.



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

то что написано в справке по CopyTicks правильно, в тестере это работает несколько по другому. По крайней мере в нынешнем билде, CopyTicks даже на втором вызове получит только то, что терминал загрузил в процессе инициализации тестера.

 
Roman #:



Эмуляция на реальных тиках?
Вот это жёсткий поворот!
Что и вводит в заблуждение пользователя.

Какая к чёрту эмуляция! На реальных тиках!
Нет реальных тиков, поднимай предупреждение с остановкой теста!
Это гнев в сторону MQ.

Только же, недавно Ренат писал о юристах, и брокерах если будут вводить в заблуждение по комиссии.
То будет ай-яй-яй как не хорошо судится.
А тут реальные тики эмулировать, а кули можно.
Слов нет.

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

Логику эмуляции не сложно понять и зная эту логику можно создавать тестерные граали, обманывая доверчивых покупателей.