Все трейдеры и разработчики торгового ПО мечтают о создании автоматического торгового робота, который сможет сам торговать. Формулируются и реализовываются в MQL-коде самые разные торговые тактики и стратегии. Нетерпению их творцов нет предела - хочется как можно скорее увидеть как твое творение торгует. И все дружно бросаются в тестер торговых стратегий МТ4. Дальше ситуация подозрительно часто развивается так: тестер рисует чуть ли не линейный рост депозита. Разработчик (для надежности) гоняет свое детище на разных парах и периодах. Картина конечно отличается, но не сильно - советник стабильно зарабатывает. На радостях и с полной уверенностью в найденном граале, разработчик начинает его продажи, а трейдер ставит на свой реал.

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

Не тестер, а эмулятор

Тестер МТ4 на самом деле это не тестер. Это эмулятор рынка. Он может конечно успешно работать и именно как тестер, но для этого в эксперте должны быть предприняты некоторые особые действия - открытия, закрытия и модификации ордеров должны выполнятся только по ценам открытия и/или закрытия баров. Почему?

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

Про цены High и Low такого даже примерно сказать нельзя. Мы не знаем какая из цен была в потоке первой, куда цена пошла после открытия: вверх до High или вниз до Low? Но если мы хотя бы знаем что эти цены точно были, то про цены внутри бара мы не знаем вообще ничего. Как и когда они были и были ли вообще. Поэтому глядя на результаты тестирования на дневном периоде можно слегка а то и сильно засомневаться, а действительно ли ордер открывшийся в 13:35 и закрывшийся в 17:45 в реале сработал бы именно так: по этим ценам и в это же время.

Реализация эмуляции цен в МТ4

Отдадим должное разработчикам: что смогли они сделали. Даже при тестировании на днях, если в истории терминала есть данные на минутном периоде, именно они будут использованы тестером и этим результатам можно будет доверять. Но все равно не безусловно. Тестер физически не знает что происходило с ценой в течении целой минуты! Он нигде не сохраняет реальные тиковые данные и поэтому движение цены в пределах бара неизвестны. Если для минутного периода это хоть как то допустимо, то принять, что цена неизвестна в течении целых 4-х часов (а то и целого дня) - это и значит принять что вы работаете не с тестером, а с эмулятором рынка. Именно здесь корень различий, о которых было написано выше.

Самое страшное для торговой системы оказывается то, как разработчики реализовали эмуляцию тиков на участках где им неизвестна цена (даже с использованием меньших таймфреймов). Присоедините индикатор ft.Ticker к графику в режиме визуального тестирования любого советника. На 4-х знаковых ценах картина будет вобщем то похожей на реальную. И зубчики будут на графике цены, но как то очень подозрительно линейно будут двигаться их пики. На 5-ти значных котировках эмуляция цен тестером - это нечто особенное: на подавляющем количестве участков истории где нет цен с более мелких периодов, цена движется из точки в точку линейно! И даже изредка появляющиеся зубчики в 1 пункт совершенно не нарушают эту линейность. Минимально возможный период в терминале - одна минута. Вы можете допустить, что такое движение цены в течении целой минуты возможно на реале?! Что уже говорить про период в один день!

Источник обмана экспертов

Посмотрите на график эмуляции тиков и скажите: много ли ума нужно чтобы запрограммировать эксперта, который будет "предвидеть" движение цены в такой ситуации? :)) Простейший график скользящего среднего с периодом 2-3 легко сглаживает беззубые зубчики и график становится практически линейным!

Точки разворота определяются элементарно, эксперт по ним торгует с невероятной прибыльностью. Вся беда в том, что прибыльность эта абсолютно фиктивная. Цена реально так никогда не двигается и поэтому такие результаты вы никогда не получите!

Код эксперта-грааля

extern double Lot = 0.1;

#define Ave 2 // "период" усреднения тиков 

double vClose[Ave], v, vPrev=0; 

void start()
{
  for (int i=Ave-1; i>=1; i--) vClose[i] = vClose[i-1]; vClose[0] = (Bid+Ask)/2.0;
  v = 0; for (i=Ave-1; i>=0; i--) { v+= vClose[i]; } v /= Ave;
  if ( vPrev > v ) 
  {
    if ( OrdersTotal() > 0  )   
    {
      OrderSelect(0, SELECT_BY_POS, MODE_TRADES );
      if ( OrderType() == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,30,Red);
    }
    if ( OrdersTotal() == 0  ) OrderSend(Symbol(),OP_SELL, Lot,Bid,3,0,0,"",0,0,Red);
  }
  if ( vPrev < v )  
  {
    if ( OrdersTotal() > 0  )   
    {
      OrderSelect(0, SELECT_BY_POS, MODE_TRADES );
      if ( OrderType() == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,30,Red);
    }
    if ( OrdersTotal() == 0  ) OrderSend(Symbol(),OP_BUY, Lot,Ask,3,0,0,"",0,0,Red);
  }
  vPrev = v;
}

Результаты тестирования

Если торговать целым лотом, то такой "эксперт" должен за полгода сделать меня миллионером.

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

Как обмануть тестер МТ4

Итак, зная "где собака порылась" можно попробовать зарыть ее ямку. Что нам нужно чтобы тестер не рисовал нам липовые сделки, а действительно тестировал нашу ТС?

  1. Забыть о режимах тестирования "все тики" и "контрольные точки" и пользоваться только "по ценам открытия".
  2. Если вам нужно протестировать систему на больших таймах (часы или дни) - выбирайте для тестирования только тот участок времени, для которого есть закачанная история минутных данных.
  3. Для точного тестирования тиковых стратегий используйте реальный поток тиковых данных, записанный индикатором ft.Ticker.

Выводы

  1. Тестированию в тестере МТ4 можно доверять только с большой натяжкой, понимая механизм эмуляции движения цен и его практически линейный характер.
  2. В эксперте должны быть предусмотрены специальные техники программирования чтобы обмануть тестер - эксперт должен работать только на открытиях баров.
  3. Не смотря на название "Все тики (наиболее точный метод на основе всех наименьших доступных таймфреймов)" это самый не точный метод. Это просто меньшее из всех трех доступных для тестирования зол, особенно если у вас есть минутные данные для тестируемого участка.

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

 

P.S. Если же вы можете сами протестировать эксперта, то будет очень интересно измерить граальность торговли эксперта с помощью моего следующего инструмента: GrailMeter (измерителя граальности). Он просто определяет какой процент количества сделок обладает признаками граальности и выводит эту информацию.

Подробнее о GrailMeter >>>

Реквизиты WebMoney:

webmoney.ru Проверить аттестат
WMID: 280532500497
Контакты, поиск:

Контакты, связь с автором
Поиск по сайту
Карта сайта
Загрузить, оплатить:

Загрузить инструменты ForexTools
Заказать и оплатить лицензии
Получить лицензии бесплатно
Партнеры:

Группа компаний LiteForex
Форекс портал ForexPeoples
Форекс-форум РАУФР

© Copyright 2006-2012. FOREXTools.com.ua