Тестировать будем рынок фьючерсов так как он наиболее пригоден для спекуляций, имеет торговое плечо и небольшой размер комиссий.
Размер комиссий при спекуляциях очень важен, так как чем меньше комиссия, тем меньший тайм фрейм возможно использовать в торговой стратегии и больше прибыль.
Мы будем тестировать рынок крипто валюты и для этого выбираем биржу с максимальным объёмом торгов — Binance. Binance (Futures) предлагает для торговли на сегодняшний день 268 торговых пар, дневной объем торгов Binance (Futures) более 20 миллиардов долларов, по данным CoinGecko.
Из них 160 фьючерсов к USDT. Именно их будем тестировать.
Методика и цель оптимизации
Цель настроить процесс оптимизации на поиск оптимальных параметров для торговли на следующие 7 дней. Почему 7? Потому что неделя это удобно и достаточно для статистической реализации выбранных моделей и тайм фреймов.
Оптимизация проводится простым перебором входных параметров. Период оптимизации должен быть больше периода торговли с выбранными параметрами и больше периода форвард теста. Введём период оптимизации как параметр оптимизации от 2 до 7 недель так как изначально не известно какой период необходим и достаточен.
Все трейдеры торгуют мат ожидание (игра с преимуществом), и задача трейдера построить торговую систему, где мат ожидание будет всегда на его стороне. Не каждая сделает будет в плюс, но если мат ожидание выстроено честно, экстраполирует в будущее и трейдер себя не обманывает, (не надеется на авось), то на дистанции он всегда заберет деньги с рынка. Всегда.
В алгоритмическом трейдинге при создании автоматических торговых систем очень важен вопрос времени жизни торговых алгоритмов, т.е. способность найденного мат ожидания экстраполировать в будущее.
В условиях постоянно меняющегося рынка рано или поздно наступает момент, когда даже самый совершенный и прибыльный алгоритм начинает приносить убытки, поэтому мы сами определим время жизни алгоритма в одну неделю и будем создавать систему, которая будет давать положительный результат с еженедельной оптимизацией. Оптимизировать будем полным перебором всех параметров так как неизвестно сколько будет оптимизационных экстремумов, да и тестировать будем не отдельный инструмент или тайм фрейм, а все рабочие тайм фреймы и все торговые инструменты. Задача не из лёгких, но вполне выполнимая.
У одного человека был очень ленивый сын. Ничего он не хотел делать, ни одного пятака заработать не мог. Кормил его отец, пока мог, только состарился он, захворал и невмоготу ему стало. Слег старик в постель, позвал жену и говорит: — Все свое имущество передам кому чужому, ничего сыну не оставлю — лентяй он, ни к чему не годный, рубля заработать не может. Обидно матери, заступилась она за сына:
— Как это он рубля заработать не может?! А муж стоит на своем:
— А ну, если может, пусть пойдет заработает рубль — все имущество ему оставлю.
— Хорошо, — сказала жена.
Пошла она к сыну, дала ему рубль и научила:
— Уйди куда-нибудь до вечера, а вечером придешь, отдашь этот рубль отцу и скажешь, что ты сам его заработал.
Так и поступил сын. Пришел вечером, принес этот рубль и говорит отцу:
— Совсем извелся из-за этого рубля, с трудом его заработал. Взял отец рубль, понюхал и бросил его в камин.
— Это не ты заработал! — сказал он сыну.
Засмеялся сын и ушел. Что делать матери? Дала она ему еще один рубль и сказала:
— Пойди, хоть целый день без дела ходи, а к вечеру пробеги версты две — чтоб вспотеть, войди к отцу и скажи:
— Потом заработал я этот рубль.
Почему-то не которые полагают, что можно создать прибыльно торгующего робота тестируя его на истории и оптимизируя результаты. Конечно можно, но робот будет прибыльно работать только на истории.
10 лет назад когда уже я довольно неплохо программировал, и познакомился с рынком, я именно так и думал, но все изменилось…
Прибыльно торгующего робота можно создать копирую работу реально прибыльно торгующего трейдера, при этот процесс не быстрый, требует кропотливости и терпения.
Все решения, простые и начинать надо с простого: я торгую прибыльно, но в моей работе есть ряд однообразных, нудных операций, которые я бы хотел автоматизировать.
Каждый раз когда я вхожу в сделку, я ставлю стоп за фрактал – исполнили;
Каждый раз когда, я торгую внутри дня, и инструмент сделал свое среднедневное движение, мне там делать нечего – исполнили;
Каждый день перед внутридневной торговлей я должен рассчитать какая сегодня ожидается, среднедневная волатильность – сделано, теперь считает автоматически;