Алгоритм — Как определить прямоугольную ценовую перегрузку на фондовом рынке? (C ++)

В области технического анализа фондового рынка существует концепция прямоугольных уровней перегрузки цен, а именно: цена идет вверх и вниз, практически не нарушая прежние максимальные и низкие уровни цен в течение некоторого времени, образуя фигуру прямоугольника. Например.: http://cf.ydcdn.net/1.0.0.25/images/invest/congestion%20area.jpg.

Отредактируйте: для меня яснее: акция, как и рынок форекс, создается наборами движений, называемых «импульс» и «коррекция», первое из которых направлено в направлении текущего тренда акции, а другое — в противоположном направлении. Когда акция движется в направлении тренда, импульсное движение всегда больше, чем следующая коррекция, но иногда случается так, что в результате коррекция оказывается с тем же размером импульса. Так, например, в акции с положительной тенденцией импульсное движение переместилось с цены 10,00 долл. США на 15,00 долл. США, и затем появилась коррекция, снизив цену до 12,00 долл. США. Когда появился новый импульс, подумал, вместо того, чтобы пройти предыдущее максимальное значение (15,00 долларов), он остановился именно на нем, после чего последовала новая коррекция, которая снизила цену точно до предыдущей минимальной цены (12,00 долларов). Итак, теперь мы можем нарисовать две горизонтальные линии паралеля на графике акций: одну в цене 15,00 долларов и другую в 12,00 долларов, образуя канал, в котором цена «перегружена» внутри. И если мы рисуем две вертикальные полосы в крайних сторонах, у нас есть прямоугольник: один с верхним столбцом на верхнем уровне, а другой — с нижним.

Я пытаюсь создать алгоритм на C ++ / Qt, способный обнаруживать такие паттерны с помощью данных подсвечника внутри контейнера списка (используя Qt -> QList), но в настоящее время я провожу исследование, чтобы узнать, знает ли кто-нибудь о ком-то, кто уже сделал такое код, поэтому я экономлю много усилий и времени при разработке такого алгоритма.

Итак, мой первый вопрос будет: кто-нибудь знает и с открытым исходным кодом, который может обнаружить такую ​​цифру? — Очевидно, это не обязательно должно быть именно в таких условиях, но если есть код, который выполняет аналогичные операции, мне нужно только внести коррективы, это было бы хорошо.

С другой стороны, как я мог создать такой алгоритм в любом случае? Ясно, что главное — это обнаружить высокие и низкие уровни, а не просто контролировать, когда эти уровни «пробиты», чтобы определить конец фигуры, но как я могу сделать это эффективным способом? Сегодня лучшее, что я могу сделать, — это обнаружить высокие и низкие уровни, используя время в качестве параметра (например, «самая высокая цена за четыре свечи», и это с использованием очень дорогого кода).

2

Решение

Технический анализ очень размыт и субъективен, его трудно кодировать в программе, когда все видят разные вещи в одном и том же графике. Хорошим началом было бы использование некоторой функции стоимости, такой как выбор уровней, которые минимизируют сумму квадратов расстояний, что наказывает большие отклонения больше, чем меньшие.

2

Другие решения

Вы должны использовать идею порогового значения «гистерезис»; Вы создаете 4-уровневый конечный автомат для того, как цена преодолевает низкий (L) или высокий (H) уровни. (первый раз достигает нового низкого уровня) L-> L, (возврат к низкому уровню) H-> L, (новый высокий уровень) H-> H, а затем (возврат к высокому уровню) L-> H.

1