Блог им. AleksandrBaryshnikov
Когда я начинал торговать, в первых сделках не было ни стопов, и тейк-профитов, ни даже индикаторов. Только лента свечей и покупки и продажи по наитию. Я осознанно делал это, понимая, что если будет минус — то я буду расценивать его как плату за опыт и навыки. Но, поскольку жадность присуща всем людям, торговал я одним контрактом.
После добавились и стопы, и тейк-профиты, и я убедился в том, какое они зло. Стопы гарантируют медленный, постепенный, но неизбежный слив депозита, а профиты серьёзно ограничивают потенциальную прибыль. Много раз испытывал досаду, когда сделка закрылась по условной заявке, а рынок продолжил движение в направлении профита. Когда такое же происходило со стопом вследствие прокола — испытывал ярость и злость. Всё таки, видимо, профессия трейдера вредна для здоровья, поэтому на старость нужно заработать столько, чтобы всю её провести на курортах.
В моменты срабатывания стопов и была подмечена такая вещь, что цена совершает резкий бросок в сторону стопа, возвращаясь на профитный тренд. Но стоп уже сработал и ты на обочине этого праздника жизни. А поскольку стоп сработал «по рынку», то за счёт проскальзывания потерялось больше.
Вследствие длительных наблюдений за такими процессами (как в ручной торговле, когда условные заявки ставил сам, так и в полуавтоматической, когда условные заявки выставлялись по одному клику с заранее заданными отступами, так и в полностью автоматической, когда робот входил в сделку и после исполнения лимитного или рыночного ордера выставлял условный стоп-лосс+тейфк-профит), в голову неоднократно приходила идея, что если бы вот все вот эти выбросы, этот шум убрать, то стоп-лоссы срабатывали бы в разы реже, и только действительно тогда, когда цена пошла против тебя.
Использовать для этих целей разного рода средние скользящие мне показалось не особо эффективной практикой. Можно было бы пофантазировать и подумать над разного рода алгоритмами усреднения цены по соседним барам или исключения выбросов, но проблема заключается в том, что для каждого инструмента размер и частота выбросов свои, не говоря уже о том, что они меняются со временем. Конечно, хотелось бы эксплуатировать механизм, который подстраивался бы под эти особенности сам. Тем более, что к тому моменту уже существовало чёткое понимание, что торгуя одним активом, каши не сваришь. В портфеле должно быть хотя бы 20 инструментов, с балансировкой распределения капитала между ними.
Но даже 20-ю инструментами торговать внутри дня — задача для меня нереальная. Отслеживать глазками котировки по 20 инструментам разных классов (как минимум, акции, валюты и фьючерсы) в рекальном времени — так себе затея. Поэтому нужен был робот со встроенным механизмом защиты от рыночных провокаций вроде всяких выборсов (и проколов, как частный случай).
И тут на глаза попался такой тип нейросетей, который называют Автокодировщиками. Плюсом послужило ещё и то, что для данного типа сетей не нужна обучающая выборка — он учится на тех данных, которые ему скармливаешь. Более того, такой нейросети можно скормить данные по разным инструментам, хоть весь рынок — чем больше, тем лучше. Чем больше данных будет на обучении, тем плотнее будет заполнено внутреннее многомерное пространство сети, тем лучше она будет прогнозировать номальное значение цены в том месте, в котором был выброс.
Вот как выбросы/шум устраняются на примере изображений — оригинал:
изображения с выбросами:
изображения, где выбросы были устранены:
При конструировании этой сети я не ставил целью получить большое качество на выходе, поскольку интересовало, как отработает сам принцип. Как видно, нейросеть заменила чёрные квадраты, случайно сгенерированные на оригинальных изображениях, аппроксимированным от соседних участков изображением.
Теперь на очереди реализация этого подхода на ценовых данных, посмотрим на результат.
Вот вам сигналы, например. Даже закодированные в 0 или 1 — как раз тот формат, который так любит кушать нейросеть.
Берём, например, минутные бары за, скажем, последние полгода.
Выбираем размер окна, например, 60 баров — 1 час. Это и есть аналог картинки.
Готовим обучающий датасет: с 1 по 60 бар, потом со 2 по 61-й и так до конца выборки. И все эти семплы подаём на вход сети.
А когда предсказываем — подаём последние 60 баров, включая текущий.
P.S. Нейросеть, результаты работы которой представлены выше, обучалась на 13223 картинок из базы лиц знаменитостей http://vis-www.cs.umass.edu/lfw/#download. И вот эти знания она применила, чтобы убрать артефакты на тех 5 фото, что я «зашумил» чёрными квадратами случайных размеров и со случайным расположением.
На TradingView куча примеров и у Чечета (https://chechet.org/) есть курс по ЦОС в трейдинге.
Заключается в том, что любую покупку стоит совершать при «бычьей» дивергенции, в таком случае стоп вообще не надо ставить. Если дивергенция сразу сработала, то у нас часть позиции уходит практически сразу в плюс (позиция делится), если происходит прокол вниз, так называемый сквиз, то образуется шип, на самом шипе мы покупаем 2-ю часть (как правило на самом конце шипа), дополнительно можно использовать ещё 3-ю часть, но при условии, что цена становится чуть выше 1-й покупки.
Смысл в том, что дивергенция всегда в 100% случаев себя отрабатывает в самом конце тренда, не важно восходящего или нисходящего, но работает лучше в самом конце нисходящего тренда.
Можете закодировать и проверить сами.
Если покупаете где попало, то стоп обязателен!