Como vocês algoritmam a detecção de aglomerados de ração MA? - página 9

 
O símbolo Yin-Yang foi sugerido como modelo para o MA, não como um "ícone" de ateísmo ou dialética. Convergência/divergência de preços em relação ao MA, forma-se um novo extremo nos níveis de preços, mas o preço está mais próximo do MA do que o extremo anterior (em desvios estatísticos), ou seja, a probabilidade de mudança de tendência é formada (cruzamento do MA), não há cruzamento, mas também existem condições no símbolo - o nascimento do elemento ocorre na área do valor oposto.
 
Aleksei Stepanenko:

Rapazes, ainda não sei se é para cima ou para baixo.

Certo.

 
Aleksey Nikolayev:

Quais quantitativos devem ser contados, por exemplo

{0,5} - mediana

{0,25, 0,5, 0,75} - quartis

{0,01, 0,02, ..., 0,99} - persentis

Você pode me dizer algo?

Se eu passar uma matriz através do MathQuantile, devo classificá-la?

- Entendi que não importa se está ordenado ou não.


Acontece que o índice não é rastreável ao array. A quantidade é contada pelo preço, e o índice do array ao qual o preço está ligado ...

 

Entendo que esta matemática com uma mediana ou quântica, não resolve o problema de forma satisfatória!

Algo que eu não posso...

 

Um conjunto de valores dos quantis especificados é retornado. Os índices desses valores na matriz não classificada não são conhecidos. Toda a questão é sobre a velocidade. Se esta função for calculada em cada barra e a matriz de valores for grande, o tempo de otimização pode ser retardado. Eu seguiria um caminho diferente, mas depende de você.

 
Mikhail Toptunov:

Se você passar um array pela MathQuantile, ele deve ser classificado?

Qualquer permutação (ordenação, por exemplo) não deve alterar o resultado.

 
Aleksei Stepanenko:

Um conjunto de valores dos quantis especificados é retornado. Os índices desses valores na matriz não classificada não são conhecidos. Toda a questão é sobre a velocidade. Se esta função for calculada em cada barra e a matriz de valores for grande, o tempo de otimização pode ser retardado. Eu tomaria um caminho diferente, mas depende de você.

Qual caminho você tomaria?

Alexey, qual caminho resolveria o problema)!

 

Não sei que tarefa você estabeleceu para si mesmo, mas em geral, quanto menos cálculos cíclicos, mais rápido é o algoritmo. Há um ciclo básico - é uma passagem por todas as barras da história, não podemos fugir dele. Mas devemos tentar nos livrar do resto deles. OMathQuantile, iHighest e outras funções são, defato, loops ocultos. Para acelerar, as informações devem ser processadas à medida que chegam e armazenadas até a próxima barra. No cálculo atual, não utilize dados históricos brutos, mas os dados previamente preparados.

No caso de encontrar medianas e outros quantitativos, é menos dispendioso manter uma matriz ordenada à medida que a informação chega. Eu escrevi o código acima. Se você tem uma "janela deslizante" dentro da qual as informações são necessárias, você precisa pensar em como remover valores antigos da matriz da mesma maneira rápida. Você provavelmente precisará de outra matriz para armazenar os índices.

 
Maxim Kuznetsov:

um algoritmo aproximado para o cálculo de um mapa térmico (por exemplo, para 100 bar):

para todos Fechar de 1 a 100 :

Close[N]=X adicionará ao heatmap a soma do heatmap de linha[Resolução(X)]+={X/N} + {X/(N+1)}+{X/(N+2)}... até 100.
O que está entre parênteses curvos é a soma dos "componentes" das médias, apenas destacados.
Resolução(X) - "resolução", por exemplo, 10 pontos Round((X-MinimalX)/Ponto/10)

obtenha um vetor no qual você precisa encontrar os máximos locais.

Este vetor é praticamente um perfil de preço vertical

Você poderia me ajudar a calcular o mapa do calor? Eu tentei a mediana, o quantil não dá uma boa indicação dos aglomerados de MA.

//Pmax - количество Скользящих Средних МА
//masPra[] - значение цены МА по текущему бару
//masPer[] - значение индексов массива цен МА, для сортировки
void medianaL0_2(const double &masPra[],const int &masPer[])
 {
  // MathQuickSort(masPra,masPer,10,Pmax-1,1); // сортируем массив цен с 10 периода, по Pmax-1
  

Se você puder mostrar o que precisa ser feito, cálculo (uma barra de cada vez).

 
Mikhail Toptunov:

Por favor, você poderia ajudar a calcular o mapa de calor? experimentado através da mediana, quantil não funciona para alcançar a detecção normal de aglomerados de MA.

Se você puder me mostrar o que precisa ser feito, cálculo (uma barra de cada vez).

Vou mostrar os resultados diretamente, sem otimizações, matrizes e matemática complicada:

1. para a barra atual, calculamos todos os MAs separadamente. Obtemos a matriz SMA[N] onde os valores de máximos até N estão localizados.

2. criamos um heatmap[M] que cobre preços a partir de um mínimo=1,00000, cada elemento é responsável por (por exemplo) 10 pontos.

3. Preenchemos este mapa de calor "bruto": pegamos cada valor ma e vemos a que célula ele se refere. index=(SMA[i]-minimum)/resolução. Aumentamos o valor desta célula hetmap[índice]+=1,0

Você pode emitir o resultado para o CSV e pensar

4. Suavizar os valores "brutos" do heatmap: iniciar a matriz suavemente[] e ler o smotch[i]= valor médio do heatmap de i-window para i+window inclusive

5. Os máximos locais de smootch indicarão um "conjunto de rações". Espero que você saiba como procurar os máximos :-)

pontos 1-5 podem ser matematicamente decompostos e computados muito mais rapidamente, com laços mínimos e arrays extras, mas não necessariamente mais óbvios