Алгоритмический трейдинг: формализаций определения горизонтальных уровней?
Добрый день коллеги.
Занимаюсь алгоритмическим трейдингом не первый день, но возникла проблема в самомо простом наверное и логичном (как многим может показаться) месте.
Как определить горизонтальный уровень в алгоритмической системе?
не задавать его вручную, а именно формализованно его определять и перемещать в зависимости от ситуации.
Хотелось бы услушать конструктивные мнения по данному поводу)
чтобы формализовать надо описать, что это горизонтальный уровень и почему он должен быть именно здесь, а потом уже по этому «ТЗ» составлять программный код. Но вот описание кроме Вас никто не сделает, по тому что никто не знает Вашего представления о горизонтальных уровнях
Перемещать уровень в зависимости от ситуации? Или он должен сам автоматически перемещаться в зависимости от ситуации? Я правильно понимаю, что программа сама должна находить уровни? Можно через процедуру расчёта кластеров по точкам закрытия (открытия/макс/мин) на заданном отрезке графика.
Во-первых нужно решить на каком количестве баров ищём консолидацию.
В принципе можно задать и диапазон баров, но это уже чуть сложнее.
1. Считаем среднюю цену каждого бара (open+close)/2.
2. Вычисляем среднюю для всех средних баров из п.1.
Таким образом мы получаем ориентир.
3. Идём по барам и смотрим на сколько отклонились их цены открытия и закрытия от средней из п.2.
4. Если все отклонения не выходят за заданный нами диапазон, то мы обнаружили зону консолидации.
Для начала пойдёт.
То же самое можно сделать и просто для цен закрытия и открытия, чтобы не попадать на формации типа ромба.
скользящим окном длиной N, определяете ошибку равную сумме квадратов разности между текущим значением в этом окне и началом интервала. Минимум этого функционала, и есть Ваш самый горизонтальный уровень.
Машковский Евгений, Для каждого вновь пришедшего бара смотрим окно назад на N баров., где в рамках окна для каждого бара считаем количество баров в разные стороны (до границ окна) для которых цена меньше текущего бара (при проходе по всем в рамках окна). Ранжираем. Далее выбираем этот максимум по рангу. Таким алгоритмом отсекаем края окна и именно ищем локальные экстремумы. Далее это значение(цена уровня) с датой последнего бара пишем в БД. Так же не сложно сюда добавляется влияние объема, не все локальные, даже ярко выраженные экстремумы важны. Так копим единую таблицу уровней, в которой с приходом каждого нового бара ранги пересчитываются. На Oracle + SQL(PL/SQL) это делается элементарно, быстро, просто и понятно., и есть возможность махом просчитывать все эти уровни для многих инструментов (только сервак пошустрее).
AlexGru, была мысль определять важность уровня следующим образом: храним все уровни за определенный промежуток времени например месяц, два, три и т.п. Затем смотрим сколько раз цена воспринимала этот уровень как сильный, т.е. начиналась консолидация (или сколько раз мы автоматически определяли данный уровень как уровень (плюc/минус погрешность). А дальше рейтинг 1- слабый локальный, 2-4 — средней важности уровень, 5-и т.д. очень важный уровень. (для примера: у нас за квартал система 7 раз определила уровень 140 000 следовательно уровень нифигово важный и ключевой и если перед ним есть уровень 139500 определенный 1 раз, то смотрим на 140 000 ).
Машковский Евгений, думаю, что важность уровня можно определить по объёмам, которые прошли внутри него.
Ну и по его длине.
Чем длиннее консолидация, тем больше(резче) будет движение.
Иван Правдин, Тогда скорее не внутри него а на границах уровня, например свечи которые прокалывали уровень или касались его. Какой там был объем в сравнении со средним объемом за n число баров назад
Что такое «по шкале цена».
Моя твоя не понимайт.
Не я один задался вопросом, что Вы имели в виду. Вы никому реально не ответили.
Возможно, проблема не в алгоритмизации понятия, а в его неопределенности для Вас. Типа, сами не знаете, что хотите.
⛔️ TikTok стал недоступен в США
Американцы не могут зайти в приложение, оно также исчезло из App Store, передает корреспондент РИА Новости.
Местных пользователей вместо ленты с короткими видео вст...
Виктор, Не слабо так лажанулись! Должны были выплатить 29.12.2024, а выплатили 14.01.2025! Подавляющее большинство эмитентов выплачивают день в день. При необходимости перечисляют деньги в НРД забл...
Владимир Иванов, выпуск Р11, у которого оферта 14.02.2025, никто выкупить и не предлагал, как и остальные выпуски, у которых оферта была недавно или будет вот-вот. Предложение касается лишь выпуско...
Олег Северный, когда все говорят, что коррекция неминуема, обычно происходит такой вынос вверх, что все забывают, что такое коррекция
Эти 138 уже сто раз топтали, нет смысла тут в сто раз первый ...
ИМ, Евроклир давал месяц на то чтобы инвесторы приняли решения о продаже, однако многие наши брокеры заблокировали операции на 3 день. Так поступил ВТБ.
Свежие облигации Евраз 003Р-02. Купоны 22,3% от Абрамовича Вслед за «Магнитом» решил воспользоваться оптимизмом на рынках металлургический гигант ЕВРАЗ. Заявки на новый классический выпуск собрали 17 ...
Инвестиции в курортную недвижимость от 2 млн ₽. Детальный обзор для инвесторов. В этой статье Вы узнаете:
Цены на недвижимость в Сочи;
Какую недвижимость покупать не стоит;
Что выбрать ...
Николай Иванов,
Ну где там Павел, слойкин и им подобные, которые кричали, что в России только умеют блокировать свободу слова, потому, что проиграли конкуренцию. А в честной борьбе победить н...
Почему-то обсуждается в основном 9 выпуск, хотя например, если на 17.01.25 сравнить 8 и 9 выпуски, то у 8 доходность 90,2%, а у 9 доходность 86,2% и погашение 8 выпуска будет на 247 дней раньше чем у ...
Дмитрий Первый, ну вот видишь хомяк просто предположил/пошутил, лучше в таких случаях хотя бы смайлик вставить в конце
полистал я зато сейчас твой блог, ты оказывается такой херней (стоянием ...
если
low[5 бара] < low[от 10 до 6 бара]
low[5 бара] < low[от 4 до 0 бара]
то через low[5] рисуем горизонтальную линию
Автор же, как я понял, имеет в виду зону некоторой консолидации.
«Как определить горизонтальный уровень в алгоритмической системе?»
В принципе можно задать и диапазон баров, но это уже чуть сложнее.
1. Считаем среднюю цену каждого бара (open+close)/2.
2. Вычисляем среднюю для всех средних баров из п.1.
Таким образом мы получаем ориентир.
3. Идём по барам и смотрим на сколько отклонились их цены открытия и закрытия от средней из п.2.
4. Если все отклонения не выходят за заданный нами диапазон, то мы обнаружили зону консолидации.
Для начала пойдёт.
То же самое можно сделать и просто для цен закрытия и открытия, чтобы не попадать на формации типа ромба.
Ну и по его длине.
Чем длиннее консолидация, тем больше(резче) будет движение.
Если ранжировать уровни, то одно, а если сравнивать уровень с недавней историей, то другое.
Моя твоя не понимайт.
Не я один задался вопросом, что Вы имели в виду. Вы никому реально не ответили.
Возможно, проблема не в алгоритмизации понятия, а в его неопределенности для Вас. Типа, сами не знаете, что хотите.