Alexey Krechetov
15
All posts from Alexey Krechetov
Alexey Krechetov in krechetov,

Делаем торгового робота своими руками.ч.5 (Учимся правильно тестировать систему)

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

        Сегодня рассмотрим как правильно тестировать стратегию, чтобы её результаты совпадали с результатами торговли роботом в Транзаке. В качестве примера настроек буду использовать тот же амиброкер.  

       Сначала убеждаемся, что у нас включено окно «графики». Включается оно в верхнем меню в пункте «вид».

       Затем кликаем на окне на правую кнопку мыши, лучше в папке «systems» правой кнопкой мыши и выбираем пункты «новый» и «формула» как показано на скриншоте.

картинка:


      Называем свою новую систему в данном случае это будет система нашего робота BOT.

      На появившееся в окне название системы кликаем правой кнопкой и нажимаем «правка».

     И попадаем в окно где мы собственно пишем нашу систему.

     Язык AFL амиброкера это отдельная тема для разговора. В данном случае лишь приведу код нашего бота на АФЛ вот он:


     Теперь нужно протестировать нашего робота на исторических данных. Для примера мной были взяты данные с сайта финама. Представляющие собой график сбербанка до 24 сентября 2010 года.

     Жмём правой кнопкой на созданную нами систему BOT и выбираем пункт «Анализ».  Итак, начинается самое важное. Главное чего нужно добиться нам это совпадения результатов системы которую мы тестируем в амиброкере с  теми результатами, которые показал бы робот при торговле на реальном счёте.

     Первое что настраиваем это комиссии: Для этого в окне анализатора жмём «настройка». Внизу выбираем пункт определить как на рисунке. Я при тестах забиваю комиссию финама в размере 0,05% и 50 рублей минимальный размер комиссии, чуть увеличенная комиссия будет сглаживать вероятно возникающие иногда проскальзывания.

Картинка:


    Далее в окне «настройки» выбираем пункт сделки. Это один из самых важных моментов. Для совпадения результатов нужно правильно настроить цену по которой будет совершаться сделка в тестере. В данном случае единица и пункт «open» означают, что сделки будут считать по ценам открытия свечи следующей за пересечением скользящей средней. Как помните именно такое условие мы задавали для нашего робота при программировании его на ATF.

Картинка:


    В пункте настроек общие задаём начальный депозит пусть в данном случае он будет 100 тыс.  В пункте «Позиции» выбираем какого вида сделки будет совершать система. В данном случае это будут сделки Лонг и Шорт.  Так же выбираем таймфрейм в данном случае я выбрал «1 час», что означает что тестить робота мы будем на часовике.  Также устанавливаем уровень маржи, в данном случае выбран уровень 100 что означает что сделки будут проводиться без плечей.

Картинка:


      Жмём ок.  После чего в главном окне тестера выбираем Диапазон за который будет проведено тестирование в данном случае я выбрал последние 365 дней. Т.е. мы получим годовую доходность до 24 сентября 2010 года. Так же выбираем текущий символ для тестирования, здесь подразумевается, что у нас в качестве текущего графика выведен в данный момент тот самый скачанный нами график сбербанка.  

Картинка:


После того как система провела тест жмём на кнопку «отчёт» в окне анализатора. И получаем подробный отчёт о сделках:

  Картинки:



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

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

Картинка:


    Итак, мы видим, что если бы мы подключили к счёту нашего робота BOT год назад. То за год он принёс бы нам 91,62% годовых. Совершив 61 сделку,  23 из которых было бы прибыльными. Максимальная просадка системы составила бы 19,87%.  

    Что главное нужно усвоить при тестировании:

1.          1.     Очень важно чтобы совпадали цены совершения сделок. Они должны совпадать в вашей системе для тестирования и Роботе. Так же столкнулся в обсуждениях, что многие начинающие строители систем изобретают «грааль» пытаясь ставить при тестах цену открытия нулевой свечи. Т.е. свечи непосредственно события. Учтите что это заглядывание в будущее и так не делайте J Ведь в реальности системе становится известно о наступлении условия только после клоза нулевой свечи (свечи события). Рекомендую ставить в качестве цены сделки цену открытия  на 1-й свече после условия. Это гарантирует вам совпадение цен сделок, а значит и  результатов тестирования с результатами работы робота

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

3.         3.       Это уже относится к торговле роботом. Не забывайте что вы провели тестирование на определённом таймфрейме. Не включайте робота в Транзаке на таймфрейме на котором вы его не тестировали.

Ссылки на предыдущие посты данной линии:

Делаем торгового робота своими руками ч.1
Делаем торгового робота своими руками ч.2
Делаем торгового робота своими руками ч.3
Делаем торгового робота своими руками ч.4

Добавлено 5 октября 2010, 16:03

Результаты за 2008 год бота. Он таки даже год в плюс завершил. :)



А это кривая доходности за последние 365 дней. и то и другое часовик