uma estratégia comercial baseada na Teoria da Onda de Elliott - página 273

 
<br / translate="no"> O cálculo do Hearst para 3000 barras em MQL4 me levou cerca de 40 milissegundos. Provavelmente queremos dizer coisas diferentes (a palavra cálculo), então se você puder me enviar o algoritmo de seu cálculo (de preferência) ou código no MathCad (se necessário, também posso usar o Matcad).

Algo está errado com os cálculos em qualquer caso. Meu e-mail é rosh AT metaquotes DOT ru.


Posso ter me expressado de forma incorreta novamente. Eu não quis dizer uma amostra - 600 contagens durante 20 minutos. Grosso modo, 500 iterações, ou seja, primeira amostra, para a zona morta [0; 100], segunda [0; 101], depois [0; 102], [0; 103].... [0; 600]. Além disso, isto é MathCAD, e os produtos desta classe não são os melhores em termos de cálculos ótimos. Os desenvolvedores introduziram uma otimização séria somente na versão 13 que estou utilizando. Antes disso, mesmo uma solução numérica de equação simples poderia levar um longo tempo.

Meu cálculo do índice é ligeiramente diferente do que pode ser encontrado nas fontes disponíveis, enquanto que eu não me desvio da ideologia clássica da Hearst. Em outras palavras, não posso dizer que calculei as estatísticas pelo nome. :о) O algoritmo em si é escrito, verificado e reconfirmado de forma ideal.

PS: Muito obrigado por sua disposição de ajudar. É muito possível, que seja necessário. Compartilharei o algoritmo, se um mecanismo melhor puder ser implementado em um futuro próximo. Eu tenho algumas idéias.
 
<br/ translate="no"> O cálculo do Hearst para 3000 barras em MQL4 me levou cerca de 40 milissegundos. Muito provavelmente queremos dizer coisas diferentes por ele (a palavra cálculo), então se você puder me enviar em palavras gerais seu algoritmo de cálculo (de preferência) ou código no MathCad (se necessário, também usarei o Matcad).


Existem vários algoritmos. Encontrei no meu arquivo um cálculo do espectro de singularidade. É descrito conceitualmente em muitos livros, por exemplo, por Feder, Bozhokin e muitos outros. O número de iterações para uma amostra é bastante decente. Em particular, um processo iterativo de exponenciação é realizado para estimar o "movimento" contribuído por cada intervalo, revelando diferentes tipos de comportamento de sinal (por exemplo, intervalos "agora" com desvios maiores da tendência contribuem mais "movimento", etc.).

Você pode ler tudo, mas deixe-me lembrar a característica principal - o valor alfa, no qual F(alfa) atinge o máximo, é o índice Hurst generalizado (às vezes, o parâmetro skyline)


Cálculo para a amostra de 500 amostras. O índice Hurst generalizado é igual a 0,6.


E aqui está a própria série (até a linha vermelha vertical) para a qual o cálculo foi feito e o que aconteceu depois.



Eu não entrei em "negócios" (embora seja muito interessante) porque ainda não descobri algumas coisas, a saber, o método de remover as tendências locais. A utilização de métodos diferentes resulta em características diferentes da série. Outra peculiaridade é que requer amostras decentes.

a Rosh, solandr

Tenho uma pergunta para o futuro. Estou preocupado com o fato de que o Consultor Especialista estará "fora de ação" por um longo tempo objetivamente e, portanto, não estará engajado no processo de monitoramento das ordens atuais. Presumo que chamar o roteiro também não ajudará - o Consultor Especialista esperará até que o roteiro seja executado. Então me perguntei se eu deveria introduzir uma variável externa (ou global, o que é melhor?), por exemplo:

string externa SIGNAL_FORECAST



Quando recebo um sinal de que não há previsão por algum motivo, o Expert Advisor estabelece o valor apropriado deste parâmetro com a exigência para sua execução. Neste momento, algum indicador (não faz nenhuma previsão mas tem funções de cálculo) lê esta variável o tempo todo. Assim que recebe uma ordem de execução prevista, inicializa o cálculo, mas antes disso escreve "cálculo iniciado" na variável. Após a execução, "cálculo feito". O Consultor Especialista lê que o cálculo é feito ....

Tudo isso funcionará? Isto é, o consultor especializado será teoricamente aliviado do fardo de calcular tudo?

 
Oi Sergey. Parece-me que a melhor maneira de fazê-lo é na forma de pacote Expert+Expert ou Expert+Script. A segunda opção é preferível, penso eu.
O Expert Advisor realiza cálculos e salva a bandeira de sinal e parâmetros relevantes em um conjunto de variáveis globais no recebimento do sinal. O roteiro abre as ordens de acordo com as instruções recebidas e as implementa. O roteiro funciona em um loop infinito, mudando a freqüência deste loop em si, dependendo da situação. O Expert Advisor, naturalmente, corre após a conclusão dos cálculos, pela chegada de um tick.

O indicador não é adequado aqui porque (tanto quanto eu sei) seus cálculos são interrompidos quando um novo tick chega.

Em qualquer caso, decidi seguir exatamente este esquema.
 
Especialistas, scripts e indicadores são calculados em MT4 em paralelo, ou seja, ao mesmo tempo com o compartilhamento apropriado dos recursos de CPU disponíveis. Você pode organizar 2 Expert Advisors, um dos quais calculará por várias horas, e o outro será um executor, que através de variáveis globais do terminal receberá os resultados do ciclo anterior de cálculos do primeiro Expert Advisor e fará as operações comerciais necessárias. Ambos os Conselheiros Especializados trabalharão independentemente (em termos de execução) um do outro. O primeiro Expert Advisor será iniciado por algumas horas na chegada do primeiro tick, e o segundo será iniciado a cada novo tick, ou, por exemplo, com um período especificado (no caso de um loop infinito com a pausa necessária).
 
Oi Sergey. Parece-me que a melhor maneira de fazê-lo é na forma de pacote Expert+Expert ou Expert+Script. A segunda opção é preferível, penso eu. <br/ translate="no">.

A segunda variante tem o inconveniente de ter que passar este mesmo script manualmente para o gráfico a cada próximo lançamento do terminal. Vamos nos cansar disso muito rapidamente. É melhor usar a primeira variante. Você pode organizar exatamente o mesmo loop infinito na função start() como no roteiro.
 
para Yurixx, solandr

Muito obrigado pelo conselho. Não trabalho com MT por muito tempo, enquanto fazia pesquisas esqueci que os roteiros podem ser executados em loop e nem mesmo pensei em dois Expert Advisors.

Mas por outro lado você não pode colocar um testador em um astrolábio assim, certo? Embora, provavelmente não seja tão crucial.

Mais uma vez, obrigado. :о)))
 
E se você executar um roteiro a partir do indicador? Neste caso, a chegada de novos dados ao indicador ainda interromperá os cálculos?
 
2 grasn:
Ainda assim, seu tempo de cálculo é muito longo. Acho que nesta situação seria melhor fazê-los fora da MT (afinal de contas C é 17 vezes mais rápido que MQL4). Eu não sei se o Matcad pode gerar código C, mas isso seria útil. O resultado seria escrito em um arquivo e lido pelo Consultor Especialista. Este arquivo pode ser uma espécie de instrução passo a passo para o Expert Advisor (em geral, a transferência de dados para a MT não me interessou muito até agora, talvez haja outras formas). Tendo escrito a "instrução" para um determinado intervalo de histórico, você pode usar o testador. Mas será que o testador apoiará a combinação Expert Advisor+expert ou Expert Advisor+script? Suspeito que não será assim.
 
A propósito, tanto quanto eu entendo, os cálculos não são interrompidos agora. Ele é realizado sobre os valores dos dados no início do cálculo, após o qual o terminal salta para dados novos.
 
para Candidato

2 grasn:
Ainda assim, seu tempo de cálculo é muito longo. Acho que nesta situação seria melhor fazê-los fora da MT (afinal de contas C é 17 vezes mais rápido que MQL4). Eu não sei se o Matcad pode gerar código C, mas seria útil. O resultado seria escrito em um arquivo e lido pelo Consultor Especialista. Este arquivo pode ser uma espécie de instrução passo a passo para o Expert Advisor (em geral, a transferência de dados para a MT não me interessou muito até agora, talvez haja outras formas). Tendo escrito a "instrução" para um determinado intervalo de histórico, você pode usar o testador. Mas será que o testador apoiará a combinação Expert Advisor+expert ou Expert Advisor+script? Suspeito que não será assim.


Isso mesmo, o tempo de cálculo é bastante longo, eu vou lidar com isso. O MathCAD não pode gerar código C, mas o MathLab pode fazê-lo (se não estiverem mentindo, é claro :o) O teste em MT é necessário para obter resultados mais ou menos fundamentados do ponto de vista comercial (e não múltiplos testes de previsão no MathCAD, embora positivos). Depois de testar no MT, vou pensar no que fazer a seguir, incluindo mover os cálculos para um servidor separado, sobre o que já escrevi antes. Mas é como escaladores, quanto mais nós na corda, pior ela é.
Razão: