Características da linguagem mql5, subtilezas e técnicas - página 129

 
fxsaber:

ME tem uma combinação ALT+V onde se podem ver os valores anteriores da prancheta do sistema. Mesmo se copiou algo do navegador e ME estava a trabalhar em segundo plano, ME irá vê-lo e lembrar-se dele.

Grosseiramente falando, ME vê muito do que se faz no computador. Por exemplo, se colar uma senha de conta através do buffer, ela vai para o histórico do ME.

Copio muito neste megabuffer, tenho de reiniciar o ME para limpar este buffer, mas quando o ME arranca ainda recolhe os dados actuais do buffer, é irritante, sugeri adicionar um botão de buffer limpo no fundo e posições de numeração, quando colar é mais fácil de navegar por números de posição e não por conteúdo

 
Vitaly Muzichenko:

Uau, estou a copiar palavras-passe criptográficas de moeda. Quão prejudicial é isso para mim?

Por exemplo, se der acesso ao seu computador a partir do exterior (TeamViewer, etc.), é aconselhável sair de todos os ME e limpar o buffer (copiar o lixo que lá se encontra) antes de o fazer.

 
fxsaber:

ME tem uma combinação ALT+V onde se podem ver os valores anteriores da prancheta do sistema. Mesmo se copiou algo do navegador e ME estava a trabalhar em segundo plano, ME irá vê-lo e lembrar-se dele.

Grosseiramente falando, ME vê muito do que se faz no computador.

Obrigado. Interessante. Vale a pena acrescentar que não é apenas o que foi copiado em ME que é salvo, mas tudo em todas as aplicações. Especificamente, tem de verificar até que profundidade está a ser gravado, eu estava a verificar agora e vi três textos copiados, dois de ME e um do texto no post deste fórum.

ps; Mesmo dois do texto do fórum


 
E, por via das dúvidas, certifique-se de que nada é procurado ou substituído. No metaeditor.ini isto
FindWhatX=text
ReplaceWithX=text
 
fxsaber:

ME tem uma combinação ALT+V onde se podem ver os valores anteriores da prancheta do sistema. Mesmo se copiou algo do navegador e ME estava a trabalhar em segundo plano, ME irá vê-lo e lembrar-se dele.

Grosseiramente falando, ME vê muito do que se faz no computador. Por exemplo, se colar uma senha para uma conta ou conta pessoal de outro recurso através do buffer, ela entrará no histórico da sessão ME actual.

Esta é uma característica interessante. Ainda bem que o buffer está guardado na memória e não num ficheiro.

 

Aqui está outra subtileza.

O compilador não se queixa de funções do mesmo nome com parâmetros de entrada diferentes, mesmo que não pertençam a uma classe.

void OnStart()
{
 f1("28-70 ОГО");
 f1(1.01);
}

void f1(string s)
{
 Print(__FUNCSIG__, " ", s);
}

void f1(double s)
{
 Print(__FUNCSIG__, " ", s);
}

Resultado em tempo de execução

2019.03.10 10:34:45.566 !00 (EURUSD,H4) void f1(string) 28-70 ОГО
2019.03.10 10:34:45.566 !00 (EURUSD,H4) void f1(double) 1.01
 

O multibuffer é óptimo para acelerar o editor e é seguro.

Não grava nada no disco e apenas guarda dados na memória.

 
Alexey Viktorov:

Aqui está outra subtileza.

O compilador não se queixa de funções do mesmo nome com parâmetros de entrada diferentes, mesmo que não pertençam a uma classe.

Resultado em tempo de execução

Esta é uma sobrecarga de função normal. Tudo é padrão.

 
Artyom Trishkin:

É uma sobrecarga normal da função. Tudo é padrão.

Por alguma razão, pensei que a sobrecarga só funcionava nas aulas. Gostaria de pensar que não sou o único. Talvez isto ajude alguém. ))))

 
A cache do optimizador pode ser desactivada através da seguinte técnica
// Способ выключить кеш оптимизатора
sinput bool inCache = true; // Выключить кеш оптимизатора

input int Range = 0; // 0..10

void OnTesterInit( void )
{  
  if (inCache)
  {
    MathSrand((int)TimeLocal());
    
    ParameterSetRange("inCache", false, MathRand(), 0, 0, 0);    
  }
}

void OnTesterDeinit( void ) {}

void OnTesterPass( void )
{
  static int i = 0;
  
  Print(i++); // Признак того, что кеш выключен.
}

double OnTester( void )
{
  if (MQLInfoInteger(MQL_OPTIMIZATION))
  {
    uchar Data[];

    FrameAdd(NULL, 0, 0, Data);
  }

  return(0);
}


Evidentemente, uma solução melhor seria se os criadores dessemOptimizationCacheOff().

Note-se que o parâmetro de entrada bool é na realidade um longo parâmetro. Portanto, bool inCache = 1 e bool inCache = 2 são parâmetros de entrada diferentes, embora sejam verdadeiros em ambos os casos.

Razão: