Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5" - страница 4

 
Renat :
Но Вы участвуете в теме MetaTrader 5 + MQL5 + Tester и прямо тягаетесь с разработчиками.


Так как Вы не знаете терминала MetaTrader 5, то Вы не в курсе режимов торговли в тестере и даже не обратили внимания на мое объяснение этих режимов с картинкой на первой странице этой темы.

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

Об агрессивных режимах в тестере я неоднократно писал в форумах (MQL4.com и MQL5.com).

Это и есть корень проблем - нежелание проверять на практике.

Вообще наш диалог сильно смахивает на дискусию противников и сторонников локов,

каждая сторона не желает слышать другую (возможно потому что одна сторона выстрадала некоторые решения которые оппоненты не видят и не понимают).

Хорошо бы чтоб вы оказались правы и та самая практика это покажет,

желаю вам удачи и поверьте это искренние пожелания так как мне важней пользовать более совершенный терминал

(и иметь с его помощью прибыль), чем оказаться правым в каком то там споре.


 
Renat  писал(а)  :

...
4. Помня Ваше «умение» моделировать и отношение к этому в МТ4. Могу задать еще один вопрос. Количество тиков в баре у Вас совпадает ? В МТ4 вы 20% тиков выбрасывали. Сейчас как ? Если в реальном баре 100 тиков, при моделировании у Вас сколько будет ?

Совпадает, но Вы же не желаете ничего проверять. Вам достаточно теоретических размышлений.

Ок проверяем. Набросал эксперт. Вот  код.

  int ticks=0; 
  double  old_bid=0, old_ask=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {return(0);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick)) // получаем тик по символу
     {
     // ограничение по времени, собираем смоделированные тики за 1 час. 2010.05.21   22:00
      if(last_tick.time>"2010.05.21 21.00.00" && last_tick.time<"2010.05.21 23.00.00") {
      if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  { // если нет изменения цены это не тик, пропускаем
         // это тик запоминаем цену, увеличиваем счетчик тиков и выводим принт для проверки
         old_bid=last_tick.bid;
         old_ask=last_tick.ask;
         ticks++;
         Print("ticks=", ticks," ",last_tick.time,": Bid =",last_tick.bid," Ask =",last_tick.ask);
     }      
     }
     }
   else Print("SymbolInfoTick() failed, error =",GetLastError());
//---
  }

Вот результат

 

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

Файлы:
111.mq5  3 kb
 

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

Вот правильный вариант отсечки времени:

      if(last_tick.time>="2010.05.21 21:00" && last_tick.time<"2010.05.21 22:00") 

И результаты:

2010.05.23 20:13:07     Core 1  ticks= 2315   2010.05.21 21:59:59 : Bid = 1.25721  Ask = 1.25738

Сгенерировалось 2315 тиков при реальных 2318. Утеря в 3 тика из 2318 - это нормальный вариант.


 

Отлично Вы согласны что этим кодом можно проверить. Нужно только правильно ввести временной интервал. Введите пожалуйста вот этот

      if(last_tick.time>"2010.05.19 12.00.00" && last_tick.time<"2010.05.19 13.00.00") {

 

поясните куда делось 5200 тиков ? 

 

Это хорошо, что Вы продолжаете практические тесты.

У меня нет на этой часовке 5869 тиков, а есть 679. Вот мои результаты прогона этого периода - 679 тиков. Смоделировалось 100% тиков.


По всей видимости, у вас часовка закешированная осталась (а минутки были корректными суммарно на 679 тиков) - мы как раз 19 числа на короткое время включали тиковый стакан, но потом все откатили.

Просто вызовите на графике команду "Обновить" и запустите снова. 

Обратите внимание на правильный формат указания времени YYYY.MM.DD HH:MM:SS.

 

такой вопрос который забыли осветить в данной статье

с появлением в мт5 данных о реальных объёмах

как будет генерится данная информация

 

Прекрасно понимаю пипсовщиков, хотя Urain и Prival отмахиваются от этого. Но у меня ТС строятся наоборот на максимально возможной фильтрации шумов, ТС становятся невосприимчивы к качествам тиков. Такие ТС можно использовать с любыми поставщиками котировок.  На счет NN, о которых говорил Urain - строить ТС на NN, чувствительную к качеству тиков, бессмысленно.

Так же хорошо понимаю разработчиков.

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

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

PS Да, и ещё. Не знаю, зачем нужна история тиков (ведь требуется адекватное реальному тестирование), если фильтры ДЦ может менять хоть каждый божий день, делая накопленную историю тиков бесполезной, так как будущее поведение ТС окажется совсем не то, что ожидалось после тестирования даже на реальной тиковой истории. Именно поэтому считаю вариант с регулировкой "пушистости" пользователем наиболее предпочтительным, нежели возможность иметь реальную тиковую историю. 
 
joo  писал(а)  :

Прекрасно понимаю пипсовщиков, хотя Urain и Prival отмахиваются от этого. Но у меня ТС строятся наоборот на максимально возможной фильтрации шумов, ТС становятся невосприимчивы к качествам тиков. ....

А мне непонятны люди, которые развешивают ярлыки не разобравшись. Еще раз привожу ссылку с первой страницы. https://www.mql5.com/ru/forum/115584/page11#150512. Посмотрите на картинку внимательней !!! там все видно - сделки нанесены на график.

Параметры - средняя величина сделки в пунктах 650, минимальное время удержание сделки 1час. Я ПИПСОВЩИК ?  

Почему ВЫ мне запрещаете  анализировать тики ? Я что вам запрещаю работать и анализировать поступающую информацию так как ВЫ считаете нужным ? Вы считаете что работая на часовиках ВЫ автоматически избавились от шума - это заблуждение, предлагаю еще лучше вариант  - работайте на годовых свечках, система будет еще лучше, еще робастнее, еще бесшумнее, у поставщиков данных никаких проблем, передал 5 цифр OHLC и «объем» один раз в год трейдеру и нехай торгует. Все счастливы все довольны у трейдера робастная система, шумов нет у поставщика никаких проблем с масштабированием и т.д. (есть такой метод в науке, подстановка крайних случаев, что бы понять/ бред высказанная идея или нет… выводы делайте сами)

Сейчас напишу ответ Ренату и все. Постараюсь описать, в чем вижу несоответствия моделирования  и реальных котировок. Это его детище, он принял решение моделировать тики, причем считает, что при моделировании многие параметры  неважны.

Наше дело понять, где мы можем доверять тестеру и в чем. А где тестер нас обманет. Переубедить друг друга мы не сможем. Ренат находиться в заблуждении, что можно создать модель, которая лучше реала.  Я считаю, что нет. 

Нам дают возможность исследовать ТС только на модели и нет возможности прогнать созданную ТС по реальным данным (плохие эти данные, или хорошие, пушистые или нет, неважно). У нас нет этой возможности !!!.  Почему нам не дают возможность хотя бы самостоятельно скачать историю допустим вот отсюда http://www.dukascopy.com/swiss/russian/data_feed/historical/ положить её в тестер и прогнать ТС по этим данным ? Результат вы все прекрасно знаете, неужели никто не сталкивался ? в тестере все гуд, а на реале даже если ты нашел ТС, можешь так красиво получить по морде https://www.mql5.com/ru/forum  мама не горюй. И надо быть абсолютный параноиком, что бы такое моделировать (даже с помощью генератора) и пытаться создать ТС которая будет устойчива к такому и работать в таких условиях...

Теперь по поводу сравнения количества тиков истории и смоделированных…

Да это проблемы с историей (это как раз то о чем мы и говорим).

Я писал в Сервисдеск #14710 2010.05.18 08:42 сбои в котировках. Долго разбирались, похоже, так и не решили. 20.05 очистил все котировки в ручную, качал все по новой, так что не в этом дело (вы 19-го проводили эксперименты). Котировки у меня свежие по переписке из Сервисдеск закачал все по новой в районе 2010.05.20 12:08.

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

  1. Да действительно, при нажатии кнопки обновить - история поменялась. Данные совпали ticks= 678.
  2. С точки зрения поставщика данных это хорошо, он как волшебник может менять историю.
  3. С точки зрения трейдера это кошмар. Исключите такую ситуацию. Эти данные у меня в терминале, они участвуют в расчетах, в индикаторах, на них строятся ТС и принимается решение.

На что я еще обратил внимание,  вот эта проверка бесполезна

if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  

1. у Вас нет ситуаций, когда меняется только аск, или только бид (разбирают продавца или покупателя). А это происходит очень часто. Бид стоит, меняется только аск и наоборот.

2. Спрэд равен константе. Это тоже не соответствует реалиям.

3. Если Вы хотите что бы вам помогли в исследовании качества модели. Соберите самостоятельно тики, лучше с 3-4 источников и выложите их. Покажите результаты моделирования этих тиков не в виде рисунка, где на 1000 тиков цена уходит на 30 пунктов. А допустим за сутки, где есть различные ситуации, в том числе и большие движения за короткий интервал времени.

4. Приведите числовые характеристики отклонения от истинных данных,  хотя бы СКО по обоим осям.

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

6. В противном случае ситуации будет как и у нас выше, у вас в терминале 678 тиков у меня 5800. Если сюда добавить все нюансы сбора тиков, то правды не найдем никогда.

7. Сидеть 2-3 суток собирать тики, что бы, что то кому то показать или доказать,  извините, я уже на собирался в свое время. Мне в принципе достаточно посмотреть как генерируются тики, что бы составить мнение.

8. Жаль что из-за выбранного формата хранения и подачи истории в терминал, мы трейдеры теряем информацию. Ренат ведь вы не сможете, как бы ни старались из-за этого построить график ну допустим в виде Ренко, Каги. Он будет перерисовываться и отличаться от того что строиться на реальных данных.

 

Мои выводы и рекомендации трейдерам. Можете принимать их к сведению, можете нет, ваше дело.

  1. Режим тестирования потиковый бесполезен. Лишние траты времени, т.к. структура тиков внутри бара, воспроизводиться неточно.
  2. Наиболее корректный метод тестирования скорее всего такой же как и в МТ4 по ценам открытия. Точнее, нужно убедиться, что начался новый бар и брать цены клоуз предыдущего. При этом на реале нужно использовать «параноидальные» проверки наличия и синхронности данных типа вот таких https://www.mql5.com/ru/forum/993  и результаты все равно могут не совпасть.
  3. Если тестируете систему с маленькой величиной стопа или трала, то результаты могут отличаться даже по ценам открытия, из-за возможного несоответствия времени наступления Low и High. (Они могут быть переставлены местами).
  4. Перед работай советника на реале, при его инициализации нужно каким то образом проверить корректность истории (сымитировать нажатие кнопки обновить)
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
  • www.mql5.com
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
 
Prival :

А мне непонятны люди, которые развешивают ярлыки не разобравшись. Еще раз привожу ссылку с первой страницы. https://www.mql5.com/ru/forum/115584/page11#150512. Посмотрите на картинку внимательней !!! там все видно - сделки нанесены на график.

Параметры - средняя величина сделки в пунктах 650, минимальное время удержание сделки 1час. Я ПИПСОВЩИК ?  

Почему ВЫ мне запрещаете  анализировать тики ? Я что вам запрещаю работать и анализировать поступающую информацию так как ВЫ считаете нужным ? Вы считаете что работая на часовиках ВЫ автоматически избавились от шума - это заблуждение, предлагаю еще лучше вариант  - работайте на годовых свечках, система будет еще лучше, еще робастнее, еще бесшумнее, у поставщиков данных никаких проблем, передал 5 цифр OHLC и «объем» один раз в год трейдеру и нехай торгует. Все счастливы все довольны у трейдера робастная система, шумов нет у поставщика никаких проблем с масштабированием и т.д. (есть такой метод в науке, подстановка крайних случаев, что бы понять/ бред высказанная идея или нет… выводы делайте сами)

................

Почему Вы так бурно реагируете, я аж опешил? Я ж поддержал Вашу точку зрения. Не нравится слово "пипсовщик" - забираю его обратно. Сожалею, что вызвал у Вас бурю негативных эмоций.

Я понимаю слово "пипсовщик" в более широком смысле. Пипсовщик - ТС, чувствительная к качеству тиков. Вот и всё. Как будто Вы прочитали только первую строчу моего поста. А дальше в своем посте, я предложил компромиссное решение.

PS Использую другие методы фильтрации шумов, нежели переход на старший ТФ (в посте выделено жирным). Мои изыскания ориентированы на M1.

 
joo  писал(а)  :

....

Если Вы восприняли эту информацию, лично к себе извиняюсь. Да реагирую бурно, т.к. вместо  того что бы сейчас торговать и зарабатывать кусок хлеба для своей семьи сижу, пишу. Это скорее писалось тем, кто считает, если человек анализирует тики, то он автоматом пипсовщик. Это не верно. Я стараюсь это показать как могу.

Нет, какого понятия качественный/некачественный тик. Соответственно и совокупность качественные или некачественные тики. Тик это реальность, данная нам в торговый терминал. Он к нам поступает, запускается эксперт и мы его анализирует. Кто ни будить из здесь присутствующих сможет сказать. Вот этот тик – качественный, а этот нет? 

Кто то анализирует только закрытие баров = тик который пришел в конце часа. Чем этот тик отличается по качеству, от тика который пришел на секунду раньше? Допустим, кто то утверждает, что он более «пушистый», что это и с чем это едят? надеюсь, вы видите абсурдность таких утверждений.

Теперь просто подумайте поставщики котировок работают на уровне тиков, да они их фильтруют, у них есть несколько поставщиков, он выдает нам то, что считает нужным и выгодным им в данный момент времени. Но работают с тиками, не с OHLC, а с тиками. С теми, которые потом складываются  в бары. Неужели там в ДЦ все дурные и не видят, что работать на уровне тиков это самоубийство ?

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

Это как алгоритм упаковки, тот же  *.rar сжали информацию, передали другому, он разархивировал и прочитал, допустим это книга.  А теперь меняем алгоритм, распаковываем только первую (Open) и последнюю (Close) букву в предложении, ну можно еще две буквы добавить, самую толстую (аналог High) и самую тонкую (аналог Low). Ну как ? Кому понравиться читать такую книгу ? Здесь же тоже самое ((((


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