Erros, bugs, perguntas - página 2976

 
Nikolai Semko:
De que inconveniente está a falar?
Sobre a intensidade dos recursos?
Esta foi uma afirmação enganosa.
Comentar consome o mesmo número de recursos.
São necessários 1-3 milissegundos para gerar e exibir uma tela com texto para toda a janela.
Em MT5, a produção de comentários demora um pouco mais tempo. Se vai actualizar a informação de texto 30 vezes por segundo, não verá qualquer atraso.

Não investiguei em detalhe porque é que o Kanvas pode ser lento, mas penso que é pela mesma razão... Os pixels da matriz não podem ser alterados selectivamente e receber um comando de redesenho. Primeiro faz-se alterações à matriz, e depois tem de ResourceCreate. Que copia os pixels um a um e depois, de forma semelhante, apresenta-os um a um e depois actualiza o gráfico (ChartRedraw) um pouco mais. Quantas operações desnecessárias... Isto irá, em qualquer caso, matar a carga do processador quando este estiver ocupado com o processamento de dados úteis. Enquanto que as etiquetas levam pelo menos menos menos pixels (e portanto produzem mais rapidamente). E depois, o seu mecanismo de saída está inteiramente dentro do gráfico (não há necessidade de passar uma matriz). Embora não estejatotalmente seguro do seu algoritmo, penso que são mais rápidos. Eu fazia um painel de saída de texto baseado numa tela. Ao testar visualmente o Expert Advisor com tal painel no testador, não fiquei muito impressionado com o resultado. Para além da própria carga da EA, o redesenho do painel foi bastante aborrecido. O painel está constantemente a ser actualizado(ResourceCreate -ChartRedraw) em cada tick. Embora não tenha notado tais lentidões com etiquetas.

 

Ou sou um tolo ou os esquis não se estão a mexer? mt4 build 1320

double LotStep = SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);
double Lot=0.7;
PrintFormat("LotStep %f, lot %f, %f, %f %f",LotStep,Lot,Lot/LotStep,MathFloor(Lot/LotStep),(int)double(Lot/LotStep));
//Print
//2021.03.07 23:42:46.507	2021.02.25 07:36:40  EA_CCIcross_v1.0 AUDJPY,M5: LotStep 0.010000, lot 0.070000, 7.000000, 6.000000 6.000000

p/s/ Eu compreendo que 7 é 6,9999 mas porquê então 0,7 dividido por 0,1 Resultados de impressão como 7,000 e não 6,9999, enganoso.
 
Mihail Matkovskij:

Ainda não percebi em detalhe porque é que o Kanvas pode ser lento, mas penso que é pela mesma razão... Os pixéis da matriz não podem ser alterados selectivamente e receber um comando de redesenho. Primeiro faz-se alterações à matriz, e depois tem de ResourceCreate. Que copia os pixels um a um e depois, de forma semelhante, apresenta-os um a um e depois actualiza o gráfico (ChartRedraw) um pouco mais. Quantas operações desnecessárias... Isto irá, em qualquer caso, matar a carga da CPU, quando esta estiver ocupada com o processamento de dados úteis. Enquanto que as etiquetas levam pelo menos menos menos pixels (e portanto produzem mais rapidamente). E depois, o seu mecanismo de saída está inteiramente dentro do gráfico (não há necessidade de passar uma matriz). Embora não estejatotalmente seguro do seu algoritmo, penso que são mais rápidos. Eu costumava fazer um painel de saída de texto com base numa tela. Ao testar visualmente o Expert Advisor com tal painel no testador, não fiquei muito impressionado com o resultado. Para além da própria carga da EA, o redesenho do painel foi bastante aborrecido. O painel está constantemente a ser actualizado(ResourceCreate -ChartRedraw) em cada tick. Ao mesmo tempo, nunca tinha reparado em tão lentas paragens com etiquetas.

É apenas a sua imaginação.
Claro que nada é grátis, mas a kanvas é a forma mais rápida de exibir texto em MT5, porque a kanvas é uma base e os comentários e etiquetas são secundários à kanvas.
Utilize as impressoras sem impressora se é tão ganancioso pelos seus recursos CPU...
 
Mihail Matkovskij :

Ainda não percebi em detalhe porque é que o Kanvas pode ser lento, mas penso que é pela mesma razão... Os pixéis da matriz não podem ser alterados selectivamente e receber um comando de redesenho. Primeiro faz-se alterações à matriz, e depois tem de ResourceCreate. Que copia os pixels um a um e depois, de forma semelhante, apresenta-os um a um e depois actualiza o gráfico (ChartRedraw) um pouco mais. Quantas operações desnecessárias... Isto irá, em qualquer caso, matar a carga do processador quando este estiver ocupado com o processamento de dados úteis. Enquanto que as etiquetas levam pelo menos menos menos pixels (e portanto produzem mais rapidamente). E depois, o seu mecanismo de saída está completamente dentro do gráfico (não há necessidade de passar uma matriz ). Embora não esteja totalmente seguro do seu algoritmo, penso que são mais rápidos. Eu fazia um painel de saída de texto baseado numa tela. Ao testar visualmente a EA com tal painel no testador, não fiquei muito impressionado com o resultado. Para além da própria carga da EA, o redesenho do painel foi bastante aborrecido. Há uma actualização constante ( ResourceCreate - ChartRedraw ) em cada tick. Não reparei em tais lentidões com etiquetas.

Por favor, não fale sobre o que não sabe. @Nikolai Semko tem toda a razão, e Canvas funciona rápido e sem quaisquer problemas ou falhas.
 

@Ilyas

Bug de compilador ? Construir 2817.

   const ushort AN_USHORT_CONSTANT = 1;
//---
   ushort avariable = 1;

   switch(avariable)
     {
      case AN_USHORT_CONSTANT :
         Print("Compiler bug ?");
         break;
     }


 
Nikolai Semko:
Parece-lhe apenas a si.
Obviamente, nada é grátis, mas a kanvas é a forma mais rápida de exibir texto em MT5, uma vez que a kanvas é a base, e os comentários e etiquetas são secundários à kanvas.
Use o primer se é tão ganancioso pelos recursos da sua CPU...

Como sabia que as etiquetas são baseadas no canva, se o canva em si é um suplemento de OBJ_BITMAP_LABEL e a etiqueta é OBJ_LABEL?

Enquanto tenho conversado aqui no fórum, já esbocei o painel de saída nas etiquetas, com um determinado número de linhas e colunas. E para a tela tenho outras tarefas, nas minhas outras aplicações. E também aí funciona muito bem.

Alain Verleyen:
Por favor, não fale sobre o que não sabe. @Nikolai Semko tem toda a razão, e Canvas funciona rapidamente e sem quaisquer problemas ou falhas.

Então, provavelmente sabe tudo? Então talvez partilhe os seus conhecimentos ou links onde possa ler sobre gráficos no MetaTrader para que eu também saiba o que você sabe? :)

 
Alain Verleyen:

@Ilyas

Bug de compilador ? Construir 2817.

Na MQL, const não é de todo const. Na verdade, const sópode serescrita através de uma macro

//const ushort AN_USHORT_CONSTANT      = 1; //(*)
#define         AN_USHORT_CONSTANT ushort(1) //(**)
void main()
{
        int i[AN_USHORT_CONSTANT];      //(1) нормально
        ushort avariable = 1;
        switch(avariable) {
        case AN_USHORT_CONSTANT:        //(2) нормально
                break;
        }
}
void f( int = AN_USHORT_CONSTANT ) {}   //(3) нормально
enum { e = AN_USHORT_CONSTANT };        //(4) нормально    
 
A100 :

Na MQL, const não é de todo const. Na realidade const const só pode ser escrita através de uma macro

Isso é um erro :-D
 
Alain Verleyen:
Sim, então é um erro :-D

Note-se que isto não é num caso, mas em todos (1) (2) (3) (4) é concebido desta forma: com (*) haverá um erro, mas com (**) está OK. Isto é, faltam constantes como uma entidade

 
A100 :

Note-se que isto não é num caso, mas em todos (1) (2) (3) (4) é concebido desta forma: com (*) haverá um erro, mas com (**) está OK. Isto é, faltam constantes como uma entidade

Eu sei. É por isso que estou a pedir aos programadores que o consertem.
Razão: