1. existe uma implementação pronta de um segmento que termina com uma seta? (há exemplos em C++ http://www.cyberforum.ru/qt/thread1534114.html e não é um problema portar, mas talvez haja uma implementação pronta e eu não a tenha encontrado ;) )
2. a alteração do gráfico apenas limpa toda a tela? - Se sim, é muito inconveniente; se não, ainda não descobri, preciso de um exemplo
1. existe uma implementação pronta de um segmento que termina com uma seta? (há exemplos em C++ http://www.cyberforum.ru/qt/thread1534114.html e não é um problema portar, mas talvez haja uma implementação pronta e eu não a tenha encontrado ;) )
2. a alteração do gráfico apenas limpa toda a tela? - Se sim, é muito inconveniente; se não, ainda não descobri, preciso de um exemplo
Obrigado, Igor.
1. Não, ainda não o implementei. Com linhas não suavizadas, é muito fácil fazer isso. Há muitas coisas que ainda não implementei e muitas coisas que ainda não publiquei.
2. Não, é claro que não. Por que fazer isso. Em meus programas, quando altero o gráfico, forço o redesenho de tudo quando as coordenadas estão vinculadas ao tempo e ao preço, e não aos pixels da tela. Como poderia ser diferente quando o preço e o tempo mudam as coordenadas? .....
Na verdade, a principal vantagem dessa biblioteca é sua velocidade. Se você tentar fazer tudo o que faço no iCanvas no CCanvas, a velocidade cairá significativamente. O principal motivo é que você terá de usar funções assíncronas extremamente lentas, como ChartXYToTimePrice(), que leva cerca de 5.000 microssegundos. Esse é um tempo incrivelmente longo.
O principal objetivo do iCanvas era apenas fugir dessas funções muito caras.
Observe que é melhor não usar a função Line (Linha) no CCanvas quando as coordenadas de dois pontos forem formadas de forma não garantida na tela. Há um erro grave nesse caso.
#include <Canvas\iCanvas.mqh> //https://www.mql5.com/pt/code/22164voidOnStart() {
Canvas.Erase();
ulong t=GetMicrosecondCount();
Canvas.LineD(-2000000000.0,-2000000000.0,800.0,800.0,0xFF0000FF);
t=GetMicrosecondCount()-t;
Print("O tempo de execução do LineD é " + string(t)+" microssegundos.");
Canvas.Update();
t=GetMicrosecondCount();
Canvas.Line(-2000000000,-2000000000,800,800,0xFFFF0000);
t=GetMicrosecondCount()-t;
Print("Tempo de execução da linha - " + string(t)+" microssegundos.");
Canvas.Update();
Sleep(3000);
}
resultado da execução:
2020.02.0719:08:28.030 TestLine (EURUSD,M1) Время выполнения LineD - 4 микросекунд
2020.02.0719:08:29.381 TestLine (EURUSD,M1) Время выполнения Line - 1349411 микросекунд
CSetFileReader Class to provide simple reading mechanism from MetaTrader set files. Trade Copier - Open Source - Multiplatform - Transmitter Side Trade Transmitter will Transmit Trades from MT5 Demo or Real accounts using CSV Files. Each trade request created manually or by other EAs on MT5 terminal will be...
Corrigi isso quando descobri que havia um congelamento por causa disso. Mas não estava piscando, apenas o iCanvas parou de funcionar.
Talvez fosse diferente em situações diferentes.) Eu estava recriando a tela e ela parecia estar piscando. Eu queria prestar atenção nessa linha, mas não tive tempo.)
As causas da intermitência foram identificadas?
Que piscadas?
Não estou piscando.
O que é piscar?
Não estou piscando.
Testei a biblioteca - conveniente e funcional!
Duas perguntas:
1. existe uma implementação pronta de um segmento que termina com uma seta? (há exemplos em C++ http://www.cyberforum.ru/qt/thread1534114.html e não é um problema portar, mas talvez haja uma implementação pronta e eu não a tenha encontrado ;) )
2. a alteração do gráfico apenas limpa toda a tela? - Se sim, é muito inconveniente; se não, ainda não descobri, preciso de um exemplo
Acho que é a linha 349, recriar tela, que agora está comentada
Corrigi isso quando descobri que estava causando um congelamento. Mas não estava piscando, apenas o iCanvas parou de funcionar.
Corrigido um pequeno erro na versão 1.34 que fazia com que o exemplo do seno não funcionasse.
Testei a biblioteca - conveniente e funcional!
duas perguntas:
1. existe uma implementação pronta de um segmento que termina com uma seta? (há exemplos em C++ http://www.cyberforum.ru/qt/thread1534114.html e não é um problema portar, mas talvez haja uma implementação pronta e eu não a tenha encontrado ;) )
2. a alteração do gráfico apenas limpa toda a tela? - Se sim, é muito inconveniente; se não, ainda não descobri, preciso de um exemplo
Obrigado, Igor.
1. Não, ainda não o implementei. Com linhas não suavizadas, é muito fácil fazer isso. Há muitas coisas que ainda não implementei e muitas coisas que ainda não publiquei.
2. Não, é claro que não. Por que fazer isso. Em meus programas, quando altero o gráfico, forço o redesenho de tudo quando as coordenadas estão vinculadas ao tempo e ao preço, e não aos pixels da tela. Como poderia ser diferente quando o preço e o tempo mudam as coordenadas? .....
Na verdade, a principal vantagem dessa biblioteca é sua velocidade.
Se você tentar fazer tudo o que faço no iCanvas no CCanvas, a velocidade cairá significativamente.
O principal motivo é que você terá de usar funções assíncronas extremamente lentas, como ChartXYToTimePrice(), que leva cerca de 5.000 microssegundos. Esse é um tempo incrivelmente longo.
O principal objetivo do iCanvas era apenas fugir dessas funções muito caras.
https://www.mql5.com/ru/forum/1111/page2099#comment_6310826
Observe que é melhor não usar a função Line (Linha) no CCanvas quando as coordenadas de dois pontos forem formadas de forma não garantida na tela. Há um erro grave nesse caso.
resultado da execução:
Última versão 1.35
https://www.mql5.com/pt/code/27733Corrigi isso quando descobri que havia um congelamento por causa disso. Mas não estava piscando, apenas o iCanvas parou de funcionar.