Como vocês algoritmam a detecção de aglomerados de ração MA? - página 9
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Rapazes, ainda não sei se é para cima ou para baixo.
Certo.
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ê.
Se você passar um array pela MathQuantile, ele deve ser classificado?
Qualquer permutação (ordenação, por exemplo) não deve alterar o resultado.
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.
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.
Se você puder mostrar o que precisa ser feito, cálculo (uma barra de cada vez).
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