Натолкнулся на одну проблему и хочу задать вопрос общественности - возможно, существует в природе готовый алгоритм и не придется делать что-то запредельно кустарное.
Забавно будет посмотреть на результат - посоветует кто-то что-то или нет. Сдаётся мне - ничего путнего не предложат, разве что нейронную сеть задействовать.
А вот "кустарное" решение у меня, пожалуй, есть. Но сперва посмотрим - может и правда найдётся что дельное у людей - знатоков математики тут хватает.
Забавно будет посмотреть на результат - посоветует кто-то что-то или нет. Сдаётся мне - ничего путнего не предложат, разве что нейронную сеть задействовать.
А вот "кустарное" решение у меня, пожалуй, есть. Но сперва посмотрим - может и правда найдётся что дельное у людей - знатоков математики тут хватает.
Интересно было бы сравнить нашу "кустарщину". Я обдумываю скользящий квадрат с анализом содержимого.
Средний Х и средний Y точек одной области, но если облась в виде восьмерки, попадем на перешеек. Можно позамазывать перешейки, пройтись по X, если размер области по Y сужается, затем расширяется - значит перешеек, закрасить его красным, затем также по Y и X.
Кажется наиболее адекватным вариантом - вписанная окружность с максимальным радиусом, но существует ли какой быстрый способ ее поиска...
Кажется наиболее адекватным вариантом - вписанная окружность с максимальным радиусом, но существует ли какой быстрый способ ее поиска...
0. Определиться с наличием зеленых точек вообще))
1. Для всех зеленых точек поля подсчитать количество зеленых соседей (от 0 до 8).
2. Принять N=0
3. Пока не имеется точек с N зелеными соседями, N++.
4. Закрасить красным все зеленые точки с N зелеными соседями. Пересчитать количество зеленых соседей для всех точек.
5. Подсчитать количество оставшихся зеленых точек М. Если М==1, алгоритм закончен, центр найден. Если M==0, восстановить только что закрашенные точки и перейти к шагу 7.
6. переход к шагу 3.
7. Проверить область из оставшихся M точек на односвязность (каждая точка должна иметь хотя бы одного соседа из оставшихся M-1). Если область односвязна, за центр принять точку, ближайшую к среднему арифметическому всех M координат. Если область многосвязна, подсчитать количество односвязных компонентов, выбрать наибольший по количеству входящих точек (или несколько с одинаковым максимальным количеством) и вычислить среднее арифметическое в нем (них).
8. Конец.
Вроде так, проверяйте.
upd Все, теперь должно быть нормально
Надо разок проверить вручную, Мурад
Я как раз прикидываю в уме, как это все будет работать.
Я как раз прикидываю в уме, как это все будет работать.
Мы просто на каждом шаге стираем 1 слой границы для каждой зеленой области, в результате должна остаться та, которая изначально имела наибольший радиус, причем прийти должны как раз в серединку. Идея такая.
Мы просто на каждом шаге стираем 1 слой границы для каждой зеленой области, в результате должна остаться та, которая изначально имела наибольший радиус, причем прийти должны как раз в серединку. Идея такая.
Если я не ошибаюсь, это алгоритм заливки всех несвязанных областей. Но я не вижу в нем оценки найденной области - бублик считается наравне с кругом, хотя нам подойдет только круг.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Натолкнулся на одну проблему и хочу задать вопрос общественности - возможно, существует в природе готовый алгоритм и не придется делать что-то запредельно кустарное.
Итак, есть советник-полуавтомат (результаты на реале весьма неплохие; наберет 30 сделок - поделюсь стейтом), который на каждом баре подгоняет два своих параметра (два - для простоты) под рынок, строя карту доходности. По одной оси - первый параметр, по другой - второй. Минусовые значения доходности соотвествуют "красной" ячейке, плюсовые - "зеленой". На выходе получается красно-зеленая карта. Очевидно, что нас интересует не просто комбинация двух параметров, которая даст максимальный доход на истории(!), а такая, все "окресности" которой будут зелеными. Т.е. мы должны на цветной карте найти максимальное по площади зеленое пятно и ткнуть в его центр. Этим cпособом мы найдем устойчивую комбинацию параметров, которая, скорее всего, принесет доход даже при неизбежных колебаниях рынка.
Так вот, именно поиск зеленого пятна и его центра я делаю вручную, а хотелось бы этот процесс автоматизировать. Есть ли соображения на этот счет?