Как алгоритмизировать выявление скопления фида МА? - страница 2

 
Dmitry Fedoseev:

Дальше лень изобретать. Какой-то намек есть, что в принципе задача решаемая.

Всё эти фиды это просто heatmap от прежних цен. Вид сбоку.😉

И в отличии от средних, температурную карту можно продлить в будущее. А уж затемнения, они же жгуты искать легко
 
Maxim Kuznetsov:
Всё эти фиды это просто heatmap от прежних цен. Вид сбоку.😉

И в отличии от средних, температурную карту можно продлить в будущее. А уж затемнения, они же жгуты искать легко

Да, уж!

Все просто - когда есть готовые стереотипы.

А выработать их - работенка не простая...

Благодарю за направление!
 
Mikhail Toptunov:

Да, уж!

Все просто - когда есть готовые стереотипы.

А выработать их - работенка не простая...

Благодарю за направление!

примерный алгоритм рассчёта heatmap (например на 100 бар):

для всех Close от 1 до 100 :

Close[N]=X будет добавлять в heatmap сумму ряда heatmap[Resolution(X)]+={X/N} + {X/(N+1)}+{X/(N+2)}.. до 100.
То что в фигурных скобочках - это "компоненты" средних, просто выделил.
Resolution(X) - "разрешение", например по 10 пунктов Round((X-MininalX)/Point/10)

получаете вектор в котором потом найти нужные вам локальные максимумы.

сей вектор практически - вертикальный профиль цен

 

раз уж начал...

непосредственное скопление кривых можно выявлять проcто и быстро.

алг.: поиск макс.скопления точек в пределах D на оси. (возможно проще нарисовать, но не художник)

для каждой точки X на дополнительной оси делаются отметки +1 на уровне X+D и -1 на уровне X-D

дальше бежишь по доп.оси и считаешь нарастающую сумму меток. Заодно запоминая максимум, его длительность и  положение.

ВСЁ.

Но вариант с вертикальным профилем или температурной картой лучше, хотя и долгий и ресурсоёмкий

потому что 1) считается непосредственно от цен 2) сохраняет мат.связь с SMA 3) связан со стаканом 4) вариативен - можно "играть" с затуханиями, размытиями и найти что-то своё

 
Mikhail Toptunov:

Я пробовал пересчитывать повторения МА по цене, по периоду.

Делал так:

- определял момент перехода каждой МА из одного направления в другое - сигнал1

- получив данные считал количество повторений сигнал1 в баре

НО результат оказывался слишком зашумлен


потом выявил, что у скопление МА текущего бара уменьшается период на следующем, то есть жгут смещался на понижение по периоду

Начал связывать данные в цепочку по сигнал1, в получившихся данных находил момент перехода


но работает все ровно не так, то шумит, то не проявляет.



Блин, шаблон не работает, верхнее окно пустое


В идеале задача получить значения помеченные синим маркером 

правильно Вам Максим пишет

берете свою МА-шку с максимальным периодом, берете с минимальным

и все по моему, и вот они - фиды

шаблон работает на ура, все замечательно видно и предельно понятно:


 

Еще вариантик

1

Файлы:
22.mq5  4 kb
 

И еще один

Файлы:
23.mq5  6 kb
 
За это можно на неделю засесть или на месяц...
 
Maxim Kuznetsov:

примерный алгоритм рассчёта heatmap (например на 100 бар):

для всех Close от 1 до 100 :

Close[N]=X будет добавлять в heatmap сумму ряда heatmap[Resolution(X)]+={X/N} + {X/(N+1)}+{X/(N+2)}.. до 100.
То что в фигурных скобочках - это "компоненты" средних, просто выделил.
Resolution(X) - "разрешение", например по 10 пунктов Round((X-MininalX)/Point/10)

получаете вектор в котором потом найти нужные вам локальные максимумы.

сей вектор практически - вертикальный профиль цен

Пробую интегрировать формулу... я Правда, вообще тугой...

#define          Pmax 100   //размер массива по периоду

void ...
{
   for(int p=5; p<=Pmax; p++) // отбор по периодам
      for(int b=rates_total-Pmax; b<rates_total; b++)
        {
         double pr=sm.d[p-1].m[b]; // массив значений цен МА        p-период, b-бар        
        }
}

У меня есть значение каждого периода по каждому бару - pr

Что должен получить в конце вычислений?:

- Вертикальный вектор (массив значений) по каждому бару, 

   если я буду вычислять значения по первому бару

heatmap[Round((pr-MininalX)/Point/10)]+=pr;

 MininalX - минимальное значение цены 100 периодов МА

Понимаю, что ворочу околесицу, прошу милости !)

 
Mikhail Toptunov:

Пробую интегрировать формулу... я Правда, вообще тугой...

У меня есть значение каждого периода по каждому бару - pr

Что должен получить в конце вычислений?:

- Вертикальный вектор (массив значений) по каждому бару, 

   если я буду вычислять значения по первому бару

 MininalX - минимальное значение цены 100 периодов МА

Понимаю, что ворочу околесицу, прошу милости !)

да, должен получить "вертикальный вектор" из сумм. Каждый элемент вектора отвечает(суммирует) за например 10 пунктов.

то есть для бара:

1. пробегаем цены за Pmax баров, чтобы определить максимум,минимум и от них размер вектора.

2. ещё раз бежим по ценам, для каждой цены:

    2.1 определяем в какой элемент вектора складывать

    2.2 определяем сколько добавить. Для смещения N будем добавлять  ЦЕНА * (сумма 1/N 1/(N+1) 1/(N+2) ... 1/Pmax) .
   То что в скобках - это разница двух гармонических рядов = H(Pmax)-H(N-1), при желании можно считать быстро

---

почему так: цена на расстоянии N баров будет "попадать" только в группу SMA от Pmax до N. Меньше N она роли не играет, а глубже Pmax не считаем

в каждой SMA веса будут 1/период, то есть во всех сразу 1/N  1/(N+1) 1/(N+2) ...

Причина обращения: