Erros, bugs, perguntas - página 1492

 
Maxim Khrolenko:
E global (não externo) não é, e isso não é bom.

Porque é que não é bom? Diz-se explicitamente que as variáveis globais são inicializadas uma vez no arranque do programa.

Quer comportamento diferente, inicialize como quiser no OnInit

 
Yuri Evseenkov:
Seria bom reflectir isto na documentação.
Sim, vamos.
 
zaskok3:
Em MQL4++ não posso prescindir do exterior quando preciso de alterar programticamente os parâmetros de entrada. Por exemplo, ao converter um indicador padrão num interactivo, tenho de substituir a entrada por externa. O compilador trata as variáveis de entrada como constantes e queixa-se da tentativa de as alterar. Com o exterior não existem tais problemas.

Utilização de "duplicadores" de parâmetros de entrada

Temos um exemplo em MQL5\Indicadores\\\\\\\AADX.mq5.

//--- input parameters
input int InpPeriodADX=14; // Period
//---- buffers
double    ExtADXBuffer[];
double    ExtPDIBuffer[];
double    ExtNDIBuffer[];
double    ExtPDBuffer[];
double    ExtNDBuffer[];
double    ExtTmpBuffer[];
//--- global variables
int       ExtADXPeriod;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- check for input parameters
   if(InpPeriodADX>=100 || InpPeriodADX<=0)
     {
      ExtADXPeriod=14;
      printf("Incorrect value for input variable Period_ADX=%d. Indicator will use value=%d for calculations.",InpPeriodADX,ExtADXPeriod);
     }
   else ExtADXPeriod=InpPeriodADX;
 
Camaradas, alguém obtém regularmente "erro interno de compilação" ao compilar? Nenhuma razão aparente, no caso de recompilação - pendura, no caso de fechar o editor, abrindo-o novamente (com as mesmas abas, com o mesmo código) - a compilação é normalmente normal. Nada muda no código! Mas por vezes este erro ocorre várias vezes seguidas e o primeiro reinício do editor não ajuda. Até agora, como resultado da recarga, tudo conseguiu compilar. Mas receio que, mais cedo ou mais tarde, deixe de funcionar. Gostaria de encontrar alguém que encontrasse insectos semelhantes, para que juntos pudéssemos fornecer ao Servicedesk dados sobre as condições da sua ocorrência.
 
Slawa:

Utilizar "duplicadores" para parâmetros de entrada

Temos um exemplo em MQL5\Indicadores\\\\\\\DX.mq5

Agora, para converter um indicador para a versão interactiva, é necessário adicionar apenas uma linha ao código fonte. Se fizer os duplicadores, para além do fio adicional para a criação do duplicador, deve fazer a substituição de todo o texto. Porquê este incómodo quando se pode simplesmente mudar uma linha.

O que o impede de remover o conhecimento constante das variáveis de entrada no momento da compilação?

 
zaskok3:

Para converter o indicador numa variante interactiva, só é necessário adicionar uma linha à fonte. Se fizer um duplo, então para além da linha extra para criar um duplo, terá de substituir todo o texto. Porquê este incómodo, quando se pode facilmente mudar uma linha.

O que o impede de remover o conhecimento constante das variáveis de entrada no momento da compilação?

Edição de texto. "Ctrl" + "H" - procurar e substituir. Nada de complicado. Apenas não sejas preguiçoso.
 
zaskok3:

O que o impede de remover o conhecimento constante das variáveis de entrada no momento da compilação?

Armazenamento global de indicadores na base histórica do MT5. Para eles, os parâmetros de entrada são fundamentais. Quando se alteram os parâmetros de entrada, o indicador com os parâmetros antigos é destruído e o mesmo indicador com parâmetros modificados é criado novamente.

Ou seja, a restrição é puramente arquitectónica

Na quarta versão podíamos remover a constância das instâncias, mas depois existe uma incompatibilidade dos novos MQL4 e MQL5. Por conseguinte, não o faremos. Por favor, continue a utilizar o exterior

 

Slawa:

Ou seja, a limitação é puramente arquitectónica.

É uma pena que a arquitectura seja tão rígida que não há qualquer possibilidade de flexibilidade, mesmo simples. Acontece que a interactividade na MQL5 vai requerer uma muleta. A questão é, então, onde está a vantagem, se a língua limita as possibilidades...
 
pako:
Janela para se destacar do terminal
como?
 
Joo Zepper:
como?
Estava num fórum algures, uma DLL