Тестирование стратегий для ручной торговли на исторических данных

Тема в разделе "Эпистолярий", создана пользователем des, 27 май 2013.

  1. des

    des Новичок форума

    [​IMG]

    Тестирование стратегий для ручной торговли
    на исторических данных


    Как известно, на инвестиционных счетах компании ForexStart вплоть до 4 этапа нельзя использовать автоматические торговые системы (советники) для ведения торговли. Торговать можно только вручную. Это вполне правильно и продиктовано тем, что в руках новичков автоматическая торговля без понимания алгоритмов, заложенных в советники их создателями и без грамотного управления рисками может быть потенциально опасной для депозита. Но и многие опытные трейдеры, имея возможность автоматизировать торговлю, предпочитают совершать торговые операции вручную. В платформе MetaTrader 4 предусмотрена возможность для тестирования автоматических торговых систем, в ходе которого советник торгует на исторических котировках так, как если бы они поступали в режиме реального времени. Но как быть с ручными?

    Можно конечно, открыв окно «Свойства» графика (клавиша F8) и сняв галочку «Автопрокрутка графика» прокручивать график назад и наблюдать за поведением индикаторов торговой системы. Но это может помочь далеко не всегда – очень многие индикаторы отображаются на истории не так, как у левого края графика, т. е. попросту «рисуют». А некоторые и вовсе не отображаются на истории дольше, чем на несколько десятков баров. К тому же, просто рассматривая историю, мы уже видим все максимумы/минимумы, развороты и тренды, нарисованные ценой. Нет того эффекта «неожиданности», который присутствует в торговле в режиме реального времени. Пожалуй, самым качественным способом тестирования ручной торговой системы является торговля по ней в режиме реального времени на демо счете. Но и этот способ обладает одним недостатком – требует больших затрат времени. На такое тестирование стратегии может уйти не один месяц.

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

    Для установки тестера к себе на компьютер, скачайте архив SimpleFXTester.zip. Распаковав архив, вы получите следующие файлы:


    [​IMG]

    Рис 1. Содержимое архива


    Скопируйте их в корневую папку установленного терминала компании ForexStart, согласившись со слиянием папок в появившемся диалоговом окне. На большинстве компьютеров эта папка должна располагаться здесь – C:\Program Files\FXstart - MetaTrader\

    Далее откройте ваш терминал (или перезапустите его, если он был открыт до этого). Затем нужно правильно настроить терминал для работы с советниками. Для этого выбираем пункт меню «Сервис» -> «Настройки» или нажимаем «Ctrl+O» на клавиатуре. В появившемся окне настроек терминала выбираем вкладку «Советники» и расставляем галочки как на скриншоте ниже.


    [​IMG]

    Рис 2. Настройки для работы с советниками


    Жмем «Ок» в настройках, тестер стратегий для ручной торговли установлен и теперь самое время заняться архивом исторических котировок для тестирования.

    Архив котировок может быть получен из нескольких разных источников. Во-первых, его может предоставлять сам брокер. Надеюсь, что со временем ForexStart внедрит подобную практику и у себя. А в данный момент мы можем либо скачать архив котировок с серверов компании MetaQuotes – производителя торговой платформы MetaTrader 4, либо воспользоваться архивом от какого-либо крупного брокера, поставщика ликвидности – Dukascopy, например. Последний вариант позволяет получить более качественную историю котировок, чем в случае с MetaQuotes, но формат предоставляемых данных отличается от формата данных в MetaTrader 4, что потребует проведения дополнительной конвертации. Конвертация эта содержит много нюансов и сложностей, достойных описания в отдельной статье. Сейчас же мы рассмотрим первый вариант, простой и доступный каждому.

    Начнем с того, что увеличим значение глубины истории в уже знакомом нам окне настроек терминала. Выберем пункт меню «Сервис» -> «Настройки» или нажимаем «Ctrl+O» на клавиатуре. В появившемся окне выбираем вкладку «Графики» и в поле «Макс. баров в истории» вводим значение 10000000, как показано на скриншоте ниже. Это позволит подгружать в терминал всю имеющуюся в архиве историю.


    [​IMG]

    Рис 3. Настройки глубины истории


    Нажав «Ок», приступим к получению истории котировок от MetaQuotes. Для этого выберем пункт меню «Сервис» -> «Архив котировок» или нажмем клавишу «F2» на клавиатуре. В появившемся окне архива котировок выбираем нужную нам для теста валютную пару, например EURUSD.

    Важно! - Валютные пары можно выбирать из групп «Forex» или «Forex-Crosses», но только не из групп с «.5» в конце. Пятизначные котировки имеют нестандартное именование с добавлением символа «v» в конце имени. Валютных пар с такими именами нет на серверах MetaQuotes, и история для них не будет загружена.

    Выбрав необходимую валютную пару, кликаем по ней два раза мышью и выбираем в открывшемся списке период «1 Минута», как показано на скриншоте ниже. Минутный график в MetaTrader 4 является основой для построения графиков всех остальных таймфреймов. 1-часовой бар содержит в себе 60 минутных, 4-часовой 240 минутных и т.д. Далее жмем кнопку «Загрузить» и соглашаемся с появившимся предупреждением, нажав «Ок».


    [​IMG]

    Рис 4. Загрузка истории котировок


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

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

    Для добавления нашей валютной пары кликнем правой кнопкой мыши по окну «Обзор рынка» и в открывшемся меню выберем пункт «Символы». В появившемся окне «Символы» в соответствующей группе выберем необходимую валютную пару и нажмем кнопку «Показать», как на скриншоте ниже.


    [​IMG]

    Рис 5. Добавление валютной пары в окно «Обзор рынка»


    Закрыв окно, мы можем убедиться, что нужная нам валютная пара отобразилась в окне «Обзор рынка» и перезапустить терминал для сохранения сделанных нами изменений.

    Теперь мы можем приступать к тестированию на истории какой-либо стратегии для ручной торговли. Открыв терминал, выбираем пункт меню «Вид» -> «Тестер стратегий» или нажимаем «Ctrl+R» на клавиатуре. В нижней части терминала появляется открытое нами окно «Тестер», в котором мы производим настройки, как на скриншоте ниже.

    В списке «Советник» выбираем установленный нами ранее SimpleFXTester_v2, в списке «Символ» валютную пару, для которой мы загрузили историю котировок. В качестве модели можно выбрать «Все тики» - это обеспечит наибольшую плавность и точность изменения цен. Однако некоторые жалуются на недостаточную скорость при тестировании. В этом случае может помочь модель «Контрольные точки» - цены будут изменяться более прерывисто и резко, но вместе с тем и быстрее, чем при модели «Все тики». Модель «По ценам открытия» будет обеспечивать максимальную возможную скорость тестирования, но при этом на каждом баре будут учитываться лишь четыре точки – цена открытия и закрытия бара, а также его максимум и минимум.

    Также можно выставить галочку «Использовать дату» и выбрать начальную и конечную даты для теста на определенном временном интервале. Обязательным условием для теста ручных торговых стратегий является включение галочки «Визуализация». Ползунок скорости рядом с этой галочкой можно передвинуть в крайнее левое положение для обеспечения максимальной скорости тестирования.

    В списке «Период» выставляется период, на котором предполагается производить тестирование. Нажав на кнопку «Свойства эксперта», в появившемся окне свойств можно выставить требуемый размер депозита для теста. По окончании настроек жмем на кнопку «Старт» и начинаем тестирование.


    [​IMG]

    Рис 6. Настройка тестера стратегий


    После нажатия на «Старт» терминал сформирует необходимые тиковые данные для теста и запустит наш советник-тестер. При этом появится диалоговое окошко как на скриншоте ниже. Для начала тестирования следует нажать «Ок».


    [​IMG]

    Рис 7. Диалоговое окно тестера


    При этом на экране появится основное окно нашего тестера – «SimpleFX Tester», а среди графиков терминала новый график выбранной нами валютной пары для теста с выбранным нами же таймфреймом и меткой «visual». Если переключиться на него, то мы увидим движение цены на этом графике, имитирующее движение в реальном времени. То есть то, что нам и было нужно для теста ручных торговых стратегий. Слева на графике выводится блок разнообразной статистики. Если он мешает, его можно отключить, сняв галочку «Show HUD on Chart» в меню «File», как показано на скриншоте ниже. Для приостановки движения цен можно использовать кнопку «Play/Pause» в окне «SimpleFX Tester», а для окончательного завершения тестирования - нажать на кнопку «Стоп» в терминале и закрыть окно «SimpleFX Tester».


    [​IMG]

    Рис 8. Обзор основного окна тестера


    Остановимся поподробнее на основном окне «SimpleFX Tester». В нем содержится весь функционал данного тестера. Для приостановки движения цены и регулировки ее скорости служит группа «Playback Controls». Кнопка «Place New Order» открывает окно для установки нового ордера. Во вкладках «Open», «Pending», «Closed» отображаются соответственно открытые, отложенные и закрытые ордера. Открытые и отложенные ордера можно модифицировать или удалять при помощи кнопок «Modify Order» и «Close Order».

    Окно установки нового ордера позволяет открывать рыночные ордера – «Instant Execution» и отложенные ордера – «Pending Order». Скриншот окна представлен ниже. Тип устанавливаемого ордера можно выбрать в списке «Order Type». В зависимости от выбранного вами типа ордера в нижней части окна будут либо кнопки «Buy» и «Sell» для рыночного ордера, либо дополнительный список для выбора типа отложенного ордера (Buy Stop, Buy Limit, Sell Stop, Sell Limit), поле для ввода цены и кнопка установки ордера «Place Order». Помимо этого, предусмотрена возможность установки трейлинг стопа для ордера любого типа.


    [​IMG]

    Рис 9. Обзор окна установки нового ордера
     
  2. des

    des Новичок форума

    На некоторых форумах, посвященных форексу, где идет обсуждение тестирования стратегий при помощи данного тестера, в минус ему ставят якобы невозможность тестирования мультитаймфреймовых стратегий (три экрана Элдера, к примеру). Стратегий, в которых во время торговли ведется мониторинг одновременно по нескольким разным таймфреймам. Однако на самом деле такая возможность есть. Просто не все знают, как ее задействовать.

    В качестве примера добавим к уже имеющемуся графику с таймфреймом H1 дополнительный график с таймфреймом M15. Сделать это возможно только в том случае, если мы уже начали тестирование, так как тестер стратегий динамически сгенерирует дополнительные графики со всеми возможными таймфреймами для нашей валютной пары. Поэтому если тестер до этого не был запущен, его необходимо запустить кнопкой «Старт» в окне «Тестер» терминала, а затем поставить на паузу при помощи кнопки «Play/Pause» в окне «SimpleFX Tester». Теперь выберем пункт меню терминала «Файл» -> «Открыть автономно». В появившемся окне мы можем увидеть графики различных таймфреймов для тестируемой нами валютной пары с приставкой «_tst». Выбираем нужный нам таймфрейм - M15 и нажимаем кнопку «Открыть», как показано на скриншоте ниже.


    [​IMG]

    Рис 10. Добавление дополнительного окна с таймфреймом M15


    После чего выбранный нами график с приставкой «offline» откроется в терминале, а мы, расположив окна графиков удобным образом и добавив необходимые индикаторы, можем тестировать ручную торговую стратегию с использованием разных таймфреймов одновременно.


    [​IMG]

    Рис 11. Идет тестирование ручной торговой стратегии


    В заключении хочу сказать, что большим преимуществом данного тестера является то, что на тестируемый график можно добавить любой индикатор или применить нужный шаблон. Таким образом, можно тестировать на исторических данных практически любую торговую систему для ручной торговли. Как основанную на индикаторах, так и на каких-либо сетапах price action. А после проведенного теста во вкладках «График» и «Отчет» окна терминала «Тестер» можно ознакомиться с графиком изменения средств на тестовом депозите или с подробной статистикой о проведенных сделках. А так же сохранить отчет в виде файла html. Надеюсь, что этот тестер окажется полезным дополнением к ручной торговле для участников форума.


    В браузере не всегда удобно читать большие блоки текста,
    поэтому выкладываю исходную статью в PDF-формате -
     
    SOROKA и Interesting нравится это.
  3. Interesting

    Interesting Я тут не случайно

    Top самых активных пользователей месяца

    Интересная статья. правда я бы предпочел тестирование по оригинальным котировкам от ДЦ, а не грузил фиг знает откуда взявшиеся котировки (ничего не имею против MQ).
     
  4. des

    des Новичок форума

    Согласен. Я не знаю насколько это сложно реализовать, но если бы у FxStart был свой собственный архив котировок, доступный для загрузки в терминал - это был бы идеальный вариант. На данный же момент есть два варианта - либо немного "дырявые" котировки от MQ. (которых тем не менее достаточно, чтобы прикинуть на истории свою ТС) Либо от какого-нибудь стороннего брокера. В принципе в сети можно найти более менее качественные и уже конвертированные для MT4 архивы с котировками для теста. (по несколько гигабайт весом).
     
  5. des

    des Новичок форума

    Оплата за статью получена. Спасибо!
     
    FranzFerdinand нравится это.
  6. Interesting

    Interesting Я тут не случайно

    Top самых активных пользователей месяца

    Загрузить историю от ДЦ очень просто:

    Вариант №1
    - Открываем тестер стратегий и выбираем нужный символ и период;
    - Выбираем период, скажем с 2010 года по текущее число;
    - Выбираем один из стандартных советников, я обычно выбираю Moving Average;
    - Проводим тестирование совы, перед тестированием происходит автоматическая загрузка истории.

    Вариант №2 (если нормальная история в МТ5)
    - Загружаем историю в МТ5 на нужную нам глубину (там история хранится в минутных барах, по ним строится график на любом ТФ);
    - Выгружаем котировки при помощи скрипта в файл;
    - Загружаем историю из файла в архив МТ4.
     
    des нравится это.
  7. des

    des Новичок форума

    Спасибо!

    По поводу варианта №2 - MT5 пользоваться не доводилось,
    поэтому ничего определенного сказать не могу.

    А вот насчет варианта №1 - интересный способ "вытягивания" котировок из ДЦ =)
    Надо будет попробовать. Мне почему-то казалось, что глубина истории там ограничена.
    Если получится - то это пожалуй, будет лучший вариант получения котировок.
    Оригинальные котировки от ДЦ - это лучшее из всех вариантов.
     
  8. Interesting

    Interesting Я тут не случайно

    Top самых активных пользователей месяца

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

    Способ работает, пользуюсь им с начала работы с МТ4. Это уже лет 6-7.
    По крайней меру у Старта по EURUSD котировки D1 есть с мая 2005.
    Для EURUSDv если мне память не изменяет с 2006 года.
     
  9. Interesting

    Interesting Я тут не случайно

    Top самых активных пользователей месяца

    вот несколько полезных скриптов на эту тему:
    1. Экспорт истории котировок (Prival)
    http://www.mql5.com/ru/code/124?source=terminal5_codebase

    Назначение скрипта – экспорт истории котировок в формат, удобный для анализа в специализированных программах технического анализа. В частности, в MathCad (пример в архиве).

    2. sHistoryExport - удобный скрипт для экспорта исторических данных в формате МetaТrader 4 (komposter)
    http://www.mql5.com/ru/code/1252?source=terminal5_codebase

    Проблемы с историей в MetaTrader 4? Загрузите подробную историю любой глубины из MetaTrader 5!

    3. downloadhistory.mq5 (gdtt)
    http://www.mql5.com/ru/code/302?source=terminal5_codebase

    Производит загрузку истории по текущему символу графика. Процесс загрузки отражается прогрессбаром.
    Использует класс CProgressBar, описанный в статье Инструмент "Ценовая гистограмма" (Рыночный профиль) и его реализация на MQL5.

    4. YURAZ_CreateCSV_HistoryFile_From_MT5_For_MT4 (YuraZ)
    http://www.mql5.com/ru/code/232?source=terminal5_codebase

    В длинном названии скрипта отражена суть задачи!
    При попытке загрузить историю в MetaTrader 4 я столкнулся с проблемой, в истории есть дырки.
    Но был удивлен, не обнаружив дыр в истории базы MetaTrader 5, пришла простая идея взять котировки MetaTrader 5 и загнать в историю MetaTrader 4.
    Данный скрипт поможет получить полную историю для MetaTrader 4 без дырок из базы MetaTrader 5.

    5. Save history to HST (avoitenko)
    http://www.mql5.com/ru/code/780?source=terminal5_codebase

    Данный скрипт позволяет создать бинарный файл c расширением *.hst. Данный формат файла поддерживается MetaTrader 4 и его возможно импортировать в историю котировок терминала или открыть как автономный график. Данный скрипт изначально задумывался как инструмент для сравнения показаний индикаторов написанных под два разных терминала MetaTrader 4 и MetaTrader 5, ведь для этого нужны одинаковые котировки.
     
    Последнее редактирование модератором: 28 май 2013
  10. Armani

    Armani Новичок форума

    Отложенные ордера не модифицируются в тестере, их нужно удалять, чтобы переустановить на новый уровень, при том, что можно было бы установку и модификацию ордеров сделать по технологии drag-n-drop, тем более сам терминал уже поддерживает такую фишку. Информация по ордерам прибыль/убыток отображается только в окне графика, а не в самом тестере. Нет возможности дробного частичного закрытия ордера. Сам тестер подвисает, выдает кучу ошибок. При длительном тестировании перестает работать.

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

    Interesting Я тут не случайно

    Top самых активных пользователей месяца

    Просьба указать какая у вас ОС, какой процессор, а также валютную пару и период тестирования.
    Короче, желательна подробная информация.
     
  12. des

    des Новичок форума

    Информация по ордерам прибыль/убыток отображается и в окне тестера.
    Это видно на моем скриншоте. Отложенные ордера также вполне нормально модифицируются. Дробного закрытия ордеров действительно нет. При этом тестер вполне стабильно работает и на продолжительных интервалах тестирования. Максимальный период времени, который я тестировал - неск. месяцев (для интрадей стратегии). Ошибок замечено не было. Быть может у вас что-то с компом или ОС?
     
  13. des

    des Новичок форума

    Для drag-n-drop посмотрите на этот тестер - http://codebase.mql4.com/ru/702
     
  14. Armani

    Armani Новичок форума

    ОС Windows 7 Professional, процессор Core i7, 6 Гб ОЗУ.

    Валютная пара EURUSD, период тестирования разный, но в промежутке от 2008-го до 2012-го.
     
  15. Armani

    Armani Новичок форума

    [​IMG]

    А вот вам и собственно картинка!))) Теперь по порядку:

    Пункт 1. Типичная ошибка, периодически возникающая.

    Пункт 2. Объясните мне, неразумному, КАК тут модифицировать отложенный ордер???
     
  16. Interesting

    Interesting Я тут не случайно

    Top самых активных пользователей месяца

    На выходных постараюсь поганять это чудо в эмуляторе на ноуте, посмотрим что покажет при различных режимах тестирования.
     
  17. des

    des Новичок форума

    Пункт 1. Данная ошибка скорее всего типична именно для вас
    (проблемы с win, не хватает нужных пакетов redistributable и т.п. - причин может быть чуть более, чем дофига).
    Ни у меня (Win7 x64 Ultimate) ни у знакомых, тоже юзающих данный сабж подобных ошибок нет. Иначе вы бы просто
    не увидели данной статьи, ибо выкладывать всякий неликвид мне смысла нет ни малейшего.

    Пункт 2. Как выяснилось, вы правы - у ордеров можно поменять только уровни стопа и профита.
    Цену открытия ордера модифицировать возможности нет. Только создать новый ордер с нужной ценой.
    Виноват, малость протупил, т.к. использую в основном рыночное исполнение.

    PS. Скажу прямо - тестер конечно не верх совершенства, однозначно.
    Но этот тестер вместе с тем, что расположен в Codebase MQL по ссылке несколькими
    постами выше - лучшее из того, что вообще есть в открытом доступе в сети.

    Т.е. есть либо вариант пользоваться тем, что есть, при наличии определенных недостатков,
    либо нанимать программиста (или делать это самостоятельно) и создавать новый тестер.
    И если он будет действительно весьма неплох в юзабилити - может даже его продавать.
     
    Armani нравится это.
  18. Armani

    Armani Новичок форума

    Ответ предельно ясен. Спасибо за разъяснения.
     
  19. Armani

    Armani Новичок форума

    А на Win 8 работать отказывается категорически. Вообще не запускается...
     
  20. Interesting

    Interesting Я тут не случайно

    Top самых активных пользователей месяца

    используйте VirtualBox с эмулятором старых ОС.
    если будут проблемы с VirtualBox могу в личке подсказать что и как.

    PS
    W8 это отстой еще тот, не вижу в нем существенных преимуществ перед W7
     

Поделиться этой страницей