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

 
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.

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

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

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

 
Nikolai Semko #:

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

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

Да, но вот что получается:

1. Удаляю все тики, заново запускаю терминал.

2. Запускаю прогон вашего советника за период с 2022.06.01 по 2022.08.28.

 в логе имею

2022.08.29 20:03:38.687 EURUSD: history ticks synchronized from 2022.06.01 to 2022.08.26
...
2022.08.29 20:03:40.255 EURUSD : real ticks begin from 2022.06.01 00:00:00

CopyTicks возвращает при первом запросе -1, при втором 2, далее 3 и тд. НИкаких 150000.

3. Жду несколько минут. Опять запускаю прогон с той же даты. те же результаты.

4. Запускаю прогон с даты 2022.05.15.

2022.08.29 20:08:22.650 EURUSD: history ticks synchronized from 2022.05.16 to 2022.08.26
...
2022.08.29 20:08:24.329 EURUSD : real ticks begin from 2022.05.16 00:00:00

CopyTicks  опять возвращает 2,3,4 .. тиков.

5.  И сразу  прогон опять  с  2022.06.01. И CopyTicks сразу возвращает 150000!

логи:

2022.08.29 20:08:22.650 EURUSD: history ticks synchronized from 2022.05.16 to 2022.08.26
...
2022.08.29 20:08:24.329 EURUSD : real ticks begin from 2022.05.16 00:00:00
 
mktr8591 #:


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

Функции "Копи тики" могут неожиданно потерять реальную тиковую историю.
И так же неожиданно её найти.
И если история не найдена,  "Копи тики" начинают отдавать 1,2,3 и т.д. с даты старта.
А по факту история есть, я это знаю точно, потому что она у меня в кастоме.

Про эмуляцию я вообще молчу, хотя надо трубить, чтоб её отменили для реальных тиков.
Возможно в этой подмене и зарылся ЖУК.

 
Roman #:

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

Функции "Копи тики" могут неожиданно потерять реальную тиковую историю.
И так же неожиданно её найти.
И если история не найдена,  "Копи тики" начинают отдавать 1,2,3 и т.д. с даты старта.
А по факту история есть, я это знаю точно, потому что она у меня в кастоме.

Про эмуляцию я вообще молчу, хотя надо трубить, чтоб её отменили для реальных тиков.
Возможно в этой подмене и зарылся ЖУК.

печально