Оптимизация параметров стратегии с помощью SDK 2.0 (пошаговые инструкции)

From FxCodeBaseWiki
Jump to: navigation, search

Contents

Введение

В данной статье приводятся пошаговые инструкции по тестированию и оптимизации параметров стратегии с помощью Indicore SDK 2.0.

В качестве примера используется стандартная стратегия Marketscope/ru под названием MA_Advisor, но таким же образом можно выполнять тестирование и оптимизацию любой другой стандартной или пользовательской стратегии.

Особое предупреждение в отношении отчетов об тестировании

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

Подготовка системы

Indicore SDK

Загрузите и установите последнюю версию программы Indicore SDK. Используйте папку установки по умолчанию.

Загрузить последнюю версию можно по ссылке:

Загрузить бета-версию SDK 2.0

Загрузка данных цен

Загрузите файлы с ценами из архива цен CodeBase или используйте данные с сервера менеджера котировок.

Архив цен

Для того чтобы использовать данные из архива цен CodeBase, загрузите и установите архиватор 7-Zip. Он необходим для распаковки данных цен, которые можно загрузить с веб-сайта http://fxcodebase.com.

Загрузить последнюю версию можно по ссылкам:

версия для 32 бит

версия для 64 бит

После этого загрузите и установите данные цен:

  • Откройте статью Архив цен CodeBase и сохраните данные инструментов, которые планируете использовать для оптимизации стратегии, в какую-либо папку на компьютере.
  • Откройте эту папку и найдите загруженный файл. Файл исторических данных пары EUR/USD за 2010 г. будет называться EURUSD-2010.7z. Нажмите на файл правой кнопкой мыши. Во всплывающем меню выберите параметр 7-zip, а затем Извлечь файлы:
Backtest sbs1.png
  • Откроется архиватор 7zip. В окне архиватора выберите вариант C:\Gehtsoft\IndicoreSDK\data, чтобы извлечь файл, и нажмите кнопку OK.
Backtest sbs2.png

Менеджер котировок

Для загрузки 1-минутных данных котировок по выбранному инструменту за выбранный период времени можно использовать сервер менеджера котировок. Данные загружаются достаточно быстро. Загрузка 1-минутных данных по инструменту за целый год (около 300 тысяч свечей) обычно занимает меньше 30 секунд.

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

  1. Запустите приложение Lua Strategy Debugger из группы приложений Indicore SDK в меню «Пуск».
  2. В меню Tools (Сервис) выберите команду Load Quotes (Загрузить котировки):
    Optimize Load Quotes.png
  3. Откроется диалоговое окно Load Quotes (Загрузить котировки) . Выберите инструмент и год, данные цен по которым необходимо загрузить, и нажмите кнопку ОК.
    Luadebugging6-2.PNG
  4. Дождитесь загрузки данных:
    Luadebugging6-3.PNG

Готово. Можно использовать загруженные данные по выбранному инструменту и периоду для оптимизации.

Подготовка к запуску стратегии в отладчике

Установка стратегии с помощью приложения Lua Strategy Debugger

В выпуске Indicore SDK 2.0 (бета-обновление 2) за 26 апреля 2011 г. появилась новая команда: File (Файл) -> Install Custom Strategy (Установить пользовательскую стратегию). Теперь можно сохранить стратегию в любую папку, а затем установить ее в нужное место с помощью этой команды.

Сразу после установки SDK 2.0 никаких стратегий в программе не будет. Перед отладкой нужно будет создать или установить стратегию:

Dbg s install step1.png

В меню File (Файл) отладчика выберите команду Install Custom Strategy (Установить пользовательскую стратегию):

Dbg s install step2.png

Откроется диалоговое окно. Выберите файл Lua со стратегией, для которой нужно выполнить отладку, тестирование или оптимизацию, и нажмите кнопку «ОК»:

Dbg s install step3.png

Готово. Стратегия установлена. Выберите операцию, которую нужно выполнить, и установленную стратегию:

Dbg s install step4.png

Установка стратегии вручную

Как вариант, можно просто скопировать файл в соответствующее место.

Скопируйте стратегию, которую нужно оптимизировать, в следующую папку: C:\Gehtsoft\IndicoreSDK\strategies. Мы будем оптимизировать стандартную стратегию Marketscope под названием MA_Advisor поэтому:

  • Откройте в обозревателе одну из следующих папок: C:\Gehtsoft\IndicoreSDK\strategies\standard или C:\Program Files\Candleworks\FXTS2.Dev\Strategies\Standard\.
  • Найдите файлы: ma_advisor.lua и ma_advisor.lua.rc.
  • Скопируйте оба файла.
  • Откройте в обозревателе следующую папку: C:\Gehtsoft\IndicoreSDK\strategies.
  • Вставьте файлы.

Копирование стратегий Fxcodebase

Для того чтобы произвести тестирование или оптимизацию стратегии с веб-сайта http://fxcodebase.com, выполните указанные ниже действия.

  • Сохраните стратегию в папку C:\Gehtsoft\IndicoreSDK\strategies.
  • Если стратегия требует одного или нескольких пользовательских индикаторов, сохраните их в папку C:\Gehtsoft\IndicoreSDK\indicators.

Запуск отладчика

Теперь запустите приложение Lua Strategy Debugger из группы приложений Indicore SDK в меню «Пуск».

Тестирование стратегии

Для чего нужно тестирование

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

Настройка тестирования

  • В отладчике выберите параметры Tools (Сервис) -> Check Performance/Backtest (Проверка работы/тестирование). Появится список стратегий.
  • Выберите стратегию для тестирования (в нашем случае MA_ADVISOR) и нажмите кнопку OK. Откроется диалоговое окно настройки:
Backtest sbs3.png
  • Прежде всего, укажите параметры симуляции. Наша стратегия работает с одним инструментом, поэтому мы настроим только параметр First Instrument Price Source (Источник цен для первого инструмента). Наведите указатель мыши на поле значения этого параметра и нажмите кнопку с многоточием (...) . Откроется диалоговое окно Choose Price Source (Выберите источник цен) :
    Luadebugging6-1.png
    Нажмите на меню File (Файл) и выберите сохраненный ранее файл с ценами либо выберите Quotes Manager (Менеджер котировок) , чтобы использовать данные, загруженные из менеджера котировок. Нажмите кнопку ОК.
  • Для остальных параметров симуляции оставьте значения по умолчанию. Комбинация параметров по умолчанию соответствует мини-счету UK без хеджирования.
    • Для симуляции счета с хеджированием установите для параметров Are closing orders allowed? (Разрешить закрытие ордеров?) и Is hedging allowed? (Разрешить хеджирование?) значение Yes (Да).
    • Для симуляции счета FIFO (US) установите для параметров Are closing orders allowed? (Разрешить закрытие ордеров?) и Is hedging allowed? (Разрешить хеджирование?) значение No (Нет).
    • Для симуляции микро-счета установите для параметра MMR значение 1, а для параметра Lot Size (Размер лота) значение 100.

Конфигурация параметров стратегии

После настройки параметров симуляции необходимо настроить параметры стратегии. Для этого выполните указанные ниже действия.

  • В диалоговом окне Parameters (Параметры) найдите группу Indicator Parameters(Price) (Параметры индикатора(Цена)) и установите для параметра Timeframe (Интервал) значение H1 (1 час). Стратегии на скользящем среднем хорошо работают в этом интервале.
  • Затем найдите группу Indicator Parameters(Trading Parameters) (Параметры индикатора(параметры торговли)) и установите для параметра Allow trading (Разрешить торговлю) значение Yes (Да). В противном случае стратегия не будет выполнять сделки.
Backtest sbs4.png

Можно ли выполнить тестирование с интервалом 1 минута?

Да. Однако в этом случае необходимо будет настроить внешний вид графика. По умолчанию отображаются цены за 1 час. Для 1-минутной стратегии такой график может быть не очень удобен, поскольку у каждого бара будет слишком много сделок. Чтобы настроить представление графика, в диалоговом окне Parameters (Параметры) найдите группу Chart Parameters (Параметры графика) и установите для параметра Timeframe (Интервал) значение m1 (1 минута).

Запуск тестирования

Чтобы запустить тестирование, настройте все параметры, как указано выше, и нажмите кнопку OK.

Выполнение тестирования

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

Backtest sbs5.png

Если вы выполняете тестирование с интервалом H1 или меньше для целого года, просто нажмите кнопку Empty History (Пустая история). В этом случае программа соберет исторические данные, используя симулированные тики.

Если используется более длительный интервал (дни, недели и т. д.), нажатие кнопки Empty History (Пустая история) может привести к тому, что стратегия начнет торговлю позже даже при наличии достаточных данных. В этом случае используйте данные с сервера менеджера котировок. Выберите в диалоговом окне параметр Quotes Manager (Менеджер котировок) и нажмите кнопку ОК . После этого все необходимые данные будут загружены.

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

Результаты

Для начала просмотрите информацию на вкладке Output (Результаты) отладчика.

  • В ней не должно быть ошибок с момента последнего запуска.
  • В результатах не должно быть отладки стратегии, она может существенно замедлить оптимизацию.
  • Проверьте отчет о выполнении. Для процессора с частотой 3.0 ГГц тестирование должно выполнять не дольше 10 секунд. В противном случае оптимизация займет слишком много времени. Если тестирование занимает больше 10 секунд, необходимо сначала оптимизировать работу стратегии. Свяжитесь с разработчиком стратегии или, если вы разработали ее сами, прочтите следующую статью: Оптимизация стратегии.
Backtest sbs8.png

Общая статистика

Затем проверьте общие показатели стратегии на вкладке Statistics (Статистика).

Backtest sbs9.png

Не слишком впечатляет. За год стратегия принесла 576 долл. США, но убытки за тот же год достигали 2082,60 долл. США (см. максимальное падение баланса).

График

Наконец, загляните на вкладку Chart (График) и посмотрите на кривые капитала и балансов:

Backtest sbs10.png

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

Решение

Как видите, оптимизатор довольно быстро справляется со стратегией и оптимизация действительно необходима.

Оптимизация параметров стратегии

Настройка оптимизатора

  • В отладчике выберите параметры Tools (Сервис) -> Optimize (Оптимизировать). Появится список стратегий.
  • Выберите стратегию для оптимизации (в нашем случае MA_ADVISOR) и нажмите кнопку OK. Откроется окно настройки оптимизации.
  • Настройте параметры симуляции точно так же, как для тестирования.
  • Для параметра оптимизации по умолчанию выберите значение Profit Factor (Фактор прибыли).
Backtest sbs11.png

Примечание. Узнать, что такое параметр Method (Метод), можно в разделе Оптимизация параметров стратегии.

Примечание. Если на компьютере запущено важное приложение (например, Trading Station с реальным счетом), укажите для параметра Agents number (Количество агентов) меньшее значение. Это немного замедлит процесс оптимизации, но обеспечит процессорное время для других приложений.

Примечание. Для оптимизации стратегий настоятельно рекомендуются 4-ядерные процессоры (i5, i7).

Конфигурация параметров стратегии

  • Прежде всего, определите, какие параметры нужно оптимизировать. В нашем случае необходимо оптимизировать два параметра – количество периодов для быстрого скользящего среднего и количество периодов для медленного скользящего среднего. Различные источники предполагают, что значение параметра для быстрого скользящего среднего должно быть в диапазоне от 3 до 12, а для медленного скользящего среднего – в диапазоне от 13 до 30. Проверим, какие значения лучше всего подойдут для комбинации EUR/USD в 2010 г.
Обратите внимание: слева от параметров, которые можно оптимизировать, есть значок плюса. Нажмите на этот значок и укажите минимальное и максимальное значение для поиска оптимальных параметров.
Backtest sbs12.png
  • Не забудьте установить для параметра Timeframe (Интервал) значение H1 (1 час) а для параметра Allow Trading (Разрешить торговлю) значение Yes (Да).

Запуск оптимизатора

Оптимизатор может запросить исторические данные точно так же, как для тестирования (#Выполнение тестирования). Нажмите кнопку Empty History (Пустая история) или выберите исторические данные точно так же, как для тестирования.

Время выполнения оптимизации зависит от следующих условий:

  • насколько быстра стратегия;
  • сколько параметров выбрано для оптимизации;
  • насколько широк диапазон значений для оптимизации.

Оптимизация с параметрами, которые мы указали, с одним процессором i7 3 ГГц (8 ядер) займет около 1 минуты.

Чтение результатов оптимизации

Результаты

Результаты отображают внутренние параметры оптимизации и наборы параметров, которые показали наилучший результат.

Backtest sbs13.png

Таблица результатов

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

Backtest sbs14.png

График результатов

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

Чтобы настроить представление графика, нажмите на него правой кнопкой мыши.

Чтобы найти комбинацию параметров в таблице результатов, дважды нажмите на ячейку.

Backtest sbs15.png

Повторное тестирование результатов оптимизации

Тестирование тех же цен с использованием наилучших параметров

Запустите тестирование еще раз, но теперь введите в параметры 3 и 27 (наилучшая комбинация, найденная оптимизатором).

Backtest sbs16.png

Посмотрим результат на кривой капитала за 2010 г.

Backtest sbs17.png

Намного лучше, не правда ли? Здесь нет падений, и кривая капитала поднимается стабильно.

Внутренняя оптимизация

Наши параметры достаточно хороши для 2010 г., но как они поведут себя в 2011 г., который не использовался для оптимизации? Тестирование параметров в таком диапазоне называется внутренней оптимизацией. Давайте ее выполним и посмотрим результаты тестирования за первые три месяца 2011 г. с теми же параметрами:

Backtest sbs18.png

Итак, параметры по-прежнему достаточно хороши, по крайней мере, для трех месяцев 2011 г. Разумеется, не следует думать, что эти параметры будут актуальны всегда. По нашему опыту, полагаться на оптимизированные ранее результаты следует не дольше ¼ периода, который использовался для оптимизации. Другими словами, если для оптимизации использовались данные за 2010 г., полученные параметры можно будет использовать в течение первого квартала 2011 г., но не дольше.

См. также

Эта Статья На Других Языках

Language: English  • español • français • русский • 中文 • 中文(繁體)‎