Блог им. Xaba3abr

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

Предисловие (кто спешит, можно не читать, и переходить сразу к результатам)

Что меня всегда удивляло в теме объемного анализа, и в частности кластерного — несмотря на обилие публикаций, подходов и школ в этой теме, почти нигде нет результатов статистических исследований, или хотя бы ссылок на таковые (отдельные ссылки я встречал разве что у Живаса, но они были эпизодичны). Возникает вопрос: почему так? Складывается такое ощущение, что сама идея залезть внутрь бара и разобраться, сколько там было покупок и продаж, представляется авторам уже достаточным cutting edge и ноу-хау, чтобы еще и всерьез заниматься тестированием своих подходов. Итог достаточно предсказуем: большинство предлагаемых методик являются как бы иллюстративными, «формальным знанием», которое на практике зачастую не работает, а если работает, то неизвестно — когда и на чем?

Чтобы исправить это положение, решено создать советник, который использует объемные данные, предоставленные сервисом Cluster Delta, и, попытается исполнить те или иные паттерны КА на материале форексного золота H4 (XAUUSD spot). Объемы будут браться из склейки фьючерсов CME. Нас интересует не абстрактная «истинность» паттернов, а их торговая применимость, потому тестировать мы будем частную реализацию этих идей в виде конкретной торговой системы, которая, безусловно, может быть и другой, потому в полученных результатах предстоит еще отделить эффективность или неэффективность самого паттерна от реализации ТС. Тем не менее, она послужит отличной базой для дальнейших исследований, это будет что-то вроде тестовой лаборатории. Кроме того, как я заметил, даже мой очень среднесрочный стиль торговли требует частого присутствия у монитора, в противном случае нужные точки входа будут пропущены; либо же для слежения за ними потребуется задействовать много ресурсов внимания и времени. Потому, полученный робот, если он будет удачен, может использоваться как средство полуавтоматической торговли. Наконец, средства визуализации могут стать основой для удобного индикатора в Метатрейдере, чтобы не пришлось дополнять его другими платформами, и позволят отобразить кластеры прямо на свечном графике. 

Когда я начинал эту разработку, я даже приблизительно не представлял, какой объем работы придется проделать. Я рассчитывал управиться за 2-3 недели, но сейчас я смотрю на первые объемные логи и понимаю, что они заканчиваются 24 октября, то есть процесс занял практически 2 месяца, разумеется с учетом того, что работа велась, в среднем, не более 3 часов в день. Количество нюансов, коллизий и «почти неразрешимых» задач, через которые требуется пройти просто для того, чтобы заставить систему получать, транслировать объемные данные и корректно обрабатывать простейшие задачи на кластерах, не поддается никакому описанию и осмыслению. Я впервые почувствовал, что ввязался в работу над «вечным проектом», который просто невозможно закончить. Самые трудозатратные задачи были: заставить сервера CD выдавать данные в нужном виде, заставить кластера из фьючерса корректно отображаться на графике форекса, бесконечные коллизии между ценами фьючерса и форекса и бесконечные логические нюансы обработки кластеров, смены их статуса, взаимодействия друг с другом и с ордерами. Тем не менее, это было сделано. И вот что вышло.

Реализация

Советник состоит из двух главных блоков. В первом обсчитываются объемные свечи и создаются, а затем изменяются кластера. Во втором кластера обрабатываются и торгуются. Сами кластера реализованы в виде объектов отдельного класса Cluster. Советник обрабатывает массив этих объектов, который организован по принципу очереди: каждый новый кластер становится в ней первым и вытесняет последний. Брать данные непосредственно с сервера каждый раз очень долго, поэтому создана система объемной истории, которая организует полученные тики в .csv файл, в котором повторяются три строки: время тика (окончание объемного профиля; его начало всегда совпадает с началом 4-часовой свечи), набор цен, набор соответствующих объемов. Выглядит это следующим образом:

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

Файлы получаются довольно увесистыми: лог за 2017-й год весит 8.5 мегабайт, но, конечно же, скорость вырастает в разы. Данные с сервера берутся на каждый 1000-й тик тестера, в итоге средний разрыв между двумя обновлениями составляет полчаса. Для работы на H4 это конечно не идеал, но даже такой объем данных обрабатывается ужасающе долго. Тест на материале всего года занимает примерно 20 минут. А если несколько изменить настройки обработки кластеров, он растягивает аж до 50! Анализ логов тестирования и поочередное исключение блоков вычислений показывает, что основная масса времени тратится, как ни странно, не на обсчет объемов, а на создание кластеров. Перед созданием нового кластера тестер простаивает иногда по 10 секунд. Поочередное исключение показывает, что это в равной степени вызвано как самой функцией создания объекта, так и перебрасыванием кластеров в массиве указателей. Исключение того и другого снижает время обработки на 40% в каждом случае. Не совсем понимаю, почему такие трудности вызывает обработка объектов, ведь они предельно просты и состоят из пары десятков переменных, конструктора и одного метода. А реализация вместо них, например, двумерного массива будет на порядок менее удобной. Возможно, что-то не так с использованием памяти. Пока не могу понять в чем дело. Соответствующая часть кода выглядит так:

delete clusters[9];       //СТЕК КЛАСТЕРОВ
         for(int t=0; t<9; t++)clusters[9-t]=clusters[8-t];        
         clusters[0]=new Cluster(0, PriceData[i+5], TimeCurrent(), clustersumm);   

Торговая система

Мы воспользуемся моим любимым паттерном в КА, который, если судить по графику, исполняется очень часто: ретест точечного объема в кластере. Что это значит: был поставлен значимый объем, цена от него ушла, затем вернулась на значительно меньшем объеме, и отскочила. Значимым объемом будем считать 15000 контрактов в диапазоне 0.5 доллара в течение 4 часов (это максимальный фильтр для графика после 23 октября, он планомерно растет от начала года, как и объем торгов). Кластером будем считать два таких объема, стоящие рядом, в диапазоне 1 доллар. Уходом цены от кластера в направлении тренда, после которого открывается разрешение открывать сделки, будем считать следующий набор условий: 
1. прошло более 3 свечей от кластера
2. цена ушла на 400 пунктов от кластера
3. хотя бы 3 свечи закрылись на расстоянии 250 пунктов от кластера
4. прошло не более 30 свечей от кластера 

После этого, при возврате цены в область теста кластера (это будет диапазон в 75 пунктов выше и ниже кластера), мы анализируем торгуемый в этом месте объем. Если объем в диапазоне 1.5 доллара будет меньше, чем половина объема самого кластера и его ближайшего окружения (на которое налагается тот же фильтр в 15000 контрактов, иначе оно не учитывается — это надо для дифференциации особо крупных скоплений объема и обработке их на более «мягких» условиях), то мы выставляем отложенный ордер на расстоянии 350 пунктов в сторону тренда от кластера со стопом в 300 пунктов в обратном направлении от кластера. При превышении торгуемым на тесте объемом указанного лимита, ордер удаляется. Итоговый стоп получится 650 пунктов.

Да, я тоже ожидал другого от «самого точного из видов анализа», но в данной реализации короткие стопы не прокатят, и вот почему. Цели, которые нас будут интересовать — это продолжение среднесрочного тренда. Тейка у ордеров не будет, вместо этого работает трейлинг стоп размером 1200 пунктов. Поэтому войти нужно только в таком месте, от которого цена пойдет далеко без откатов, что требует бОльших стопов.

Тренд определяется при помощи MACD с параметрами 34, 16: положительный МАКД означает аптренд, отрицательный даунтренд. На аптренде открываются только покупки, на даунтренде — только продажи. Кроме того, мы будем исходить из логики «интереса игроков» в своем анализе, и поэтому, если кластер пробивается ценой на определенное (500 пунктов и выше для крупных кластеров) расстояние, мы считаем, что позиции не защищают, и исключаем его из торговли.

Ордера будут создаваться на каждой свече, где выполняются условия по тестовым объемам: повторные заявки необходимы, потому что в противном случае просто не получится зайти в позицию на большинстве трендов. Однако, если тест кластера превысил лимиты объема, и через 4 свечи снова превысил их, окно теста закроется и статус кластера, если он не был пробит, обнулится. То же самое случится, если цена снова уйдет на 400п от кластера. В этом случае он может снова торговаться по тренду, только если будут повторно выполнены наши 4 условия. Одновременно может быть открыта только одна позиция: тест с доливками при мин. набранном профите показал ухудшение результатов. Лот фиксированный, 0.1 для депозита в 1000$. Ну что ж, посмотрим на результаты?

Результаты

Первый вариант для базовой конфигурации, описанной выше. Период с 2016.12.01 по 2017.12.01.

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

макд

Баров в истории 2595
Смоделировано тиков 30074453
Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 1000.00
Спред 20
Чистая прибыль 688.05
Общая прибыль 2316.45
Общий убыток -1628.40
Прибыльность 1.42
Матожидание выигрыша 17.20
Абсолютная просадка 58.70
Максимальная просадка 556.94 (24.81%)
Относительная просадка 25.97% (473.78)
Всего сделок 40
Короткие позиции (% выигравших) 19 (31.58%)
Длинные позиции (% выигравших) 21 (28.57%)
Прибыльные сделки (% от всех) 12 (30.00%)
Убыточные сделки (% от всех) 28 (70.00%)
Самая большая
прибыльная сделка 333.51
убыточная сделка -70.01
Средняя
прибыльная сделка 193.04
убыточная сделка -58.16
Максимальное количество
непрерывных выигрышей (прибыль) 2 (576.07)
непрерывных проигрышей (убыток) 6 (-396.36)
Макс.
непрерывная прибыль (число выигрышей) 576.07 (2)
непрерывный убыток (число проигрышей) -396.36 (6)
Средний
непрерывный выигрыш 1
непрерывный проигрыш 3

Рост достаточно неуверенный, перемежаемый длинными сериями убытков (почти на всех тестах это одни и те же два периода: флет середины августа и период высоконасыщенного сжатия волатильности в октябре, и особенно ноябре). Посмотрим на сделки. Вот примеры удачных заходов по тренду. Кластера отображаются желтыми кружками; размер кружка зависит от величины кластера. Красные стрелки означают, что кластер был пробит в ту или другую сторону. Зеленые — кластер исполнил все наши условия и его можно торговать:

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

А вот примеры плохих сделок в августе. Ровный разворот без отскоков вызвал последовательное срабатывание нескольких кластеров в бай, получены стопы. В дальнейшем советник так и не смог встать по тренду (обращаю внимание, что указанные выше торговая логика исполняется везде на 100%):

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

Радует, что система умеет отсекать потери на многих убыточных сделках. Вот например закрылись из-за первышения лимита ретеста баи после разворота (превышение объема на тесте отображается белой точкой). А затем точно так же селлы, у которых потом все равно бы сбило стопы:

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

Тем не менее, такую торговлю конечно нельзя назвать качественной. Если анализировать сделки, становится понятно, что вставать по четко выраженному тренду чаще всего не удавалось потому, что все кластера, от которых это можно было бы сделать, считались пробитыми (даже несмотря на то, что лимит пробоя был отодвинут до 500п, хотя изначально составлял 250). Попробуем отказаться от логики «защиты позиций» и предположим, что цена возвращается на место большого объема по каким-то другим, неизвестным причинам, которые, в свою очередь, могли определить и появление этого объема. Полностью выключаем систему контроля пробития кластеров. Годовой тест вырастает до умопомрачительных 50 минут, но это стоит того, давайте посмотрим:

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере
макд без сломов

Баров в истории 2595
Смоделировано тиков 30074453
Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 1000.00
Спред 20
Чистая прибыль 913.82
Общая прибыль 2617.87
Общий убыток -1704.05
Прибыльность 1.54
Матожидание выигрыша 19.44
Абсолютная просадка 94.02
Максимальная просадка 673.62 (32.28%)
Относительная просадка 32.28% (673.62)
Всего сделок 47
Короткие позиции (% выигравших) 21 (38.10%)
Длинные позиции (% выигравших) 26 (34.62%)
Прибыльные сделки (% от всех) 17 (36.17%)
Убыточные сделки (% от всех) 30 (63.83%)
Самая большая
прибыльная сделка 333.51
убыточная сделка -70.92
Средняя
прибыльная сделка 153.99
убыточная сделка -56.80
Максимальное количество
непрерывных выигрышей (прибыль) 4 (240.67)
непрерывных проигрышей (убыток) 7 (-449.91)
Макс.
непрерывная прибыль (число выигрышей) 586.91 (3)
непрерывный убыток (число проигрышей) -449.91 (7)
Средний
непрерывный выигрыш 1
непрерывный проигрыш 2

Винрейт вырос с 30 до 36%, при том что количество сделок несколько увеличилось (40 и 47). Показатели просадки тоже возросли, но бОльший коэффициент прибыльности увеличил чистую прибыль, а главное — несколько сгладилась кривая баланса и меньшее влияние оказали на счет убыточные периоды. Теперь система берет больше трендов, но в убыточные периода остается много стопов: цена отскакивает от кластера ровно на то расстояние, чтобы исполнить отложенники, и возвращается, чтобы его пробить:

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

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

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере
макд без сломов отскок 75

Баров в истории 2595
Смоделировано тиков 30074453
Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 1000.00
Спред 20
Чистая прибыль 1306.49
Общая прибыль 3109.68
Общий убыток -1803.19
Прибыльность 1.72
Матожидание выигрыша 15.93
Абсолютная просадка 93.34
Максимальная просадка 515.56 (22.23%)
Относительная просадка 22.23% (515.56)
Всего сделок 82
Короткие позиции (% выигравших) 31 (29.03%)
Длинные позиции (% выигравших) 51 (19.61%)
Прибыльные сделки (% от всех) 19 (23.17%)
Убыточные сделки (% от всех) 63 (76.83%)
Самая большая
прибыльная сделка 361.00
убыточная сделка -43.42
Средняя
прибыльная сделка 163.67
убыточная сделка -28.62
Максимальное количество
непрерывных выигрышей (прибыль) 2 (175.85)
непрерывных проигрышей (убыток) 10 (-282.75)
Макс.
непрерывная прибыль (число выигрышей) 361.00 (1)
непрерывный убыток (число проигрышей) -334.25 (9)
Средний
непрерывный выигрыш 1
непрерывный проигрыш 4

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

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

Такая эквити выглядит уже почти прилично. Это 130 годовых при «символическом» определении тренда, отсутствии каких-либо фильтров на флет, минимальной подгонке под график и отсутствии оптимизации рисков (лотик то подкрутить можно :D). Теперь остается только посмотреть, что будет, если мы вернем систему пробоя кластеров, и испытаем ее с коротким отскоком:

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

макд сломы отскок 75

Баров в истории 2595
Смоделировано тиков 30074453
Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 1000.00
Спред 20
Чистая прибыль 1363.58
Общая прибыль 2655.67
Общий убыток -1292.09
Прибыльность 2.06
Матожидание выигрыша 22.73
Абсолютная просадка 37.82
Максимальная просадка 584.87 (19.84%)
Относительная просадка 19.84% (584.87)
Всего сделок 60
Короткие позиции (% выигравших) 25 (28.00%)
Длинные позиции (% выигравших) 35 (17.14%)
Прибыльные сделки (% от всех) 13 (21.67%)
Убыточные сделки (% от всех) 47 (78.33%)
Самая большая
прибыльная сделка 361.00
убыточная сделка -42.51
Средняя
прибыльная сделка 204.28
убыточная сделка -27.49
Максимальное количество
непрерывных выигрышей (прибыль) 3 (640.27)
непрерывных проигрышей (убыток) 15 (-424.29)
Макс.
непрерывная прибыль (число выигрышей) 640.27 (3)
непрерывный убыток (число проигрышей) -424.29 (15)
Средний
непрерывный выигрыш 1
непрерывный проигрыш 4

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

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

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

бэкворд макд отскок 75

Баров в истории 1267
Смоделировано тиков 4924852
Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 1000.00
Спред 20
Чистая прибыль 240.08
Общая прибыль 430.41
Общий убыток -190.33
Прибыльность 2.26
Матожидание выигрыша 26.68
Абсолютная просадка 19.24
Максимальная просадка 259.91 (18.14%)
Относительная просадка 18.14% (259.91)
Всего сделок 9
Короткие позиции (% выигравших) 4 (25.00%)
Длинные позиции (% выигравших) 5 (40.00%)
Прибыльные сделки (% от всех) 3 (33.33%)
Убыточные сделки (% от всех) 6 (66.67%)
Самая большая
прибыльная сделка 279.09
убыточная сделка -37.96
Средняя
прибыльная сделка 143.47
убыточная сделка -31.72
Максимальное количество
непрерывных выигрышей (прибыль) 1 (279.09)
непрерывных проигрышей (убыток) 2 (-75.86)
Макс.
непрерывная прибыль (число выигрышей) 279.09 (1)
непрерывный убыток (число проигрышей) -75.86 (2)
Средний
непрерывный выигрыш 1
непрерывный проигрыш 2

Получилось довольно неплохо. Хорошая прибыльность, хотя по 9 сделкам сложно о чем-то судить. Система взяла несколько баев до свечи Трампа, и несколько селлов после. Заявка на селл непосредственно перед выборами была удалена, т.к. цена пробила ее потенциальный стоп:

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

Без сломов сделок будет намного больше, почти весь график ими утыкан:

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере
Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере

бэкворд макд без сломов отскок 75

Баров в истории 1267
Смоделировано тиков 4924852
Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 1000.00
Спред 20
Чистая прибыль 738.80
Общая прибыль 1164.20
Общий убыток -425.40
Прибыльность 2.74
Матожидание выигрыша 41.04
Абсолютная просадка 76.89
Максимальная просадка 464.76 (33.49%)
Относительная просадка 33.49% (464.76)
Всего сделок 18
Короткие позиции (% выигравших) 9 (33.33%)
Длинные позиции (% выигравших) 9 (22.22%)
Прибыльные сделки (% от всех) 5 (27.78%)
Убыточные сделки (% от всех) 13 (72.22%)
Самая большая
прибыльная сделка 531.08
убыточная сделка -41.60
Средняя
прибыльная сделка 232.84
убыточная сделка -32.72
Максимальное количество
непрерывных выигрышей (прибыль) 2 (656.18)
непрерывных проигрышей (убыток) 7 (-256.83)
Макс.
непрерывная прибыль (число выигрышей) 656.18 (2)
непрерывный убыток (число проигрышей) -256.83 (7)
Средний
непрерывный выигрыш 1
непрерывный проигрыш 3

Но, несмотря на это, а также несмотря на снизившийся винрейт, прибыльность возросла, и чистый результат лучше.

Одно маленькое «но»

Все это выглядело бы довольно неплохо, если бы мы были настолько необъективны, чтобы не сравнить все эти кластерные ухищрения со старым-добрым стохастиком. Для определения тренда используем тот же МАКД, входим по классике: при выходе стохастика из зон перекупленности и перепроданности (80 и 20) выставляем отложенники на расстоянии 350п от цены со стопом 300п в другую сторону (итоговый стоп — 650п). Не больше одной сделки за раз, никаких доливок и экспирация неисполненных ордеров через 5 свечей после выставления (это нужно, чтобы заявки на бай не висели, когда уже развился даунтренд, а продать нельзя, т.к. уже есть один ордер). Тест на том же периоде занимает (о ужас!) целую одну минуту :D 

Тестируем паттерны кластерного анализа, ч. 1: ретест точечного объема в кластере
стохастик

Баров в истории 2595
Смоделировано тиков 30074453
Качество моделирования 90.00%
Ошибки рассогласования графиков 0
Начальный депозит 1000.00
Спред 20
Чистая прибыль 2264.55
Общая прибыль 3769.44
Общий убыток -1504.89
Прибыльность 2.50
Матожидание выигрыша 53.92
Абсолютная просадка 102.56
Максимальная просадка 425.05 (11.52%)
Относительная просадка 22.87% (266.12)
Всего сделок 42
Короткие позиции (% выигравших) 18 (50.00%)
Длинные позиции (% выигравших) 24 (37.50%)
Прибыльные сделки (% от всех) 18 (42.86%)
Убыточные сделки (% от всех) 24 (57.14%)
Самая большая
прибыльная сделка 393.62
убыточная сделка -70.01
Средняя
прибыльная сделка 209.41
убыточная сделка -62.70
Максимальное количество
непрерывных выигрышей (прибыль) 2 (449.57)
непрерывных проигрышей (убыток) 4 (-207.77)
Макс.
непрерывная прибыль (число выигрышей) 449.57 (2)
непрерывный убыток (число проигрышей) -207.77 (4)
Средний
непрерывный выигрыш 1
непрерывный проигрыш 2

Результаты говорят сами за себя. Качественно другой винрейт, качественно другая прибыльность при таком количестве сделок (хотя кластерный вариант с макд без сломов и коротким отскоком не так далеко). Но самое главное в другом: этот советник был написан не за 2 месяца, а за 20 минут, и его значимая часть содержит… 20 строк кода. Оптимизации не было вообще, я просто проверил правильность исполнения торговой логики и прогнал его на всем промежутке, больше ничего не меняя.

Какой вывод из всего этого можно сделать? Я искренне убежден, что кластерный анализ — самый современный и эффективный подход к рынку, который, если им овладеть, может дать весомые результаты. Но в пересчете на отдачу от проделанной работы его вообще никак нельзя сравнить со стохастиком :D Не спорю, вполне возможно, все дело в том, что я неправильно его применяю, или использую лишь самые простые подходы — это покажут дальнейшие исследования. Но сначала я еще немного повожусь с няшкой-стохастиком :D 

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

А теперь внимание! Всем, кто каким-то чудом дочитал до этого момента (вы там еще живы??) — презент!

Выкладываю исполняемый файл кластерного советника. Вы сами можете изменить любые параметры и играться с настройками. Если вы премиум клиент Кластер Дельты, вы можете скачать объемные данные на любой инструмент и период времени. Нужный вам фьюч забейте в параметре Instrument (GC 12-17, например) и запустите советника на тест на требуемом промежутке. Он скачает данные и поместит их в файл volhist [дата начала теста].csv. Он будет находиться в папке C:\Program Files\MT4\tester\files. В дальнейшем, если есть хоть один файл, который начинается на «volhist», советник будет брать историю объемов оттуда, не подключаясь к серверу. (Для клиентов CD, учтите: иногда надо удалять в терминале список глобальных переменных во вкладке Сервис, иначе советник не будет подключаться к серверу, так устроена система CD). Список параметров с описанием:


TF=240;//Таймфрейм в минутах. Ни на чем кроме H4 не тестил, хотя везде в проге прописана абстракция над ТФ, но за другие поручиться не могу.
useMACD=true;//Использовать ли МАКД. Если нет, торговля независимо от тренда. Результаты у меня были значительно хуже.
MACDslow=34;
MACDfast=16;//Параметры МАКД. От уменьшения никакого положительного эффекта не увидел, наоборот пропускаются сделки по тренду из-за коротких задергов в другие стороны.

testkoef=0.5; //критическая часть bigvolume для теста -- Сколько должны наторговать на тесте от объема самого кластера и его значимого окружения, чтобы отменить сделку.

UseTrailing = true;//Выключатель трейлинг стопа
MinProfit = 600; //порог включения трейлин стопа
TrailingStop = 1600;// величина трейлинг стопа
TrailingStep = 10; // шаг трейлинг стопа

Параметры трала, все просто.

OpenAdditionalOrders=false;
EnoughProfitToOpen=1200; //можно доливаться, если позиции в мин профите

Параметры доливок к открытой сделке.

gonelimit=400; //цена мин. ушла от кластера -- На сколько цена должна уйти по тренду от кластера.
passedlimit=3; //свечей мин. прошло с кластера -- Сколько должно пройти свечей чтобы можно было торговать кластер.
testrange=75; //область теста — какой диапазон вокруг кластера считается его тестом
singleclsfilter=7000; //фильтр на отдельный кластер 0.5 — с каких объемов выделяем кластер 0.5
before0101=6000; //фильтр на отдельный кластер 0.5 — то же до 01.01.17
before0307=9000; //фильтр на отдельный кластер 0.5 — до 03.07.17
after0307=10000; //фильтр на отдельный кластер 0.5 — после 03.07.17
after0815=13000; //фильтр на отдельный кластер 0.5 — после 15.08.17
after1023=15000; //фильтр на отдельный кластер 0.5 — после 23.10.17
clscreatekoeff=2; //коэфф для создания кластера — сколько минимальных объемов должно быть в диапазоне 1$ для создания кластера

newclusterlimit=200; //когда новый кластер отделяется от предыдущего — иначе считает объемы одним кластером
lastcandlesaway=250; //последние свечи должны закрыться от кластера на расстоянии  — см. условие входа в сделку №3
awaylimit=3; //мин. свечей закрылось над\под кластером — то же, кол-во свечей
tradelimit=75; //неразличение последних двух кластеров при торговле — чтобы не торговать лишние сделки, берем только последний из двух близких кластеров (параметр определит, насколько близких)
cancelbynewcls=75; //разница цен, при которой новый кластер отменяет предыдущий — если новый кластер выше(в даунтренде), то прежний считается сломан

bouncelimit=75; //отскок для сделки — на каком расстоянии от кластера ставятся отложенники
stoploss=300; //над уровнем кластера — стопы в обратном направлении от кластера
cancellevel=500; //уровень отмены кластера (над уровнем кластера) — на сколько цена должна зайти за кластер против тренда, чтобы считать его пробитым (если хотите тестировать без пробитий — поставьте лишние три нуля в конце этого параметра и cancelbynewcls)
retestperiod=4; //мин промежуток для отмены на повторном объемном тесте — время от первого превышения лимита на тесте до такого, которое сбросит кластер
timetotest=4; //окно для теста — то же самое, но сброс будет просто по прошествии времени с первого превышения лимита

tradecandles=30; //торгуем последних свечей — чтобы не зацеплять старые неактуальные кластера
lot=0.1;// лотность

В том же архиве кидаю объемную историю для золота на весь год, на которой все это тестировалось. И кусок, использованный для бэкворд теста. Любую другую могут сделать клиенты CD по инструкции выше.

И, конечно, звезда сегодняшнего вечера — суперсоветник на стохастике из 20 строк, его даю в исходном коде, такую штуку напишет любой :D

На этом все. Если вы видите что-то, что можно было улучшить в торговой логике — подскажите, и, если идея мне понравится, я поэкспериментирую с кодом советника. Или же если у вас есть другие интересные паттерны кластерного и объемного анализа (в т.ч. с дельтой, бигтрейдс, и т.д.) — можете изложить, возьмем на разработку. Только учтите, что для алгоритмизации нужны полностью формализованные паттерны, а не просто «если поперла красная дельта» :D

★16
31 комментарий
круто!
avatar
Делал себе тоже самое. И тоже стохастиком фильтровал. Пару лет назад трейдил.
avatar
Андрей К, и как результат?
avatar
Собака инвестяка, я пришел к тому, что эквити алго должно быть без просадок.
На интуитивных алго (а этот считаю интуитивным) такое сложно добиться из за формализации. Хотя алго прибыльный, я думаю у меня был чуть посерьёзнее. Ряд параметров самоподстраивались и адаптировались. У вас например объем константа, а эта величина сильно гуляет. Зависит от сезона и ряда других моментов. Ну и тд с другими параметрами.
avatar
Андрей К, без просадок я пока только мартинов видел. Ну, то есть до первой-второй просадки :D

А что такое интуитивный алго?

Да, чем меньше параметров, тем лучше. Фильтр тоже хотел саморассчитывающийся сделать, это не сложно, по среднему объему недели например, просто влом уже было :D
avatar
>У вас например объем константа, а эта величина сильно гуляет. Зависит от сезона и ряда других моментов.

Андрей К, а нельзя ли чуть подробнее про сезонность объемов? ;)
avatar
avento, про сезонность я больше сказал, чтобы было понятно для всех. Мол летом все отдыхают, торговля не активная, объемов меньше, к сентябрю-октябрю стратегия оживает.
Ну а если говорить серьезно, объемы в кластере фуча сильно зависят от активности в опцах. У меня автоматический мониторинг отлажен, я всегда вижу куда идут миллионы рублей, там и кластеры будут более насыщены. К примеру четвертый год подряд, перед НГ активность опционов везде падает и резко растет в Си. Кластеры не имеет смысла смотреть в инструментах, сейчас полный голяк, кроме Си. В январе будет еще интересней.
avatar
Андрей К, про опционы любопытно, спасибо!
а как понять в январе интересней? вроде ж самыми низколиквидными считаются как раз начало и середина года, т.е. январь не особо интересен для торговли
avatar
avento, в Си январь будет интересным, если он начнет снижаться (да даже и если расти). Там сейчас сотни миллионов в опционы идут. Это не пройдет бесследно для фьюча! Это уже 4 года подряд так.
avatar
плюсую за исследовательский труд))
когда сделаете робота нормального — купил бы

А эквити в алготорговле не должна быть без просадок.
Просадка — нормальное состояние перед рывком прибыли. Главное — правильное ее допущение и следствием чего она является.
avatar
Йоганн, спасеба, хочется увидеть конечно такую систему, которую «хрен потопишь», если такая будет на большой истории, может и продамсо.
avatar
Блестяще! Ради таких постов я и читаю Smart Lab.
avatar
aMCa, да фиг ли, пока все ноют, что смартлабик здох, а сами обсуждают какой-то вечный оффтоп, надо просто брать и писать, и все норм будет :)))
avatar
1 мало сделок = недостоверная статистика… надо хотяб 1000 сделок… и тогда стохастик отвалится
2 тесты сделаны на 1ой бумаге… не факт что будет работать в других
3 в валютах бывают длинные тренды по несколько лет… поэтому надо тестить лет за 10, либо за год 10 разных бумаг…
4 в очередной раз убедился что объем это та же цена… только шумов больше…
avatar
ves2010, ага, сделок мало очень. Но тут трудности с получением данных. Если буду развивать, сделаю конечно на большом промежутке.

А инструмент очень неспроста выбран. Драги один из наиболее трендовых инструментов. Сюда же можно йену приписать. Вот только анализировать валюты по объемам с Чикаго — для меня пока вопрос спорный.

Я пока все же верю в объем, уж больно он сложный и красивый, просто подход к нему нужен :))
avatar
— последите за инструментами во время клиринга СМЕ
— лучше агрегировать объемы самостоятельно, CD убивает большую часть информации
— H4 — специфический, зависим от часовых поясов
— длительность теста без подстройки под рынок — не менее ~1000 сделок / не менее 10 лет, с подстройкой — не менее ~100 периодов
— чем меньше ТФ, тем больше инструментозависимость, но выше возможности
— однако, реальны инструментоНЕзависимые, для ликвидных
— есть стратегии без существенных просадок (не мартингейл, не арбитраж)
— тренированный мозг умеет предвидеть некоторые движения по графику без объемов, полезно учитывать
— вид кривой эквити, даже не зарабатывающей, тоже бывает информативен
И, главное: на первых порах очень полезно считать, что все, опубликованные в литературе методы заработка — заведомая дезинформация.
avatar
старый трейдер, да, все дельные советы, спасибо.

«есть стратегии без существенных просадок (не мартингейл, не арбитраж)»

А на чем основаны такие системы?
avatar
Собака инвестяка, глубокий анализ объемов и цен, гибкая подстройка под инструмент.
avatar
ves2010, 
 тесты сделаны на 1ой бумаге… не факт что будет работать в других
этот алго работает на любом фуче (Собака инвестяка тут рассматривает фуч золота ) где есть объемы, а объемы есть где ликвидны опцы. Только входной параметр объема нужно подстраивать под каждый инструмент.
avatar
торговал ретесты и отбои  кластерных обьемов по вофиксу
это их классическая форма обучения и торговли
и ни хрена
топтание около нуля
перешел самостоятельно на пробои( хотя они это не рекомендуют) формируется  кл/обьем в хвосте затем пробивается
дневной low или hing где открывается позиция
и поперло, правда не сразу, были нюансы
михаил абанов, то есть пробой предыдущего экстремума после накопления объема на нем? А в какую сторону, по тренду или против?

Идея пробоя очень интересная, глядя на разметку графика кластерами в реальном времени (ускоренно, на истории), отметил, что золоту часто свойственна персистентность: если пошло хорошее движение, оно скорее продолжится и пройдет кластер, чем отскочит.
avatar
Собака инвестяка, в хвосте т.е. между открытием и hing формируется кластер( хвост продаж) позицию открываем
на пробое low
покупка наоборот
это все на дневном или недельном таймфрейме
сигнал очень надежен когда понижающаяся или повышающаяся
тенденция сформировалась
михаил абанов, вот да, у меня тоже были мысли реализовать паттерн по схеме «большой объем — реакция от объема — вход».

А на каких инструментах использовали этот паттерн?
avatar
Собака инвестяка, акции с дневным оборотом больше 200млн.руб.
>Не совсем понимаю, почему такие трудности вызывает обработка объектов, ведь они предельно просты и состоят из пары десятков переменных, конструктора и одного метода.

Собака инвестяка, возможно вот здесь вы найдете для себя некоторые ответы.
avatar
avento, да, спасибо, все как я и думал: нормальную работу с объектами MQL не поддерживает. 
avatar
Только я не понял вашу идею. Я всегда трактовал этот сигнал для взятия на отскок. То есть: Цена падает, в нижней точке большой объем, затем цена отскакивает (прыжок дохлой кошки), потом возвращается к нижней точке и вот отсюда можно покупать с коротким стопом.
А вы ждете отскок и потом опять продаете?
avatar
aMCa, нет, почему, в описанной вами ситуации как раз покупаю. Но только если это аптренд. Развороты тренда ловить таким образом я бы точно не стал. Только продолжение.
avatar
Собака инвестяка, блин, печалька... 
… это ваше маленькое но фактически обнуляет ценность проведенного исследования… чтобы разобраться, надо либо систему менять, либо инструмент....
PS: либо слать нахрен эти дельты с кластерами и срочно бежать колбасить стохастиком, пока прет.
Бабёр-Енот, нет, почему, мне так не кажется. Просто здесь использован самый элементарный вариант анализа кластеров. Ручные подходы объемного анализа намного сложнее и, полагаю, эффективнее. Вопрос лишь в том, где проще заработать денег :)) Советником, во всяком случае.
avatar
Привет! ) Серьёзный пост Коллега!
Но не там ищете… И не в объёме дело… Технология бидаска, верна на предмет поиска… Эта тема уже тщательна исследована. Большая тайна там Живёт. Вы на верном пути. Более не скажем.
С уважением трейдеры, Tomiris Tengri, Malika Tengri & Kunkei Tengri.
avatar

теги блога Xaba3abr

....все тэги



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