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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
igrok333
1872
igrok333  
Grigori.S.B:

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

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

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

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

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

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

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

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

igrok333:

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

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

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

Petros Shatakhtsyan
14215
Petros Shatakhtsyan  
Grigori.S.B:

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

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

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

igrok333
1872
igrok333  
Grigori.S.B:

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

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

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

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

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

igrok333
1872
igrok333  
Petros Shatakhtsyan:

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

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

ясно.
Petros Shatakhtsyan
14215
Petros Shatakhtsyan  

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

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

Vadim Zotov
24098
Vadim Zotov  

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

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

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

Котировки

fxsaber
16348
fxsaber  
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());
}
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий