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

 
grasn >> :

ainda menos de 1,55 :o) Vamos ver

Muito provavelmente ^_^, pelo menos se você olhar para as opções

Opções visuais CME

 
grasn писал(а) >>

(1) Como initalizar corretamente uma matriz multidimensional (todas as suas dimensões). Este código, como eu o entendo, será correto para uma matriz unidimensional e a primeira dimensão encontrada na multidimensional:

double memRow[];

ArrayResize(memRow, N);
ArrayInitialize(memRow, 0.0);

Mas o que fazer com mais dimensões?

(2) Como estender dinamicamente as matrizes univariadas e multivariadas?

Neste caso, o array memRow[] deve aumentar em algum valor a cada iteração, não importa como, que seja 1 por simplicidade. Da mesma forma, para array 2D, deve crescer em duas direções por i e j - memRow[i][j]

(1) Isto é correto e é exatamente o mesmo para múltiplas dimensões. A inicialização coloca um valor em todos os elementos da matriz, independentemente da dimensionalidade.

(2) Infelizmente, não vai funcionar. No MKL4 você só pode mudar a dimensão da primeira dimensão de uma matriz multidimensional. Talvez isto seja corrigido no MKL5.

 
NEKSUS_ >> :

Muito provavelmente ^_^, pelo menos se você olhar para as opções

Opções visuais CME

De onde vieram dados tão bonitos?

 
dentraf >> :

Onde você obteve dados tão bonitos?

Os dados são muito comuns, e se são bonitos ou não, depende do autor ^_^

 

grasn, se a programação em MQL4 não é um fim em si mesma, então não seria melhor escrever as partes mais importantes do projeto, especialmente se elas requerem matrizes multidimensionais para uma implementação normal, em C e anexá-las como uma DLL? Ele funcionará mais rápido e conveniente para depuração, e o código fonte será mais legível (sem os incômodos com muitas matrizes, indexação indireta e outras coisas, que teremos de inventar em MQL, para contornar suas limitações).

 
grasn >> :

Prevejo realizações (trajetórias), mas quando tomo decisões comerciais, me concentro nas características de "freqüência", por exemplo, valor médio de +/- as trajetórias mais prováveis no horizonte de previsão. Estes são mais confiáveis no que diz respeito às metas, mas a trajetória de preços para estes níveis pode ser muito complicada. Estou, é claro, trabalhando na segunda abordagem para estimar as zonas de inversão locais. Quanto ao MM como tal - não é tão simples assim, deve ser uma tarefa séria à parte.

exatamente por este motivo, que é o assunto da conversa, estou no processo de tradução do código do MathCAD para o MT. Fará sentido estatístico ter um período de teste de pelo menos 6 meses (a olho nu). Portanto, postarei o estado um pouco mais tarde.


A propósito, tenho uma pergunta de programação, porque estou preso (não sou muito de programador):

(1) Como inicializar adequadamente uma matriz multidimensional (todas as suas dimensões). Este código, como eu o entendo, será correto para uma matriz unidimensional e a primeira dimensão encontrada na multidimensional:

double memRow[];

ArrayResize(memRow, N);
ArrayInitialize(memRow, 0.0);


Mas o que fazer com mais dimensões?


(2) Como estender dinamicamente as matrizes univariadas e multivariadas?



for(i=0; i<=N-1; i++)

{

...

memRow[];

...

}


Neste caso, o array memRow[] deve aumentar em algum valor a cada iteração, não importa como, que seja 1 para simplicidade. Da mesma forma, para array 2D, deve crescer em duas direções por i e j - memRow[i][j].


Aparentemente, a abordagem de uma matriz multidimensional terá que ser implementada como uma função.


Por exemplo, você tem uma matriz unidimensional a[n]


então suponha que queremos usá-lo como uma matriz tridimensional i,k,j


então o elemento (i,k,j) será tratado na matriz a, como a[i*3+k*2+j].


E assim por diante...

 

para Yurixx

(1) Все правильно и для нескольких измерений точно так же. Инициализация прописывает одно значение во все элементы массива независимо от размерности.

(2) Infelizmente, isso não vai funcionar. No MKL4 você só pode mudar a dimensão da primeira dimensão de uma matriz multidimensional. Talvez seja fixado em MKL5.

Feliz em vê-lo em nosso porto seguro :o). E é bom, que seja tranquilo, ao contrário dos ramos vizinhos, onde as paixões humanas se enfurecem, em um lugar uniforme. Um pequeno resumo para uma compreensão mais clara. Suponha que haja uma construção desse tipo:

double memRow[];

...

<какая то первая инициализация массива>

j=1

for(int i=0; i<=N-1; i++)

{

if(<какое то условие>)

{

ArrayResize(memRow, j+1);

<запись значений в расширенный массив>

...

}

}


Como eu entendi, ele aumentará dinamicamente a matriz memRow[] quando alguma condição desencadear. Isto é, não sei de antemão o comprimento da matriz. Eu acertei?


para o marketeer

Se a programação em MQL4 não é um fim em si, entãonão seria melhor escrever as partes mais importantes do projeto, especialmente se elas requerem matrizes multidimensionais para uma implementação normal, em C e anexá-las como uma DLL? Ele funcionará mais rápido e conveniente para depuração, e o código fonte será mais legível (sem coisas complicadas com um monte de matrizes, indexação indireta e outras coisas, que teremos de inventar em MQL, para contornar suas limitações).

Minha programação em C/C+++ é ainda pior do que em MQL. E eu não tenho programado no total há cerca de 15 anos ou mais. Agora eu quero obter o primeiro resultado, com base no qual tirarei algumas conclusões. É claro que não terei nenhum desempenho, mas o sistema de alguma forma começará a funcionar em modo automático. Pelo menos, espero que sim. :о)


Mas você está certo, é claro, no futuro eu irei substituir algumas funções por dll, e talvez todo o sistema.


para sol

Aparentemente, o apelo a uma matriz multidimensional terá que ser implementado como uma função.

Por exemplo, você tem uma matriz unidimensional a[n]

então, suponha que queremos usá-lo como uma matriz tridimensional i,k,j

então o elemento (i,k,j) será tratado na matriz a, como a[i*3+k*2+j].

E assim por diante...

É uma idéia interessante, mas a cada iteração que leva a uma mudança de dimensão da matriz, na verdade seria necessária a remontagem (ou reconstrução) de toda a matriz. Mas provavelmente é viável. Obrigado pela idéia.

 
grasn писал(а) >>

Suponha que haja uma construção desse tipo:

double memRow[];

...

<какая то первая инициализация массива>

j=1

for(int i=0; i<=N-1; i++)

{

if(<какое то условие>)

{

ArrayResize(memRow, j+1);

<запись значений в расширенный массив>

...

}

}

Como eu entendi, ele aumentará dinamicamente a matriz memRow[] quando alguma condição desencadear. Isto é, não sei de antemão o comprimento da matriz. Eu acertei?

Um pequeno conselho. Não aumente a matriz em 1 elemento do laço. Mantenha o número de elementos usados (preenchidos) em uma variável adicional, e aumente a matriz em cerca de uma dúzia de elementos (você pode facilmente estimá-la para sua tarefa), quando ficar sem espaço. Desta forma, você pode obter um ganho de desempenho significativo. // Embora eu não esteja familiarizado com a forma como a memória é alocada para as arrays no terminal. Se a memória for alocada com alguma reserva para o caso de ampliação da matriz, então o ArrayResize(memRow, j+1) será executado muito rapidamente.

 
lea >> :

Uma palavra de conselho. Não aumente a matriz em 1 elemento do laço. Mantenha o número de elementos usados (preenchidos) em uma variável adicional e aumente o conjunto em cerca de uma dúzia de elementos (estimativa para sua própria tarefa) quando você ficar sem espaço. Desta forma, você pode obter um ganho de desempenho significativo. // Embora eu não esteja familiarizado com a forma como a memória é alocada para as arrays no terminal. Se a memória for alocada com alguma reserva para o caso de ampliação da matriz, então o ArrayResize(memRow, j+1) será executado muito rapidamente.

Obrigado, vou tentar, mas não posso estimar o que é mais ideal. Por outro lado, para uma pequena matriz eu também não conhecerei sua dimensionalidade e além disso, nesta implementação terei que dobrar a matriz, primeiro - a pequena, e depois a grande, onde os valores calculados são acumulados. Mas é hora de experimentar, obrigado pelo conselho.

 

para Yurixx

Eu sugiro jogar bons velhos dedais, você pode usar qualquer estratégia e procurar em qualquer lugar :o) Previsão em EURUSD M15 para 300 amostras (de segunda a quarta-feira inclusive):

Opção 1:



Entropia do processo: 13.84



Variante 2:


Entropia do processo: 13.01



Opção 3:


Entropia do processo: 14.36


Qual dedal você está pegando? :о)

Arquivos anexados:
process_2.rar  5 kb