Erros, bugs, perguntas - página 2266

 
fxsaber:
Então, será que resolvemos o problema dos "quadrados"?

Claro que, se utilizar uma única tela não escalável, simplesmente não há nenhuma.

Quero publicar em KB uma classe iCanvas simples, que herda a classe CCanvas, que cria uma tela inteira quando declarada por defeito e depois altera-a automaticamente se o tamanho da janela mudar.

Haverá também algumas características adicionais sob a forma de desenhos em tela, não por coordenadas x mas por preço, número de barras ou tempo. Isto é, acrescentaremos funções X(datatime T), X(barra dupla), Y(preço duplo).
Para que a kanvas não pareça tão estressante para muitas pessoas.

 
Nikolai Semko:

Claro que, se utilizar um único Kanvas não escalado, eles simplesmente não estão lá.

Sempre tive um kanvas e o quadrado vermelho continuava a aparecer. Lutei durante muito tempo para compreender as razões, mas nunca consegui chegar a esse ponto.

 
fxsaber:

Sempre tive um kanvas e o quadrado vermelho continuava a aparecer. Lutei durante muito tempo para compreender as razões, mas nunca consegui chegar a esse ponto.

Se redimensionar kanvas, ou seja, abri-lo novamente ou utilizar a função Redimensionar, deve utilizar kanvas para toda a janela para evitar esses quadrados vermelhos.

#include <Canvas\Canvas2.mqh>

int OnStart(void)
  {
    int Width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS);
    int Height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS);
    CCanvas canvas;
    if(!canvas.CreateBitmapLabel("SampleCanvas",0,0,Width,Height,COLOR_FORMAT_ARGB_NORMALIZE)) Print("Error creating canvas: ",GetLastError());
  ....
  }

Lembre-se também que a função Apagar é muito rápida - o FullHD de ecrã inteiro demorará ~0,5 milissegundos.

E actualizar mais lentamente ~5-7 milissegundos em ecrã inteiro FullHD.
Sim - esta opção é mais dispendiosa, uma vez que o Update kanvas tamanho de, digamos, 500x200 demorará ~0,5 milissegundos.

Portanto, é uma questão de conveniência.

Pessoalmente, quase sempre uso agora kanvas de ecrã inteiro, uma vez que tenho uma margem de 200 fps com Update = 5 milisegundos.

 

Existe alguma forma de resolver isto até à próxima construção?

Quando mudo para outra conta, o gráfico de caracteres personalizado perde barras - "À espera de actualização". Os bares não podem ser solicitados. Ao mesmo tempo, faz tic-tac - sem problemas.

Depois de reiniciar o Terminal, é claro, as barras na tabela estão disponíveis.

Gostaria que as barras de símbolos personalizadas permanecessem disponíveis sem reiniciar após a mudança para outra conta.

 
Se criar uma "ferramenta sintética" e o computador falhar, a ferramenta sintética não é guardada. Uma coisa pequena, mas inconveniente. Por favor, conserte-o.
 
Acontece que o backtest termina no penúltimo (e não o último, como se poderia pensar) tiquetaque do intervalo de teste.
 

Erro durante a execução:

#define  MACRO( int ) int
void f( uint ) { Print( 1 ); }
void f(  int ) { Print( 2 ); }
void OnStart()
{
        MACRO( uint ) x = 0;
        f( x );
}

Resultado: 2 Esperado: 1

 

Deve ser uma aberração psicológica saber, em qualquer altura, o número da última construção do MT5.

Não conheço as taxas de câmbio actuais, mas sei sempre o número. Pergunte-me hoje, há um mês, há um ano.

 
Erro de compilação:
class A {
template<typename T>
        A *StringFormat( string, T ) { return &this; }
        A *f() { return StringFormat( "", 1 ); } //Error: 'StringFormat' - object pointer expected
};
 
Mesmo assim, o histórico das personagens personalizadas desaparece depois de o Testador ser aplicado a elas. Deve ser fixado.