Алгоритмический трейдинг: формализаций определения горизонтальных уровней?
Добрый день коллеги.
Занимаюсь алгоритмическим трейдингом не первый день, но возникла проблема в самомо простом наверное и логичном (как многим может показаться) месте.
Как определить горизонтальный уровень в алгоритмической системе?
не задавать его вручную, а именно формализованно его определять и перемещать в зависимости от ситуации.
Хотелось бы услушать конструктивные мнения по данному поводу)
чтобы формализовать надо описать, что это горизонтальный уровень и почему он должен быть именно здесь, а потом уже по этому «ТЗ» составлять программный код. Но вот описание кроме Вас никто не сделает, по тому что никто не знает Вашего представления о горизонтальных уровнях
Перемещать уровень в зависимости от ситуации? Или он должен сам автоматически перемещаться в зависимости от ситуации? Я правильно понимаю, что программа сама должна находить уровни? Можно через процедуру расчёта кластеров по точкам закрытия (открытия/макс/мин) на заданном отрезке графика.
Во-первых нужно решить на каком количестве баров ищём консолидацию.
В принципе можно задать и диапазон баров, но это уже чуть сложнее.
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 число баров назад
Что такое «по шкале цена».
Моя твоя не понимайт.
Не я один задался вопросом, что Вы имели в виду. Вы никому реально не ответили.
Возможно, проблема не в алгоритмизации понятия, а в его неопределенности для Вас. Типа, сами не знаете, что хотите.
XAU/USD: золото проигрывает схватку за геополитическую премию
Золото продолжило активно снижаться после достижения локального пика, несмотря на напряженность и рост рисков в мире. Первоначальный скачок в район уровня 5410 был спровоцирован военными...
Компания Россети Урал опубликовала финансовый отчет за 2025г. по МСФО. Отчет МСФО и РСБУ у сетевых компаний очень похожи, а так как я отчет РСБУ (отчет об исполнении инвестпрограммы —...
Друзья, привет!
🔥 Пока вы продолжаете следить за ценами на сырье и валютой — наш кредитный рейтинг возвращается к исходному стабильному прогнозу.
⚡️Рейтинговое агентство НКР изменило...
ВК: жива ли тут идея, которая была у нас в мае 2025?
ВК отчиталась за 2025 год. Отчет Пресс-релиз Презентация Выручка суммарная выросла всего на +8%г/г. Если брать 4 квартал, то выручка выросла всего на +5%г/г....
Серебро—а вот тут интересно!!! Гораздо интереснее, чем где бы то ни было,
Я один вижу зону 46,30. 47,80. Без коррекций ?
Или. еще умники имеюцца ?
Резоны? (Ну мне кажется тут ну самая простая...
ЪЪ, лаконичнее значит кратко, кратко там не получится, там нет переизбытка прилагательных и обрисовки обстоятельств, там пересказ картины, и при пересказе картины нет возможности что либо урезать, ...
genubat, да не согласен я про декорации — идеология там разная абсолютно — 50 полов, тотальное насаждение лгипрт, смена пола 6-ти летним детям и пр. и пр. в битву за бюджеты совсем не укладываются....
если
low[5 бара] < low[от 10 до 6 бара]
low[5 бара] < low[от 4 до 0 бара]
то через low[5] рисуем горизонтальную линию
Автор же, как я понял, имеет в виду зону некоторой консолидации.
«Как определить горизонтальный уровень в алгоритмической системе?»
В принципе можно задать и диапазон баров, но это уже чуть сложнее.
1. Считаем среднюю цену каждого бара (open+close)/2.
2. Вычисляем среднюю для всех средних баров из п.1.
Таким образом мы получаем ориентир.
3. Идём по барам и смотрим на сколько отклонились их цены открытия и закрытия от средней из п.2.
4. Если все отклонения не выходят за заданный нами диапазон, то мы обнаружили зону консолидации.
Для начала пойдёт.
То же самое можно сделать и просто для цен закрытия и открытия, чтобы не попадать на формации типа ромба.
Ну и по его длине.
Чем длиннее консолидация, тем больше(резче) будет движение.
Если ранжировать уровни, то одно, а если сравнивать уровень с недавней историей, то другое.
Моя твоя не понимайт.
Не я один задался вопросом, что Вы имели в виду. Вы никому реально не ответили.
Возможно, проблема не в алгоритмизации понятия, а в его неопределенности для Вас. Типа, сами не знаете, что хотите.