Indicadores: Indicador de ticks ZoomPrice - página 4

 
ascerdfg:

Descompactei o mql5.com/en/code/download/16753.zip e copiei com a estrutura de pastas intacta.

Ao compilar o ZoomPrice.mq5 no MetaEditor 5.0 build 2715, ele apresenta um erro:

Os arquivos zip na base de código não foram atualizados ao atualizar os códigos-fonte por um longo tempo. Faça o download de cada arquivo separadamente.

 

1. No arquivo Ticks.mqh, há este código

AmountTicks = this.GetFreshTicks(NewTicks, COPY_TICKS_INFO, (uint)MathMax((this.To - this.LastTime) >> 5, 2000)); // ~2000 ticks/minuto

Ao mesmo tempo, em GetFreshTicks, há uma verificação

if ((NewAmount > 0) && (this.Count < NewAmount))

Em outras palavras, se os últimos ticks forem lidos, GetFreshTicks não alterará o array NewTicks. Mas ele não é limpo, e o array antigo com valores antigos será processado. Como alternativa, isso pode ser resolvido movendo-se a declaração MqlTick NewTicks[];

    TICK Tick;

    int AmountTicks = 1;

    while (AmountTicks > 0)
    {
      MqlTick NewTicks[];
      AmountTicks = this.GetFreshTicks(NewTicks, COPY_TICKS_INFO, (uint)MathMax((this.To - this.LastTime) >> 5, 2000)); // ~2000 ticks/minuto


2. Alguns erros de digitação

Количество тиков в последенем запросе


Até o momento, devido a esse bug https://www.mql5.com/ru/forum/363680/page9#comment_21182494, não posso dizer se tudo está normal ou se algo mais não funciona.

 

Пока из-за этого бага https://www.mql5.com/ru/forum/363680/page9#comment_21182494 не могу сказать, всё ли дальше нормально или ещё что не работает.

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Símbolos personalizados. Erros, bugs, perguntas, sugestões.

fxsaber, 2020.07.01 17:34

Confirmo o erro em 2509.

Essa variante não parece falhar.

int size = CopyTicksRange(_Symbol, array, COPY_TICKS_ALL, cursor);

Talvez faça sentido mudar para CopyTicksRange.

 
traveller00:

Talvez faça sentido mudar para CopyTicksRange.

O indicador é antigo. Ele nem sequer tinha essa função naquela época. Para funcionar corretamente, é claro, você precisa fazer alterações.

 
traveller00:

Talvez faça sentido mudar para CopyTicksRange.

Essa parece ser uma opção funcional.


3. Há uma função void SetAutoScroll( void ). Se o gráfico rolar automaticamente para a borda direita, o tempo para ZoomTicks será calculado com base no tempo real atual por meio de this.Ticks.GetNowTime(). Mas os caracteres personalizados não geram novos ticks. Como resultado, From e To serão preenchidos com valores da hora atual, ele não pegará ticks para eles (não há novos ticks), a imagem dos ticks acabará mostrando o antigo, mas em this.SetTextCross ele assinará a hora atual.


4. Os ticks são solicitados a partir da borda esquerda do intervalo. Se o intervalo for 01:00:00:00-01:01:00:00, e o primeiro tique que entrar no intervalo for às 01:00:30, haverá um buraco na metade esquerda.

 
traveller00:

4. A solicitação de ticks vem da borda esquerda do intervalo. Se o intervalo for 01:00:00:00-01:01:00:00, e o primeiro tique que entrar no intervalo for 01:00:30, haverá um buraco na metade esquerda.

Isso estava originalmente lá. Eu não o excluí de propósito.

 
fxsaber:

Isso estava lá desde o início. Eu não governei de propósito.

Para que servia o buraco, se não é segredo?

 
traveller00:

Para que servia o buraco, se isso não é segredo?

Posso ver imediatamente que não havia nenhum tique à esquerda.

 
ascerdfg:

E estou recebendo os mesmos erros.

Ainda tenho uma versão funcional do indicador, ele ainda funciona para mim).

 
ZoomPrice