Como fazer os objetos desenhados por XY mudarem suavemente (MT4 vs MT5) - página 10

 
Vitaliy Kuznetsov:

Obrigada, bom modelo, ele virá a calhar. Muito e interessante aprender com seu trabalho.

Dmitry, eu ainda o considero um programador capaz de demonstrar alta habilidade.

E se houver sugestões de código, pensamentos construtivos, com prazer (e não apenas eu) adotariam sua experiência.

P.S. É melhor ver o código uma vez, do que ouvir falar dele 100 vezes.

Sim, alinhados, em fila, segurando à distância de um braço. Código para quê?

 
Nikolai Semko:

Duvido que isso possa ser feito em freelancer. Aqueles que podem fazer isso estão sobrecarregados de trabalho até os ouvidos, e aqueles que estão livres provavelmente são menos versados em kanvas do que você.

É por isso que eu não gosto de objetos, pois eles têm sua própria vida em seus fluxos, sobre os quais você não tem controle. Com kanvas, pelo contrário, tudo está em suas mãos. É por isso que tenho que escrever um código adicional para que o testador com tela não abrande ao calcular quadros a cada tick mais de 30 vezes por segundo.
Além disso, trabalhar com TFs e carregamento de histórico é muito pouco razoável e ineficiente no MT5. Somente M1 são carregados, e em uma forma desembalada, enquanto outros são calculados somente com M1. Portanto, se você habilitar o MN1 pela primeira vez, 100 barras demorarão mais de 10 segundos para carregar. Eu mesmo tive que escrever a carga da barra e converter M1 em formato embalado e ter todos os TFs calculados em memória. Todos os meus TFs junto com a M1 ocupam uma fração do espaço na RAM que apenas a M1 normal na MT5.

Isto é uma penitência, ou um deleite?

 
Алексей Тарабанов:

É arrependimento, ou arrebatamento?

Veja, é o contrário. Você cria um programa - é um mundo que vive de acordo com suas leis. Você faz algo orientado ao objeto: você desova algo como uma ameba, ou mais frio, vivendo por conta própria.

 
Алексей Тарабанов:

Isto é arrependimento, ou arrebatamento?

Isto é um absurdo baseado em um ego inadequado. E muito longe das realidades do trabalho em MT5.

 
Nikolai Semko:

Bem primeiro, conserte seu indicador com objetos de acordo com este algoritmo que eu lhe dei.

Nikolay, se não for difícil, o que você pensa sobre o fato de que o indicador fixo se desloca com o tempo no testador. Se você tentar mudar a escala com o mouse, ela é fixa.

É o mesmo com o kanvas. Ou o gráfico não é deslocado ou é deslocado incorretamente (após algum tempo), até que você altere manualmente a escala do gráfico. Os próprios cálculos e alertas estão corretos, mas os gráficos...

Certamente deve haver uma solução, o que eu não consigo ver. Ou talvez haja algo errado com o testador?

 
Vitaliy Kuznetsov:

Nikolai, se você não se importa, o que você pensa sobre o indicador corrigido mudando no testador ao longo do tempo. Se você tentar mudar a escala com o mouse, ela é corrigida.

O mesmo se passa com o kanvas. Ou o gráfico não é deslocado ou é deslocado incorretamente (após algum tempo), até que você altere manualmente a escala do gráfico. Os próprios cálculos e alertas estão corretos, mas os gráficos...

Certamente deve haver uma solução, o que eu não consigo ver. Ou talvez haja algo errado no testador?

Eu acrescento uma linha no OnChartEvent

if (id == CHARTEVENT_CHART_CHANGE ) Draw (); 
monitoramento de um evento de mudança de gráfico (uma nova barra também é um evento de mudança de gráfico)
  • Adiciono à OnCalculate para o modo de teste uma linha para redesenhar, por exemplo, quando uma nova barra chega, pois a OnChartEvent não funciona no modo de teste:
     if(rate_total != prev_calculated ) if (Canvas.tester) {ChartChanged (); Draw ();}
  • Se não funcionar no MT4, significa que há algo errado com o evento CHARTEVENT_CHART_CHANGE. Não posso verificar isso agora, ainda não há citações.



     
    Nikolai Semko:

    Obrigado pela dica. Ainda não cheguei a esse ponto, vou tentar hoje

    Razão: