Erros, bugs, perguntas - página 2190

 
Alexey Viktorov:

Após três minutos de experimentação, cheguei à conclusão de que o deslocamento é de


e não a partir da posição actual.

Então? O número de barras visíveis está a mudar. Seria melhor verificar quando o gráfico está em movimento com o rato. Pode apanhá-lo. E se houver uma mudança no gráfico com acção do rato, então não é uma função.
 
Artyom Trishkin:
Então? O número de barras visíveis está a mudar. Seria melhor verificar quando o gráfico é movido com o rato. Pode apanhá-lo. Se houver um deslocamento de um gráfico com acção do rato, então não é um trabalho funcional.

Não falei de uma verificação de tempo de execução. Se deslocar manualmente o gráfico para a direita por 100 barras e depois tentar deslocá-lo mais 10 barras para a direita, o desvio será definido para 10 a partir da marca mostrada na imagem. De facto, neste exemplo, a mudança não acontecerá para a direita por 10, mas para a esquerda por 90.

Quanto à verificação... de que serve verificar algo que não funciona como esperado? Mais precisamente escrito não como esperado. Para mover o gráfico mais de uma vez, a compensação deve ser feita a partir de CHART_CURRENT_POS, e no exemplo foi CHART_END.

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

Erros, bugs, perguntas

Aleksey Vyazmikin, 2018.04.12 15:43

Se chamar o guião frequentemente - vez após vez após execução, o offset do gráfico deixa de funcionar, ou seja, os comandos para esta acção são saltados

   long handle=ChartID(); 
   if(handle>0) // если получилось, дополнительно настроим 
     { 
      ChartNavigate(handle,CHART_END,-2000); 
     } 

Daí o problema.

 
Alexey Viktorov:

Não falei de uma verificação de tempo de execução. Se deslocar manualmente o gráfico para a direita por 100 barras e depois tentar deslocá-lo mais 10 barras para a direita, o desvio será definido para 10 a partir da marca mostrada na imagem. De facto, neste exemplo, a mudança não acontecerá para a direita por 10, mas para a esquerda por 90.

Quanto à verificação... de que serve verificar algo que não funciona como esperado? Mais precisamente escrito não como esperado. Para mover o gráfico mais do que uma vez, temos de compensar a partir de CHART_CURRENT_POS e no exemplo, a partir de CHART_END.


Daí o problema.

Não li o código. Talvez necessite dela dessa forma.

O que estou a dizer é que a função de offset do gráfico é assíncrona, o que significa que quando devolve o sucesso da execução, não se trata do offset do gráfico, mas do sucesso de colocar tal ordem na fila de eventos do gráfico. E isto não é a mesma coisa - sabe disso.

Portanto, com base nisso, estou a falar de apanhar o evento da execução do comando de mudança de gráfico.

Quem me dera ter tempo para experimentar... Mas, infelizmente...

 

O perfilador não mostra assinaturas de funções, pelo que não se pode dizer imediatamente qual é a função sobrecarregada


Isto é, a lista é preenchida com __FUNÇÃO__, enquanto eu gostaria de __FUNSÃO__.

 

Ajuda a encontrar o post do programador onde o código fonte ArrayResize foi afixado. Googling "site:mql5.com/pt/forum ArrayResize+reserve" não ajuda.

Lembro-me de que havia um código fonte. Nele se pode ver imediatamente a lógica de implementação do parâmetro de reserva.

 
fxsaber:

Ajuda a encontrar o post do programador onde o código fonte ArrayResize foi afixado. Googling "site:mql5.com/pt/forum ArrayResize+reserve" não ajuda.

Lembro-me de que havia um código fonte. Pode-se ver imediatamente a lógica por detrás da implementação do parâmetro de reserva.

O código fonte ou pseudo-código? Estas são coisas diametralmente diferentes.

 
Artyom Trishkin:

Se confiar apenas no facto de um offset, pode deslocar o gráfico à mão - isso é um buraco na lógica...

Tem de verificar o offset à barra calculada, aparentemente, e não apenas o offset. Só precisa de descobrir como implementá-la correctamente...

Alexey Viktorov:

Eu não falei em verificar a execução. Se deslocar manualmente o gráfico para a direita por 100 barras e depois tentar deslocar mais 10 e também para a direita com o guião, o desvio será definido para 10 a partir da marca indicada no instantâneo. De facto, neste exemplo, a mudança não acontecerá para a direita por 10, mas para a esquerda por 90.

Quanto à verificação... de que serve verificar algo que não funciona como esperado? Mais precisamente escrito não como esperado. Para mover o gráfico mais de uma vez, temos de compensar a partir de CHART_CURRENT_POS e no exemplo temos CHART_END.


Daí o problema.

Preciso de CHART_END, porque é suposto fazermos a mudança no laço por datas, e é mais conveniente procurar datas do início ou do fim dos dados, do que do meio...

 
Sergey Dzyublik:

Código fonte, ou pseudo-código? Estas são coisas radicalmente diferentes.

Penso que o código fonte foi directamente afixado. Mas mesmo que haja um pseudo-código, e será útil.

 
Aleksey Vyazmikin:

Tem de verificar o offset à barra calculada, aparentemente, e não apenas o offset. Só preciso de descobrir como implementá-la correctamente...

Preciso de CHART_END, porque é suposto fazer uma compensação no ciclo por datas, e é mais conveniente procurar datas do início ou do fim dos dados, do que do meio...

Portanto, não há qualquer problema. O turno só será imperceptível se se tentar mudar pelo mesmo número de barras 2 ou mais vezes com um período inalterado.

Espero não me ter esquecido de desactivar a mudança automática do gráfico.

ChartSetInteger(0, CHART_AUTOSCROLL, 0, false);
 
Alexey Viktorov:

Portanto, não há qualquer problema. O turno só será imperceptível se se tentar mudar pelo mesmo número de barras 2 ou mais vezes com o mesmo período.

Espero não me ter esquecido de desactivar o autoskill?

O autoscroll, é claro, está desactivado.