Teste de sistemas de previsão em tempo real - página 54

 

ao forte928

В данный момент есть первый фактор на основании которого можно сделать вывод о боковом флете на паре евро доллар -

O par atingiu o nível de consolidação da linha OP em 1,4850. Exatamente as mesmas flutuações foram observadas nos pontos de 1,3437 e 1,3937 com o rollback posterior que corresponde aos níveis 0,382, 0,618 e 1,00.

o segundo valor é o mesmo gráfico, mas com níveis de crescimento calculados em relação aos baixos - 1,4162 e atuais 1,4951 e se você tomar com base neste gráfico de preços níveis 1,4951 e 1,4851 você pode ver que o preço está apenas no ponto de equilíbrio no nível médio de flutuações destes indicadores nos últimos dois dias...Além disso, o indicador de saturação tem mostrado há muito tempo o nível de saturação em que a reversão deve ocorrer

mas há algumas coisas que não permitem que isso aconteça :

1) o gráfico diário mostra um movimento de crescimento negativo (indicador inferior)

2) O gráfico diário atingiu o nível de consolidação de 0,382 em 1,4877 no primeiro indicador

3) O gráfico diário atingiu o nível de consolidação do COP em 1.4892 no segundo indicador

4) Há uma oposição ativa ao movimento ascendente no gráfico H4

5) Presença de dois níveis de consolidação em relação ao mínimo do final de setembro OP e 0,236 (1,4931 e 1,4933), o que é uma forte indicação da presença de uma correção prolongada

Para ser continuado...

Muito obrigado pelo esclarecimento, devo dizer que desisti de TA alguns anos atrás (por mim mesmo), mas é sempre interessante ler análises competentes e compará-las com minhas previsões. Poderia esclarecer o termo "nível de consolidação" para melhor compreensão e para evitar confusão na terminologia.


a lea

Você já tentou procurar por pontos críticos da série cronológica?

Não, eu não tenho, e até agora não tenho idéia de como encontrá-los. Eu usei uma noção como "memória de série temporal". Este é um termo um tanto específico, pode ser encontrado em redes neurais, análise fractal, mas você deve sempre olhar para o contexto de sua aplicação. Quero dizer, a influência da contagem histórica nas futuras realizações do processo. Simplificando, este parâmetro responde à pergunta "quanto tempo levar a série histórica".


PS: A propósito, lembro que você prometeu melhorar sua biblioteca linear e postar uma nova versão...


para Yurixx

1. No MKL4 você não pode operar com uma matriz cujo tamanho não esteja definido. Se você não especificasse seu tamanho ao declarar a matriz, você o faria no init(). Além disso, enquanto trabalha, você pode mudar seu tamanho conforme necessário.


Eu não entendo isso aqui. Eu não faço isso e tudo funciona, quero dizer sem inicialização no init()


2. O conselho de Lea é bastante prático, vale a pena dar atenção. É bem possível que você queira apenas alocar espaço e ter uma variável com o índice do último item. Então realmente não importa se você sabe o número de elementos de que precisa ou não.

Não acho que seja muito prático, porque obviamentemais cálculos terão de ser feitos. Os loops adicionais poderiam ser acrescentados aos acima mencionados. Mas mesmo assim, eu teria que verificar tudo, se ao menos pudéssemos obter algumas recomendações dos desenvolvedores... :о)

Em geral, para que o conselho seja adequado, é melhor explicar com mais precisão para que o conjunto é utilizado e por que é necessário mudar seu tamanho.

Por exemplo (e este é o exemplo mais simples) para encontrar extrema local (não no gráfico) pela condição y[n]>y[n+1] e y[n]<y[n-1] e correspondentemente por um mínimo. Entendo que é possível resolver de várias maneiras, por exemplo, assim:

  • Crie uma matriz com o mesmo comprimento da série inicial, codifique nela 0 e 1 a presença de um extremo.
  • Realizar a primeira iteração calculando o número de extrema
  • Recalcule o número de extrema
  • Inicializar a matriz com este valor
  • Escrever valores na nova matriz
Você pode fazer assim, você pode fazer assim, estou tentando descobrir como fazer melhor :o)

Eu não toco dedais. Mas eu prefiro a variante 2 ou talvez eu só queira que o euro cresça? :-)

Como você notou, eu não estava sugerindo dedais como tais. Está tudo ao ar livre, eu só estava curioso sobre sua opinião (li em um fio vizinho sua previsão)

Mas as opções 1 e 3 também são boas, embora não sejam muito diferentes uma da outra.

Mudança "vetor divergente" no valor do preço médio


para Urain

Em minha experiência, recomendo definir e usar arrays diretamente onde eles precisam usar esses arrays são na maioria locais e usar a memória dinamicamente, o que é melhor que arrays estáticos, porque eles trabalham mais lentamente do que da RAM, especialmente se o array for pequeno, não faz sentido estaticamente reservar muito espaço para eles. O compilador MQL-4 é montado de tal forma que você não sentirá diferença entre declarar um array com o tamanho explícito e o retardado.

Parece que não há "indicadores" estatísticos/dinâmicos para onde uma matriz é armazenada no MQL. Há apenas um operador de inicialização, a única questão é que usá-lo várias vezes pode retardar uma grande variedade. Ou será? Ou talvez eu esteja perdendo algo novamente?


para marcar

filtrar informações do fórum

Oh, essa é uma qualidade valiosa. Posso lhe assegurar - tenho os melhores filtros adaptáveis. :о)

Se você descrever sua tarefa em detalhes (você pode me escrever em uma mensagem particular), nós (I) descobriremos a melhor maneira de implementá-la.

Vou pensar sobre isso, mas agora eu mesmo quero descobrir. Afinal, você deveria pelo menos entender algo em MQL, para que pudesse pelo menos de alguma forma explicar o problema :o).

 
E costumava haver um galho tão silencioso. (
 
Lord_Shadows >> :
E costumava haver um galho tão silencioso. (

>> Acho que vai continuar assim. Os colegas ainda estão apenas em modo de combate :o)

 
grasn писал(а) >>

para Yurixx

Eu realmente não entendo isso aqui. Eu não faço isso e tudo funciona, quero dizer sem inicialização no init()

Inicializar uma matriz é uma coisa, declarar um tamanho é outra. Se você declarar um array como Arr[], então um elemento é alocado na memória. Você pode trabalhar com ele o quanto quiser, e o sistema não lhe informará sobre o erro quando você abordar elementos com número >0, mas os cálculos serão incorretos. Para que tudo fique bem, você precisa definir um tamanho específico usando a operação ArrayResize(). Ao alocar memória neste caso, todos os elementos serão preenchidos com zeros, portanto, se você não precisar de nada especial, pode até mesmo não inicializá-la (embora um bom estilo o exija).

.

Eu não acho que seja muito prático, pois é bastante óbvio quemais cálculos estão envolvidos. Loops adicionais podem ser acrescentados aos acima mencionados. Mas de qualquer forma, teríamos de verificar tudo, se pudéssemos obter algumas recomendações dos desenvolvedores... :о)

Os conselhos de Lea não levam a mais cálculos. Retire-o com cuidado. E se você conseguir envolver os desenvolvedores nesta questão elementar, você será um herói. :-)

.

Por exemplo (e este é o exemplo mais simples) para encontrar extremos locais (não no gráfico) pelas condições y[n]>y[n+1] e y[n]<y[n-1] e correspondentemente para o mínimo. Entendo que é possível resolver de várias maneiras, por exemplo, desta forma:

  • Criar uma matriz com o mesmo comprimento da série original, codificar nela 0 e 1 a presença de extremo.
  • Realizar a primeira iteração calculando o número de extrema
  • Recalcule o número de extrema
  • Inicializar a matriz com este valor
  • Escrever valores na nova matriz

Isto é chamado de mão esquerda sobre o ouvido direito. Faço isso o tempo todo em meus programas, mas trabalho de uma só vez para evitar o desperdício de recursos e tempo de cálculo. A lei é: se você ganha em memória, você perde no tempo e no cálculo. Minha opinião pessoal é que a memória é menos crítica para o comércio. Portanto, você pode facilmente criar até mesmo duas matrizes do mesmo comprimento e escrever o valor extremo em uma matriz e sua coordenada na outra, conforme elas estão se formando.

Sergei, é melhor você começar com o cenário mais complicado. Caso contrário, não entenderei do que se trata a comoção. :-)))

Aconselho a seguir o conselho de Urain de "declarar e usar arrays diretamente onde eles devem ser usados" com muita cautela. O uso de arrays é determinado pela natureza da tarefa, não por como lutar com o arquivo swap.

 
Yurixx >>:
grasn писал(а) >>

Ну например (и это самый простой пример) поиск локальных экстремумов (не на графике) по условию y[n]>y[n+1] и y[n]<y[n-1] и соответственно для минимума. Я понимаю, что можно решить несколькими способами, например таким:

  • Создать массив такой же длины, как и исходный ряд, кодировать в нем 0 и 1 наличие экстремума.
  • Выполнить первую итерацию собрав расчет экстремумов
  • Пересчитать количество экстремумов
  • Инициализировать массив этой величиной
  • Записать значения в новый массив

Это называется левой рукой за правое ухо. Я постоянно делаю это в своих программах, но работаю в один проход, чтобы не тратить зря вычислительные ресурсы и время. Закон такой: выигрываешь в памяти - проигрываешь во времени и вычислениях. Лично мне кажется, что память менее критична для трейдинга. Поэтому можешь смело создавать даже два массива такой же длины и писать в один значение экстремума, а во второй его координату, непосредственно по ходу их формирования.

Eh, isso é um pouco fora de tópico ;-). Normalmente tento aproveitar ao máximo as características (API, bibliotecas, etc.) que já existem para tarefas específicas. Em particular, não seria mais produtivo usar as funções ArrayMinimum/Maximum para encontrar o extrema? Além disso, a escolha do método de armazenamento dos extremos ainda deve ser determinada pelas operações subseqüentes a serem realizadas com eles. Em particular, suponho que o extrema precisará ser violado posteriormente em alguns cálculos e, neste caso, a forma proposta pelo grasn é a melhor, pois é executado em um único loop e permite que se itere o extrema facilmente em seguida.
 
grasn писал(а) >>

a lea

Não, eu ainda não procurei tais pontos e não tenho idéia de como encontrá-los. Usei uma noção como "memória de série cronológica". Este é um termo um tanto específico, pode ser encontrado em redes neurais e análise fractal, mas você sempre tem que olhar para o contexto de sua aplicação. Quero dizer, a influência da contagem histórica nas futuras realizações do processo. Simplificando, este parâmetro responde à pergunta "quanto tempo levar a série histórica".

PS: A propósito, lembro que você prometeu melhorar sua biblioteca linear e postar uma nova versão...

Estou vendo, obrigado pela resposta.

Basicamente, levei o trabalho na biblioteca a uma etapa final há dois meses (joguei fora funções desnecessárias, refiz funções existentes). Embora eu ainda não tenha feito o cálculo da condicionalidade da matriz. Estarei mais livre em cerca de duas semanas, e depois tentarei resolver o problema.

Comecei a escrever um artigo naquela época, mas não tive tempo suficiente. No momento, 50% das descrições de funções estão prontas (isto é 6 grupos de funções em 16; por enquanto escreverei apenas documentação sobre funções, os exemplos de seu uso seguirão).

 

Eu não sou muito bom com previsões, então decidi experimentar com M1 hoje, começando na segunda-feira:

Não consigo ver o gráfico principal :)

Mas uma otimização excessiva a cada minuto e uma previsão para 3 horas à frente.


 
Piboli >> :

Eu não sou muito bom com previsões, então decidi experimentar com M1 hoje, começando na segunda-feira:

Não consigo ver o gráfico principal :)

Mas uma otimização excessiva a cada minuto e uma previsão para 3 horas à frente.



Como você pode ser reoptimizado? E onde você obtém suas previsões, não do dedutor, por acaso?

 
mpeugep >> :

Como você pode ser reoptimizado? E onde você obtém suas previsões, não do dedutor, por acaso?


Pobre Piboli, ele já foi perguntado quatro vezes ^_^, sim, ele faz suas previsões na Deductor
 

a previsão é mais ou menos a mesma (aquela com a entropia máxima) :o) Um pequeno refinamento, as seguintes trajetórias permanecem, sendo a que é "canalizada" a mais provável.



a lea

Понятно

Fiz o melhor que pude :o)

Basicamente, eu trouxe a biblioteca para sua fase final há dois meses (retirei funções desnecessárias, refiz funções existentes). Embora eu ainda não tenha feito os cálculos de condicionalidade da matriz.

Mas diz aí

O código será postado mais tarde.

Mas a versão não mudou :o(

Razão: