Интересный материал, спасибо!
не понравилась реализация распознавания паттернов:
//+------------------------------------------------------------------+ //| Распознавание паттернов | //+------------------------------------------------------------------+ PATTERN_TYPE CProgram::GetPatternType(double A,double B,double C,double D,double E)
понятно, что свою задачу метод выполняет, возможно для данной статьи это оптимальное решение
хотелось бы найти более изящное (универсальное) решение такой задачи, что то похожее как матрица для хранения данных(массив)? - кто нибудь встречал такую реализацию поиска паттернов?
Паттерны М2 и М4 на картинках одинаковые - это опечатка?
Исправим, спасибо.
Интересный материал, спасибо!
не понравилась реализация распознавания паттернов:
понятно, что свою задачу метод выполняет, возможно для данной статьи это оптимальное решение
хотелось бы найти более изящное (универсальное) решение такой задачи, что то похожее как матрица для хранения данных(массив)? - кто нибудь встречал такую реализацию поиска паттернов?
Можно конечно было загнать всё это в структуру или массив. Но так пока проще понять с нуля в виде точек ломаной.
...
хотелось бы найти более изящное (универсальное) решение такой задачи, что то похожее как матрица для хранения данных(массив)? - кто нибудь встречал такую реализацию поиска паттернов?
Было, делал универсально. Но вряд ли найду, даже не знаю с чего начать искать.
Есть одна линия, это две точки. Третья точка может занять одну из двух позиций: между первой и второй точкой, или выше первой точки (допустим, что первый отрезок направлен вверх). Теперь есть три точки, четвертая может занять одну из трех позиций или дну из двух... Сначала в массиве две точки, стоишь на индексе 1, добавляешь в конец массива все варианты расположения третьей точки. Переходишь к индексу 2, еще в конец массива добавляешь все варианты расположения еще одной точки... и т.д. Сам паттерн задается номеров, как размер массива достиг указанного размера - вот он паттерн с этим номером. Нужен массив структур, а в структуре массив с номерами точек.
***
В массиве не координаты точек располагались, а номера вершин от начала. К примеру, М16, вот так бы кодировался: {1, 3, 2, 5, 4}. А если еще вершину добавить, то такие варианты получаются?
{1, 3, 2, 5, 4}
{1, 3, 2, 5, 6, 4}
{1, 3, 2, 5, 4, 6}
***
А проверять так. Допустим, ищем паттерн: {1, 3, 2, 5, 4} Это значит, что вершина 1 ниже 3, 5 - выше 2 и ниже 4 и т.д.
Было, делал универсально. Но вряд ли найду, даже не знаю с чего начать искать.
Есть одна линия, это две точки. Третья точка может занять одну из двух позиций: между первой и второй точкой, или выше первой точки (допустим, что первый отрезок направлен вверх). Теперь есть три точки, четвертая может занять одну из трех позиций или дну из двух... Сначала в массиве две точки, стоишь на индексе 1, добавляешь в конец массива все варианты расположения третьей точки. Переходишь к индексу 2, еще в конец массива добавляешь все варианты расположения еще одной точки... и т.д. Сам паттерн задается номеров, как размер массива достиг указанного размера - вот он паттерн с этим номером. Нужен массив структур, а в структуре массив с номерами точек.
***
В массиве не координаты точек располагались, а номера вершин от начала. К примеру, М16, вот так бы кодировался: {1, 3, 2, 5, 4}. А если еще вершину добавить, то такие варианты получаются?
{1, 3, 2, 5, 4}
{1, 3, 2, 5, 6, 4}
{1, 3, 2, 5, 4, 6}
***
А проверять так. Допустим, ищем паттерн: {1, 3, 2, 5, 4} Это значит, что вершина 1 ниже 3, 5 - выше 2 и ниже 4 и т.д.
да, именно такой способ кодирования и хотелось бы найти
тут вроде, что то похожее на матрицу смежности взвешенного графа получается , где вес будет означать относительно которой вершины выше/ниже текущая вершина
- neerc.ifmo.ru
Отличная работа - как в части постановки задачи, и его программного решения, так и в части реализации графического интерфейса.
И лишь в порядке предложения: если можно, добавить результаты исследования эффективности самих фигур для поиска точек входа в рынок.
Вероятно, в силу объёмности задачи, это может быть отдельной темой и отдельной публикацией.
Отличная работа - как в части постановки задачи, и его программного решения, так и в части реализации графического интерфейса.
И лишь в порядке предложения: если можно, добавить результаты исследования эффективности самих фигур для поиска точек входа в рынок.
Вероятно, в силу объёмности задачи, это может быть отдельной темой и отдельной публикацией.
Спасибо, Александр, что вам понравилась очередная моя статья. Насчет исследования, то приложение из этой статьи готово для них. Текущие варианты настроек уже представляют большое количество вариантов для поиска.
В следующей статье я постараюсь расширить возможности приложения.
Можно конечно было загнать всё это в структуру или массив. Но так пока проще понять с нуля в виде точек ломаной.
понятно, что кроме универсальности, в статье еще должен быть код наглядным и читаемым, но люблю задачи на комбинаторику, или пошевелить извилинами, вот через поиск в МЕ сгруппировал эту функцию по первому условию:
//+------------------------------------------------------------------+ //| Распознавание паттернов | //+------------------------------------------------------------------+ PATTERN_TYPE GetPatternType(double A,double B,double C,double D,double E) { if(A>B && C>A && B>E && E>D) return(W6); if(A>B && C>E && E>A && B>D) return(W11); if(A>B && E>C && C>A && B>D)return(W12); if(A>B && C>E && E>D && D>A)return(W15); if(A>B && E>C && C>D && D>A) return(W16); // A>C if(A>C && B>D && D>A && C>E) return(M3); if(A>C && B>D && D>E && E>A) return(M8); if(A>C && D>B && B>E && E>A) return(M10); if(A>C && C>B && B>E && E>D) return(W1); if(A>C && C>E && E>B && B>D) return(W2); if(A>C && C>E && E>D && D>B) return(W4); if(A>C && E>A && C>B && B>D) return(W8); if(A>C && E>A && C>D && D>B)return(W10); // C>A else ? if(C>A && B>D && D>C && A>E) return(M7); if(C>A && D>B && B>C && A>E) return(M9); if(C>A && B>D && D>E && E>C) return(M13); if(C>A && D>B && B>E && E>C) return(M15); if(C>A && D>E && E>B && B>C) return(M16); if(C>A && A>E && E>B && B>D) return(W7); if(C>A && A>E && E>D && D>B) return(W9); if(C>A && E>C && A>D && D>B) return(W14); if(B>A && A>D && D>C && C>E) return(M1); if(B>A && A>D && D>E && E>C) return(M2); if(B>A && D>B && A>C && C>E) return(M5); if(B>A && D>B && A>E && E>C) return(M6); if(B>A && D>E && E>B && A>C) return(M11); if(B>D && D>A && A>E && E>C) return(M4); if(B>D && D>C && C>E && E>A) return(M12); if(B>D && A>E && E>C && C>B) return(W3); if(D>B && B>C && C>E && E>A) return(M14); if(D>B && A>E && E>C && C>D) return(W5); if(D>B && C>E && E>A && A>D) return(W13); return(-1); }
все равно должно быть компактное и универсальное решение!... но я пока его еще не вижу
понятно, что кроме универсальности, в статье еще должен быть код наглядным и читаемым, но люблю задачи на комбинаторику, или пошевелить извилинами, вот через поиск в МЕ сгруппировал эту функцию по первому условию:
все равно должно быть компактное и универсальное решение!... но я пока его еще не вижу
Так хорошее решение выше Дмитрий предложил. Его можно обыграть так:
В аргументах метода GetPatternType передавать размерность паттерна и всё. Он сам из этой цифры составляет все возможные комбинации и на основе этих данных ищет заданный в структуре или массиве.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Исследования технических фигур Меррилла:
В этой мы статье рассмотрим модель технических фигур Меррилла и попробуем выяснить, насколько актуальны эти технические паттерны сегодня. Для этого мы создадим инструмент для их тестирования и применим данную модель к различным типам данных, такие как цена закрытия, ее максимумы и минимумы, индикаторы осцилляторного типа.
Для того чтобы было предельно ясно каким образом и для каких входных данных мы будем применять модель технических фигур Меррилла, необходимо разобраться что они из себя представляют. Основные две категории — это фигуры, которые выглядят в виде английских букв M и W. Они называются M-паттернами и W-паттернами. В каждой из этих категорий находиться по 16 фигур.
На рис.1 представлены 16 М-паттернов внешне, так или иначе, напоминающих букву М. Как видно из картинки, различие их состоит во взаимном расположении пяти точек, составляющих паттерн.
Автор: Alexander Fedosov