Профессор

Ошибки новичков в TSLab

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

Заглядывание в будущее

Некоторые индикаторы в тестах выдают значения “из будущего”. Это значит что в тесте история в будущем нам заранее известна и текущий бар будет рисовать индикатор, основываясь на будущих барах. На самом же деле этот индикатор отрисуется спустя некоторое количество баров после него. Как пример, возьмём индикаторы Fractal и ZigZag.

Иногда новички неверно пишут формулы, где указывают значения бара [i+1]. Это ошибка! Таким образом, в последовательности можно выбирать только предыдущие бары от [i-1] и далее. При этом текущий бар отмечать как [i] не нужно.

Недооценивание проскальзывания

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

Задание проскальзывания

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

К примеру, на Si комиссия 1 руб биржевая + 1 руб брокера = 2 руб. Прибавим двухкратное проскальзывание 2*2=4. Итого 6 руб. Если это пробойный алгоритм, то берем 2+2*4=10 руб. На RTS обычно ставлю 20-40 п.

Не забывайте, также, что с октября 2016 г комиссия на срочном рынке считается в процентах от стоимости контракта. Таким образом, на Si уже можно считать 0,006% на сделку, как минимум.

Вход на первом баре

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

Для этого берем блок Время в минутах (timeи в логические формулы условия входа пишем time>=100000. То есть входим как только закрылся первый бар 100000.

Пробойные алгоритмы

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

Например, мы входим в лонг на пробой цены 65000 п, стоп получили из оптимизации 100 п. В тесте, после пробоя, мы входим по 65000 п, после чего цена делает ретест и ныряет до 64910 п, после чего идет наверх. В реальности же мы получаем цену входа с проскальзыванием 65012 п и стоп стоит 64912 п. Нас выбило, цена ушла без нас.

Поэтому, при расчете стопа желательно брать блок Цена входа (расчетная), либо в блоке открытия позиции указывать максимальное проскальзывание на вход, а к результату оптимизации параметра прибавлять данное проскальзывание, то есть увеличивать стоп на эту величину.

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

Как правильно скачать котировки

Когда вы тестируете алгоритм на котировках, скачанных с Финам или других источников, удостоверьтесь что правильно их скачали и загрузили в программу. Как это сделать написано в FAQ.

При тесте не забывайте о том, что в момент перехода с одного фьючерса на другой, есть гэп в склейке, в Финам это 9 число месяца экспирации. Такие дни нужно вырезать из торговли, иначе результаты будут ошибочными. Сделать это можно блоком “Склейка”. Скачать его можно по ссылке ниже:

[sociallocker]Спасибо![/sociallocker]

Недооценивание комиссии и накладных расходов

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

По поводу накладных расходов. Давайте посчитаем. На текущий момент TSLab стоит около 3000 руб в месяц. Еще вам понадобится надежный VDS сервер, это еще 600-700 руб. Брокеру вы также можете платить 200 руб за обслуживание счета. А еще 13% налог государству. Теперь сложите эти расходы и посчитайте сколько вам нужно зарабатывать чтобы покрыть их. По грубым расчетам, имея счет в 100 000 руб вы просто не сможете вытягивать счет в плюс – всю прибыль, если она будет, скушают накладные расходы.

Рукоблудство

Вмешательство руками в работу алгоритма. Представьте себе ситуацию. Робота “пилит” 2 недели, эквити красная и вот началось резкое направленное движение, на счете рисуется прибыль. Алготрейдер тут же нажимает Выполнить по рынку в Менеджере команд и фиксирует прибыль. После чего цена продолжает идти в том же направлении, алготрейдер начинает сомневаться “а не рано ли я закрылся?”. Может еще переоткрыть сделку как раз перед разворотом сам или это сделает робот и получит убыток. Знакомая история? Не мешайте роботу работать, а если уж пофиксили прибыль, то выключите робота до конца дня и не смотрите на график.

Пере-оптимизация или подгонка

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

Как этого избежать?

Правильное тестирование на истории

Всегда используйте форвард-тестирование. Оставляйте четверть периода оптимизации для проверки робота на данных, которые он не видел. Тестируя на 2012-2015 году, оставляйте 2016 г для тестов. Показатели на форвард тесте также не гарантируют доходность.

Рынок меняется и 2016 г был не похож на предыдущие. Дополнительным методом проверки может быть тест на других инструментах и других тайм-фреймах.

Еще одна ошибка – выбор параметров, которые дают слишком мало сделок. В таком случае результат оптимизации может быть подгонкой под небольшое количество прибыльных сделок. Оценить работу алгоритма, имея всего лишь 30-40 сделок, объективно нельзя. Желательно иметь репрезентативную выборку от 100 сделок.

Чем меньше параметров – тем лучше

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

TSLab позволяет использовать в формулах преобразования класса Math. из .NET Framework. Это позволяет брать модули, корни, логарифмы, округлять числа и так далее. 

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

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

Обучение TSLab

Добавить комментарий