Erros, bugs, perguntas - página 2986

 
Andrey Dik:

e, consequentemente, surge outra questão: devo verificar a estrutura do MqlTick para valores correctos depois de o preencher com a função SymbolInfoTick ()? - Porque os valores de Ask e Bid podem ser quaisquer, incluindo negativos. Ou é suficiente para se tornar realidade a partir de SymbolInfoTick ()?

Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos

Novo MetaTrader 5 construir 2755: Melhoramentos na janela de cotações e depuração

fxsaber, 2021.02.15 03:02

O preço zero COPY_TICKS_INFO-tic é um erro?

void OnStart()
{
  MqlTick Ticks[];
  
  CopyTicksRange("GBPUSD", Ticks, COPY_TICKS_INFO, D'2020.10.02 23:54:54' * 1000, D'2020.10.05 00:07:01' * 1000);
    
  ArrayPrint(Ticks);
  Print(AccountInfoString(ACCOUNT_SERVER));
}


Resultado.

                         [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
        [0] 2020.10.02 23:54:54 1.29378 1.29385 0.0000        0 1601682894091       4       0.00000
        [1] 2020.10.02 23:54:54 1.29377 1.29383 0.0000        0 1601682894404     134       0.00000
        [2] 2020.10.02 23:54:54 1.29375 1.29379 0.0000        0 1601682894471     134       0.00000
        [3] 2020.10.02 23:54:55 1.29375 1.29381 0.0000        0 1601682895248       4       0.00000
        [4] 2020.10.05 00:06:14 0.00000 1.29313 0.0000        0 1601856374091       6       0.00000
        [5] 2020.10.05 00:07:00 1.29271 1.29332 0.0000        0 1601856420497     134       0.00000
        [6] 2020.10.05 00:07:00 1.29271 1.29331 0.0000        0 1601856420497       4       0.00000
        RannForex-Server
 
inwinterborn:

Pode dizer-me porque é que os breakpoints passam para a função seguinte durante a depuração, tanto na história como online (Ctrl+F5, F5)?

Verifiquei-o várias vezes. Todas as explicações estão nas imagens anexas.

Isto é um insecto?


Explicação:

1. Eu defino manualmente 2 pontos de paragem: 1) Série.mqh linha 81; 2) TimeSeries.mqh linha 48
2. Passo para o ficheiro ExpertMACD.mq5
3. Iniciar a depuração em dados históricos ou reais
4. Tenho a paragem do depurador no ficheiro Series.mqh na linha 94, que não tem ponto de ruptura. A linha é o início da função seguinte após o meu ponto de quebra manual, que a partir da linha 81 desapareceu ou se deslocou.
5. Verifico o meu segundo ponto de paragem manual em TimeSeries.mqh, e vejo que também ele passou da linha 48 para a linha 63, novamente a função seguinte após o meu anterior ponto de paragem.


Pode dizer-me, por favor, qual poderá ser o problema?

 
inwinterborn:


Explicação:

1. Eu defino manualmente 2 pontos de paragem: 1) Série.mqh linha 81; 2) TimeSeries.mqh linha 48
2. Passo para o ficheiro ExpertMACD.mq5
3. Iniciar a depuração em dados históricos ou reais
4. Tenho a paragem do depurador no ficheiro Series.mqh na linha 94, que não tem ponto de paragem. A linha é o início da função seguinte após o meu ponto de quebra manual, que a partir da linha 81 desapareceu ou se deslocou.
5. Verifico o meu segundo ponto de paragem manual em TimeSeries.mqh, e vejo que também ele passou da linha 48 para a linha 63, novamente a função seguinte após o meu anterior ponto de paragem.


Pode dizer-me, por favor, qual poderá ser o problema?

Verifique as definições no editor - desligue a optimização:

 
Vladimir Karputov:

Verificar as definições no editor - desactivar a optimização:

Obrigado pela resposta, mas não ajuda.

A opção foi de facto activada.

Deficiência. Repetindo-o. O resultado é o mesmo que o acima descrito.

Terminal fechado e editor com nova configuração.

Reabriu-a novamente. Repito. O resultado é o mesmo.

Que mais poderia ser o problema?


 
inwinterborn:

Obrigado pela resposta, mas não ajuda.

A opção foi de facto activada.

Desactivou-o. Repetindo-o. O resultado é o mesmo que o acima descrito.

Terminal fechado e editor com nova configuração.

Reabriu-a novamente. Repito. O resultado é o mesmo.

Que mais poderia ser o problema?


Experimente a versão 2833 - talvez algo tenha mudado...

 
Vladimir Karputov:

Experimente a versão 2833 - talvez algo tenha mudado ...

Houve uma actualização automática para 2834.

O resultado mantém-se inalterado. Os pontos de ruptura estão a mudar.

 
fxsaber:

O seu código não verifica o valor de retorno da função, pelo que é impossível julgar sobre a exactidão do conteúdo da estrutura do Ticks.

E se não houver erros ao chamar oCopyTicksRange, então devemos considerar os valores zero da estrutura como normais, caso contrário em quem podemos confiar? Que preços podem ser considerados normais (queremos dizer mesmo que não 0,0 preços, mas !quaisquer! preços)? Quem reclamar em caso de preços errados, o Sportlotto? O corretor irá culpar a MQ e a MQ irá culpar o corretor. A questão é mais grave do que possa parecer.

 
Andrey Dik:

O seu código não verifica o valor de retorno da função, pelo que é impossível julgar sobre a exactidão do conteúdo da estrutura do Ticks.

E se não houver erros ao chamar oCopyTicksRange, então devemos considerar os valores zero da estrutura como normais, caso contrário em quem podemos confiar? Que preços podem ser considerados normais (queremos dizer mesmo que não 0,0 preços, mas !quaisquer! preços)? Quem reclamar em caso de preços errados, o Sportlotto? O corretor culpará os MQs e os MQs culparão o corretor. A questão é mais grave do que possa parecer.

O código mostra os preços que podem ser. Olhei para os meus próprios códigos. Não faça estes e outros controlos estúpidos. Fizeram definitivamente mais de um milhão de transacções em vários locais só no MT5. A questão está muito longe de ser prática.

 
fxsaber:

O código mostra quais podem ser os preços. Olhei para os meus próprios códigos. Não faça estes e outros controlos estúpidos. Fizeram definitivamente mais de um milhão de transacções em vários locais só no MT5. A questão está muito longe de ser prática.

E então? É esse o problema, os preços podem ser qualquer coisa, por isso, quais achas que estão certos? Não faz estes e outros controlos parvos, mas faz controlos igualmente parvos, mas muito mais caros de 0,0 valores?

 
inwinterborn:

Pode dizer-me porque é que os breakpoints passam para a função seguinte ao depurar, tanto na história como online (Ctrl+F5, F5)?

Verifiquei-o várias vezes. Todas as explicações estão nas imagens anexas.

Isto é um insecto?

Oponto de ruptura é deslocado - como em CSeries::BufferResize expert nunca entra de todo.