Bugs e sugestões para melhorar CopyTicks() e CopyTicksRange() após a construção de 1485. - página 3

 
MetaQuotes Software Corp.:
Obrigado pela mensagem, o bug foi corrigido - agora funcionará também em indicadores. Uma atualização será lançada em breve.
Por favor, me diga se a velocidade de obtenção dos ticks via CopyTicksRange() será aumentada?
 
Build 1491 - documentação lingüística em ME não atualizada. As informações sobre CopyTicksRange() só estão disponíveis através do website!
 
No testador, os carrapatos do "pacote" (tendo o mesmo tempo msec) no momento (build 1495) são dados um de cada vez. E o testador calcula cada um separadamente. Na realidade, este não pode ser o caso.
 

Acho que vim ao lugar certo. Caros membros do fórum, eu tenho lutado com este problema sozinho por muito tempo, mas parece que não consigo resolvê-lo. Espero que você possa ajudar.

A situação é a seguinte: corretor Finam (Whotrades), conta MMA. Trabalho com 26 títulos russos, ou seja, tenho 26 janelas abertas e tenho uma cópia do meu consultor especializado pendurada em cada janela. Eles estão usando a biblioteca C++ comum, que tem uma janela comum para gerenciar e exibir informações de depuração.

Alguns parâmetros estratégicos dependem diretamente da fita adesiva, por isso é muito importante que todos os carrapatos passem pelo algoritmo. Claro, foi uma surpresa saber que OnTick() não funciona em cada tic, e nem sempre, mesmo em um tic. Como resultado, cheguei à necessidade de usar as funções CopyTicks e CopyTicksRange por timer. Devido a grandes esforços (e não está escrito em nenhum lugar), descobri que a data/hora*1000 é exatamente o número de milissegundos desde 1970, mas não é essa a questão.
O resultado final do que temos agora é um bloco de código, que, no Timer, desde as 10 da manhã, começa a solicitar os últimos dados do tick.

O problema é que, por alguma razão, é importante que, no primeiro dia após o reinício da metatrader, para alguns títulos, os dados do tick cheguem apenas às 11 horas da manhã (mais ou menos), no dia seguinte - tudo é normal, começa às 10 horas da manhã. A lista desses títulos não é fixa de forma alguma, em alguns primeiros dias os carrapatos podem não vir para alguns títulos, em alguns dias - para outros.
Pensei que o problema era o caching dos carrapatos. Pensei que era um problema com o timing incorreto, mas isso acabou não sendo o caso. Além disso, parece que se CopyTicks(Range) não pudesse retornar os dados, eles poderiam retornar um erro (-1) e tudo faria sentido. Mas retorna 0, a matriz também é zero e GetLastError retorna ERR_SUCCESS. Ou seja, é como se esses carrapatos não existissem, o que é estranho, pois eles estão presentes na fita na janela.

Estou perdido. Espero que você possa me dizer o que fazer, ou pelo menos a direção na qual se mover.

Se você precisar fornecer o código, eu vou, com o próximo comentário, limpá-lo a partir dos comandos "extras" e postá-lo.

Obrigado!

 
antru:

Sim, um código é desejável. É uma conta real ou de demonstração? Qual é a construção do terminal?

Honestamente, não sei se alguém aqui trabalha com seu corretor. Se ninguém aqui reagir ao seu posto - escreva para o ServiceDesk, você pode se conectar diretamente ao seu posto. Eles também precisarão fornecer um código.

 
antru:
É melhor ir direto ao balcão de serviço com o código para reproduzi-lo.
 
Alexey Kozitsyn:

Sim, um código é desejável. É uma conta real ou de demonstração? Qual é a construção do terminal?

Honestamente, não sei se alguém aqui trabalha com seu corretor. Se ninguém aqui reagir ao seu posto - escreva para o ServiceDesk, você pode se conectar diretamente ao seu posto. Eles também precisarão fornecer um código.

A conta é real, última construção, 1525. Acho que aqui está o que fazer. Crie o código de tomada de carrapatos nus sem o algoritmo de estratégia. Execute-o. Se não funcionar, você deve ligar para a central de serviço. Se funcionar, talvez se deva procurar os erros em seu próprio código.

Obrigado por mencionar o balcão de atendimento, eu não sabia que era possível. Procurei no site das metaquotas, todos os contatos são números de telefone em chipre e porcelana, nem um único e-mail.

 
Andrey Khatimlianskii:
É melhor ir direto ao balcão de atendimento com o código para reproduzi-lo.
Obrigado!
 
antru:

A conta é real, a construção é a mais recente, 1525. Acho que isto é o que devemos fazer. Fazer um código de tomada de carrapato nu sem o algoritmo de estratégia. Execute-o. Se não funcionar, então leve-o para o balcão de serviço. Se funcionar, talvez se deva procurar os erros em seu próprio código.

Obrigado por mencionar o balcão de atendimento, eu não sabia que era possível. Procurei no site das metaquotas, todos os contatos são números de telefone em chipre e porcelana, nem um único e-mail.

Exatamente o que você precisa, sua estratégia, neste caso, só vai atrapalhar a identificação do problema. O que é necessário é um código de como você solicita os carrapatos.
 
antru:

Acho que vim ao lugar certo. Caros membros do fórum, eu tenho lutado com este problema sozinho por muito tempo, mas parece que não consigo resolvê-lo. Espero que você possa ajudar.

A situação é a seguinte: corretor Finam (Whotrades), conta MMA. Trabalho com 26 títulos russos, ou seja, tenho 26 janelas abertas e tenho uma cópia do meu consultor especializado pendurada em cada janela. Eles estão usando a biblioteca C++ comum, que tem uma janela comum para gerenciar e exibir informações de depuração.

Alguns parâmetros estratégicos dependem diretamente da fita adesiva, por isso é muito importante que todos os carrapatos passem pelo algoritmo. Claro, foi uma surpresa saber que OnTick() não funciona em cada tic, e nem sempre, mesmo em um tic. Como resultado, cheguei à necessidade de usar as funções CopyTicks e CopyTicksRange por timer. Devido a grandes esforços (e não está escrito em nenhum lugar), descobri que a data/hora*1000 é exatamente o número de milissegundos desde 1970, mas não é essa a questão.
O resultado final do que temos agora é um bloco de código, que, no Timer, desde as 10 da manhã, começa a solicitar os últimos dados do tick.

O problema é que, por alguma razão, é importante que, no primeiro dia após o reinício da metatrader, para alguns títulos, os dados do tick cheguem apenas às 11 horas da manhã (mais ou menos), no dia seguinte - tudo é normal, começa às 10 horas da manhã. A lista desses títulos não é fixa de forma alguma, em alguns primeiros dias os tiquetaques podem não vir para alguns títulos, em outros dias - para outros.
Pensei que o problema era o caching dos carrapatos. Pensei que era um problema com o timing incorreto, mas isso acabou não sendo o caso. Além disso, parece que se CopyTicks(Range) não pudesse retornar os dados, eles poderiam retornar um erro (-1) e tudo faria sentido. Mas retorna 0, a matriz também é zero e GetLastError retorna ERR_SUCCESS. Ou seja, é como se esses carrapatos não existissem, o que é estranho, pois eles estão presentes na fita na janela.

Estou perdido. Espero que você possa me dizer o que fazer, ou pelo menos a direção na qual se mover.

Se você precisar fornecer o código, eu vou, com o próximo comentário, limpá-lo a partir dos comandos "extras" e postá-lo.

Obrigado!

Tente usar todas as formas possíveis de obter carrapatos e OnTisk e CopyTicks, e depois compare os resultados e use o mais adequado.