| / | Статьи |
Cтатьи
Возможности
Неторгующий эксперт тестирует индикаторы
Авторизуйтесь или зарегистрируйтесь , чтобы добавить новую статью
|
Неторгующий эксперт тестирует индикаторы [ en ]ВведениеВсе индикаторы можно разделить на две группы: статические - изображение которых на истории остается статичным и не меняется с приходом новых котировок и динамические - которые отображают свое состояние только для текущего момента времени и полностью переририсовываются при приходе новой цены. Работопригодность статического индикатора видна сразу на графике, а вот как проверить, что динамический индиктор работает правильно? Этому вопросу и посвящена данная статья. Статическим являются подавляющее число индикаторов теханализа. Возьмем для примера тот же MACD. При ходновой котировки затронет в лучшем случае только изображение последнего периода, точнее - его окончание. На истории его график "непоколебим". Для того, чтобы проверить правильно ли работает статический индикатор, достаточно просто внимательно изучить его показания на исторических данных. Если есть несколько однотипных индикаторов и нужно выбрать для работы самый оптимальный - тоже никаких проблем: присоединяем все индикаторы и выбираем тот из них, который показывает "более правильно". Сиутация усложняется и становится почти тупиковой в случае динамических индикаторов. Примером такого индикатора может служить практически любой индикатор каналов. Как правило, эти индикаторы рисуют одну или несколько линий, показывающих коридор движения цены. Естественно, что эти линии строятся для текущего момента, и приход новых цен, значительно отличающихся от совсем недавних, могут изменить расположение линий на совершенно противоложное в течении нескольких секунд. Оценить насколько правильно работает такой индикаторо во всех возможных случаях расположений цен только по последней точке текущей цены просто невозможно. Вы можете почти все время видеть правильную работу индикатора на протяжении нескольких часов, и решите что он работает правильно, однако именно в момент принятия вами решения торговать, на рынке может сложится та самая ситуация, в которой он отрабатывает не правильно (ниже приведен пример неправильного построения скользящих каналов Баришпольца одним из индикторов), и вы, доверившись прошлому его "опыту", откроетесь совсем не в том направлении куда следовало. И сам индикатор буквально через пару баров, восстановит свое прежнее "правильное" показание. Но вам то что до того? - ваша открытая позиция уже убыточна! Тестер тестирует индикаторыОсновное назначение тестера стратегий - тестировать торговые советники. Поскольку некоторые из советников используют в своей работе индикаторы, тестер также должен уметь работать с ним в режиме тестирования. Этим мы и воспользуемся! Тестирование эксперта можно проводить в двух режимах: обычном и визуальном. В обычном режиме тестер отрабатывает все команды эксперта по ходу обработки истории и останавливается, выдавая итоговые результаты, когда заканчиваются имеющиеся в его распоряжении исторические данные тестируемой валютной пары. В визуальном режиме кроме этой работы, тестер дополнительно прорисовывает каждый бар/тик графика, эмулируя работу рынка в реальном масштабе времени. Правда в тестере можно ускорить, замедлить или вообще приостановить ход времени, что будет для нас существенным подспорьем при тестировании индикаторов. Неторгующий эксперт-фотографНо прежде чем начинать тестировать индикаторы, нам понадобится подготовить довольно необычный эксперт. Для наших целей эксперт не должен ничего делать. Его работа не должна отвлекать нас от тестирования индикатора, и что более важно, досрочный слив депозита при тестировании из за ошибок в торговле не должен приостанавливать процесс проверки индикатора. Поэтому мы просто создадим эксперт который ничего не делает. Единственная функция которую мы поручим ему делать - снимать скриншоты текущего состояния. Они нам сильно пригодятся при пошаговом анализе работы индикатора. Вот код эксперта: //+------------------------------------------------------------------+ //| IndicatorTester.mq4 | //| Copyright © 2006-2008, Sergey Kravchuk | //| http://forextools.com.ua | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006-2008, Sergey Kravchuk. http://forextools.com.ua" #property link "http://forextools.com.ua" //+------------------------------------------------------------------+ extern datetime ScreenShotStart=0; // дата и время снятия первого скриншота extern int ScreenShotMax=100; // сколько скриншотов нужно сделать extern int ScreenShotStep=0; // шаг съемки: <=0-не делать, N-на каждом N-ом баре extern string FilesPrefix="_"; // префикс для имен файлов скриншотов //+------------------------------------------------------------------+ datetime NextScreenShot=0; // дата время когда делать следующий скриншот double ScreenShotCnt=0; // подготовим счетчик скриншотов double ScreenShotCur=0.001; // номер начального скриншота string FileName; // имя файла для записи очередного скриншота //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if(ScreenShotStep>0 // нужно ли вообще делать снимкм? && ScreenShotStart<=Time[0] // уже наступило время начала съемки? && NextScreenShot<=Time[0] // пора делать следующий кадр? && ScreenShotCur*1000<=ScreenShotMax+1) // еще не все снимки сняты? { // соберем имя файла и запишем в него скриншот FileName=FilesPrefix+StringSubstr(DoubleToStr(ScreenShotCur,3),2)+".gif"; WindowScreenShot(FileName,800,600); // выдадим подсказочку Comment("Записан файл "+FileName+ "\nЕще осталось "+DoubleToStr((ScreenShotMax-ScreenShotCur*1000),0) +" шт."); // продвинем дату и счетчик на следующий снимок ScreenShotCur+=0.001; NextScreenShot=Time[0]+ScreenShotStep*Period()*60; } if(ScreenShotCur*1000>ScreenShotMax+1) Comment("Все скриншоты записаны"); return(0); } //+------------------------------------------------------------------+ Алгоритм съемки скриншотов достаточно прост: дожидаемся момента времени с которого мы хотим начать делать серию снимков (ScreenShotStart) и затем каждый ScreenShotStep бар снимаем до ScreenShotMax скриншотов. Каждый скришот записывается в файл, имя которого начинается с заданного префикса FilesPrefix, к которому пристыковывается номер снимка. Для формирования номера с лидирующими нулями (это необходимо для правильной сортировки снимков, иначе _10.gif будет идти сразу после _1.gif а только потом появится _2.gif) используется немножно необычный способ нумерации. Нумерация начинается с ScreenShotCur=0.001; и далее идет с шагом 0.001 (ScreenShotCur+=0.001;). Сам номер получается преобразованием десятичного числа в строку символов из которой в качестве номера выделяется подстрока начиная со 3-го символа. Таким образом мы отрезаем начальные "0." и получаем лидирующие нули перед цифрами номера. Такой способ позволяет накопить до тысячи снимков, что более чем достаточно для анализа. Если же вам этого будет мало - увеличьте "дробность" начального числа и шага до 0.0001 и вы сможете накопить до 10 тысяч снимков.
Приступаем к тестированию
|
![]() Двухэтапный вариант модификации открытых позиций
Двухэтапный подход позволяет избежать ненужных закрытий и переоткрытия позиций в ситуациях, близким к трендовым и в условиях возникновения дивергенций. |
![]() Интеграция MetaTrader 4 с MS SQL-сервером
В статье показан пример интеграции клиентского терминала MetaTrader 4 и сервером MS SQL посредством использования dll. Приложены как исходные коды на С++ и MQL4, так и готовый скомпилированный проект Visual C++ 6.0 SP5. |
| Предыдущая | Следующая |
ForexTools писал(а):
Она есть в demo.metaquotes.net (только что проверил)
К сожалению, без скринов и описания последовательности выполняемых вами действий я не могу сделать ничего - я не могу повторить у себя вашу ситуацию и определить что там не так. Это ж все равно что доктору по телефону говорить " у меня болит вот здесь" (тыкая себе пальцем в бок) и просить выписать лекарство. Да и потом, исходный код эксперта - он же у вас перед глазами! Там же нет никаких "извратов" - всего несколько операторов.
Почему то не могу зайти на Ваш сайт. Не хочется своими проблемами засорять этот сайт.
Ну это точно не моя проблема, а ваша (в том смысле, что вероятно у вас что то не так настроено). Сайт в сети постоянно. Я его ежедневно обновляю (вычитываю и исправляю очепятки, вот недавно обновил все мультииндикаторы и т.п.).
Вопрос к автору. У меня почему то не записывается индикатор, только пустое окно индикатора воспроизводиться. Всё делаю по инструкции.
гмм.... как то все "неопределенно"
не записывается индикатор
это значит скриншоты не записываются? и еще - какой индикатор (может он в тестере не работает)?
только пустое окно индикатора воспроизводиться
что значит "пустое"? и что там "воспроизводится" если оно пустое?
можете поподробнее и поточнее описать что, как и в какой последовательности делаете и когда что начинает не получаться
Запутало слегка. Равноудалённый канал строиться через три произвольные точки. А прямая линейной регрессии присутствует в Канале линейной регрессии
Фильм занятный у Вас получился. Действительно, в динамике видна "неуверенность" Ши-канала. Сам в своё время делал так, чтобы Ши-канал воспринимал как самый правый бар (левее которого он строиться) любой бар истории, а не только 0-бар. И с возможностью строить несколько таких каналов (по одному на каждом ТФ). Это, конечно, не анимация, как у Вас, но без тестера стратегий и с возможностью "остановить мгновение" на любом баре доступной истории....
Профитов Вам!
Это именно она. Просто я не был уверен что "неподготовленные" читатели смогут правильно воспринять этот термин, поэтому употребил эту "расшифровку". Для людей знающих - я дал "расшифровку расшифровки":
очень похоже на то, как это делает стандартный инструмент Равноудаленный канал