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

 
Grigori.S.B:

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

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

так как они у тебя не скачивались, если ты говоришь, что отсутствующие тики все равно заменяет генерированными?
 
Grigori.S.B:

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

где здесь об этом?

https://www.mql5.com/ru/docs/series/copyticks

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

Да, именно так и было. Реальные скачались не все, недостающие были заменены сгенерированными. Что в этом непонятного?

igrok333:

где здесь об этом?

https://www.mql5.com/ru/docs/series/copyticks

Это из серии "чукча не читатель, чукча - писатель". Выше уже 3 (ТРИ) раза повторил что речь идет не о функции CoptTicks(), а об автоматической подкачке реальных тиков тестером при запуске тестирования/оптимизации. Это разные вещи.

 
Grigori.S.B:

Да, именно так и было. Реальные скачались не все, недостающие были заменены сгенерированными. Что в этом непонятного?

Это из серии "чукча не читатель, чукча - писатель". Выше уже 3 (ТРИ) раза повторил что речь идет не о функции CoptTicks(), а об автоматической подкачке реальных тиков тестером при запуске тестирования/оптимизации. Это разные вещи.

Надо было всё это сказать в начале. Он же спрашивал о CopyTicks.

 
Grigori.S.B:

Да, именно так и было. Реальные скачались не все, недостающие были заменены сгенерированными. Что в этом непонятного?

Это из серии "чукча не читатель, чукча - писатель". Выше уже 3 (ТРИ) раза повторил что речь идет не о функции CoptTicks(), а об автоматической подкачке реальных тиков тестером при запуске тестирования/оптимизации. Это разные вещи.

ну да. чукча не читатель. я же спрашивал про функцию CopytTicks.
а он мне почему то отвечает про тестирование )))
 
igrok333:
ну да. чукча не читатель. я же спрашивал про функцию CopytTicks.
а он мне почему то отвечает про тестирование )))

А это легко проверить.

Например если запрашиваем 200 000 тиков, а там всего 100 000, то скачивает столько, сколько есть.  CopyTicks возвращает количество скачанных тиков(100 000) и ничего не добавляет.

 
Petros Shatakhtsyan:

А это легко проверить.

Например если запрашиваем 200 000 тиков, а там всего 100 000, то скачивает столько, сколько есть.  CopyTicks возвращает количество скачанных тиков(100 000) и ничего не добавляет.

ясно.
 

Если CopyTicks работает на тестере, то надо и еще учесть, что дата начала копирования, должна быть меньше, чем дата начала тестирования.

А если это CopyTicksRange, то снова на тестере, конечная дата копирования не может быть больше, чем дата начала тестирования.

 

Есть необходимость протестировать робота на реальных тиках конкретного брокера. Однако, терминал сильно ругается на котировки, которые он получил от этого брокера (на картинке).

Вопрос - есть ли рецепты лечения этой болезни без большой потери качества моделирования?

Или только переходить к другому брокеру?

Котировки

 
Vadim Zotov:

Есть необходимость протестировать робота на реальных тиках конкретного брокера.

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

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

fxsaber, 2020.02.14 22:14

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

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

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


Поэтому и использую скрипт.

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

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

fxsaber, 2020.02.14 22:52

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

#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());
}
Причина обращения: