Оптимизация на реальных тиках работает или нет? - страница 3

 
Evgeniy Zhdan:

У меня такие же сообщения шли, причем массово. Сейчас перестали, ошибок нет. Само собой как-то прошло. Результаты оптимизации и прогонов теперь по всем реальным тикам  сходятся (штатный GBPUSD).

Теперь попробуйте протестировать на другом символе,

желательно каждый раз сохранять картинку тестера, а то потом Ренат не поверит ))

 
Sergey Chalyshev:

Почему через скрипт? Вы пробовали создавать кастомные символы в реальном времени?

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

Допустим, есть EURUSD. Тогда создайте на основе его тиков сначала EURUSD_Custom и на нем запускайте Тестер.

Оригинальные символы имеют расхождения баровой истории на сервере и тиковой. А вот кастомный из этой тиковой истории расхождений иметь не будет. И Тестер не будет делать неожиданные вещи...


Поэтому и использую скрипт. В частности, в КБ лежит скрипт, который выкачивает 20 Gb zip-архивов сторонних котировок и распаковывает их в кастомые символы. Про это, вроде, даже в статье писал.

В реальном времени кастомные делал в КБ-решении.

На них основан Тестер, который позволяет отматывать время назад, менять руками котировки на ходу и работать в реальном времени, как демо-счет (но с возможностью отмотки назад и правки прошлого). Честно скажу, там столкнулся с массой багов, многие из которых были исправлены. Что-то удалось не без труда обойти. Больше тему эту не копал. Все же интересуют рыночные исследования, а это Тестер, где кастомные пашут на ура.

 
fxsaber:

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

Допустим, есть EURUSD. Тогда создайте на основе его тиков сначала EURUSD_Custom и на нем запускайте Тестер.

Оригинальные символы имеют расхождения баровой истории на сервере и тиковой. А вот кастомный из этой тиковой истории расхождений иметь не будет. И Тестер не будет делать неожиданные вещи...

Объясните это Ренату, у меня плохо получается объяснять,

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

Поэтому и использую скрипт. В частности, в КБ лежит скрипт, который выкачивает 20 Gb zip-архивов сторонних котировок и распаковывает их в кастомые символы. Про это, вроде, даже в статье писал.

В реальном времени кастомные делал в КБ-решении.

Сторонние архивы котировок не интересуют. 

В реальном времени тоже делал, работает но с глюками, по моему всё посмотрел и ваши коды и неисправленные баги. Упёрся в невозможность использовать индикаторы на реал тайм кастомных символах и бросил эту затею.

У вас очень много кодов, возможно что то не досмотрел,

дайте пожалуйста ссылки для создания кастомного из обычного

и кастомные в реалтайм

 
fxsaber:

На них основан Тестер, который позволяет отматывать время назад, менять руками котировки на ходу и работать в реальном времени, как демо-счет (но с возможностью отмотки назад и правки прошлого). Честно скажу, там столкнулся с массой багов, многие из которых были исправлены. Что-то удалось не без труда обойти. Больше тему эту не копал. Все же интересуют рыночные исследования, а это Тестер, где кастомные пашут на ура.

Круто!!!

Больше сказать не могу, могут забанить ))

 
Sergey Chalyshev:

Объясните это Ренату, у меня плохо получается объяснять,

Тестирую только на кастомных, поэтому остальные символы не принципиальны.

дайте пожалуйста ссылки для создания кастомного из обычного

// Создание из исходного символа фильтрованного аналога для ускорения в Тестере.

#property script_show_inputs

input datetime inFromDate = D'2019.07.01'; // From which date to take data

#include <fxsaber\HistoryTicks\ArrayResize.mqh> // https://www.mql5.com/ru/code/20298
#include <fxsaber\ThirdPartyTicks\CustomSymbol.mqh> // https://www.mql5.com/ru/code/20225

int Filter( MqlTick &Ticks[] )
{
  return(ArraySize(Ticks));
}

bool Symbol2Custom( CUSTOMSYMBOL &CustomSymbol, const datetime FromDate = 0 )
{
  MqlTick Ticks[];

  const int BeforeFilter = CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL, (ulong)FromDate * 1000);
  const int AfterFilter = Filter(Ticks);

  Print("After Filter Ticks = " + (string)AfterFilter +
          (BeforeFilter ? " (" + ::DoubleToString(100.0 * AfterFilter / BeforeFilter, 2) + "%)" : NULL));

//  CustomSymbol.AddTicks(Ticks);
  CustomSymbol.SwapTicks(Ticks);

  const int Amount = _CS(true) ? CustomSymbol.DataToSymbol() : -1;
  const bool Res = (Amount > 0);

  if (!Res)
  {
    Print(CustomSymbol.Name + " error write ticks - " + (_CS(true) ? (string)::GetLastError() : "Stopped!"));

    CustomSymbol.Delete();
  }
  else if (CustomSymbol.On())
  {
    Print(CustomSymbol.Name + " saved ticks = " + (string)Amount);

    // https://www.mql5.com/ru/forum/170952/page140#comment_12489183
    CustomSymbol.SetProperty(SYMBOL_VOLUME_STEP, 0.01);
    CustomSymbol.SetProperty(SYMBOL_VOLUME_MAX, 1e4);
    CustomSymbol.SetProperty(SYMBOL_VOLUME_MIN, 0.01);

    CustomSymbol.SetProperty(SYMBOL_TRADE_STOPS_LEVEL, 0);

    ChartOpen(CustomSymbol.Name, PERIOD_M1);
  }

  return(Res);
}

void OnStart()
{
  CUSTOMSYMBOL CustomSymbol("CUSTOM_" + _Symbol);

  if (!CustomSymbol.IsExist() || !Symbol2Custom(CustomSymbol, SymbolInfoInteger(_Symbol, SYMBOL_CUSTOM) ? 0 : inFromDate))
    Alert("Error with Symbol " + CustomSymbol.Name + " - " + (string)GetLastError());
}

и кастомные в реалтайм

https://www.mql5.com/ru/code/24848

Давно не запускал.

Tester
Tester
  • www.mql5.com
Эта библиотека позволяет любой MT4-style советник запустить в визуальном Тестере. После компиляции запускаете советник на нужном Вам чарте и получаете окно визуального Тестера, где крутится Ваша ТС. В отличие от MT5-Тестера, данный визуальный Тестер работает не на Агенте, а в самом Терминале. Возможности Запуск и снятие индикаторов. Любое...
 
Скачал тики через CopyTics. Доверять этим тикам или нет, я не знаю. Может оно сгенерированные тики подмешивает.
 
Grigori.S.B:

Тем более реальных много и не скачаешь.

Что это значит?

Вот например если я качаю 200 000 тиков, а у брокера на сервере только 100 000, то он мне выдаст только 100 000, а остальные позиции в массиве заполнит нулями?

Или он мне выдаст 200 000, но 100 000 из них будут реальными, а 100 000 сгенерированными?

Что происходит если через функцию CopyTics скачиваешь данные в массив, а на сервере недостаточно данных?


 
igrok333:

Что это значит?

Вот например если я качаю 200 000 тиков, а у брокера на сервере только 100 000, то он мне выдаст только 100 000, а остальные позиции в массиве заполнит нулями?

Или он мне выдаст 200 000, но 100 000 из них будут реальными, а 100 000 сгенерированными?

Что происходит если через функцию CopyTics скачиваешь данные в массив, а на сервере недостаточно данных?

Выше писал что речь идет об автоматической подкачке реальных тиков тестером при запуске тестирования/оптимизации, а не о функции CopyTicks. Почему не скачивает не знаю. Возможно сервер не отдает или нет тиков в нужном объеме.

 
Grigori.S.B:

Выше писал что речь идет об автоматической подкачке реальных тиков тестером при запуске тестирования/оптимизации, а не о функции CopyTicks. Почему не скачивает не знаю. Возможно сервер не отдает или нет тиков в нужном объеме.

да всё скачивает.
вопрос был к знающим людям: если недостаточно реальных тиков на сервере, что тогда сервер будет отдавать? заполнит нулями недостающие элементы или отдаст сгенерированные тики?
 
igrok333:
да всё скачивает.

Если у тебя в каком-то конкретном случае скачал ВСЕ, то я рад за тебя. Но поверь, так бывает не всегда. Возможно от инструмента зависит, от брокера или еще от чего-то. У меня не скачивались тики полностью по фьючам на АМР.

igrok333:
вопрос был к знающим людям: если недостаточно реальных тиков на сервере, что тогда сервер будет отдавать? заполнит нулями недостающие элементы или отдаст сгенерированные тики?

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

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