Блог им. hell0men

Ошибки новичков в алготрейдинге

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


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

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

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

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

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

ЗАДАНИЕ ПРОСКАЛЬЗЫВАНИЯ

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

К примеру, на 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 число месяца экспирации. Такие дни нужно вырезать из торговли, иначе результаты будут ошибочными. Сделать это можно блоком «Склейка». Скачать его можно по ссылке. 

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

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

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

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

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

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

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

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


ПРАВИЛЬНОЕ ТЕСТИРОВАНИЕ НА ИСТОРИИ

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

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

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

ЧЕМ МЕНЬШЕ ПАРАМЕТРОВ — ТЕМ ЛУЧШЕ

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

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

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

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

Ошибки новичков в алготрейдинге 
Кстати, в декабре я и Frend организуем вебинар по построению прибыльной системы на акциях без применения оптимизации. Система очень интересная и её можно будет купить для TSLab или торговать руками. Приходите

P.S. Тимофей Мартынов , пару доработок по сайту. В профиле, когда вводишь свой сайт с https:// неверно отображается ссылка. И второе — оглавление в посте содержит лишний атрибут и при переходе по ней открывается новая страничка, надо target="_blank" убрать в ссылке.

★27
9 комментариев
спасибо, учтем

Сделал я как-то систему. На EURUSD — работала как грааль с 2000 до 2013 года (2 года на живом рынке). Продавал я ее трейдерам и неплохо поднял денег. А потмо в 2013м она сломалась. Тогда все трендовые системы сломались. Такие дела, пацаны.

avatar
«Заглядывание в будущее» — хорошая штука для сравнения (и построения новых) индикаторов.
avatar
MS, «хорошая» 
avatar
ELab, без скобок. Можно выяснить какой из индикаторов даёт более точные сигналы в среднем при условии знания будущего.
avatar
«Заглядывание в будущее» очень полезная штука для торговли. Всегда так делаю.
avatar
По-моему, главный смысл тестирования на истории — не принять хорошую идею, а отказаться от изначально плохой.
avatar
Salamandra, тоже верно. Это называется критическим мышлением. Даже вставлю видео в пост на эту тему.
ТС лаб в свое время хорошо помог. скрипты/тесты ускорили понятия «как надо работать»
avatar

теги блога Александр Элс

....все тэги



UPDONW
Новый дизайн