Erros, bugs, perguntas - página 2426

 
Alexandr Gavrilin:

Que raio se passa com o tipo duplo nas últimas versões do metaeditor? Tanto no mt4 como no mt5 escreve alguns disparates em vez de -0,01. De onde vieram estes números, as variáveis são repostas a zero no meu caso.

Tenho de mudar a memória. Era o mesmo nas versões mais antigas.

 

o compilador comporta-se de forma diferente nos mesmos casos.

Descarregado 2 ficheiros de kodobase:https://www.mql5.com/en/code/15440

foram feitas, obviamente antes do iTime() aparecer. Um deles compila, o outro jura:

As funções são idênticas:

chamadas também.

A razão para a repreensão é óbvia, compreensível e facilmente fixada pela substituição automática, mas o comportamento diferente em situações semelhantes é alarmante.

PS:

O indicador compilado funciona correctamente.

Volume Profile + Range v6.0
Volume Profile + Range v6.0
  • www.mql5.com
Volume Profile + Range v6.0 (former TPO). Distribution of deals by price levels at a given time interval. Displayed as a histogram. The width of the histogram at the level means the number of transactions carried out on it. If a broker provides data on a real volume, the indicator is able to display distribution on it as well. VP: display...
 
Alexey Viktorov:

É necessário substituir a memória. E era exactamente o mesmo nas versões antigas.

Que memória? O que é que a memória tem a ver com isto?

 

Executei o seguinte código :

 Temp.ask=0; Temp.bid=0; Temp.time=0;
 Print("Старт Ask=",Temp.ask," Bid=",Temp.bid," Time=",Temp.time);
 Print("Ответ SymbolInfoTick=", SymbolInfoTick("",Temp) );
 Print("Ask=",Temp.ask," Bid=",Temp.bid," Time=",Temp.time);

E obteve um resultado estranho:

Старт Ask=0.0 Bid=0.0 Time=1970.01.01 00:00:00
Ответ SymbolInfoTick=true
Ask=69.75 Bid=69.33 Time=2019.04.08 21:21:12

Isto é, SymbolInfoTick com o primeiro parâmetro igual a "" por alguma razão retorna o último tick pelo símbolo do gráfico em vez de falso e um tick de zeros. Embora não deva ser assim, de acordo com a definição na documentação.

bool  SymbolInfoTick( 
   string    symbol,     // символ 
   MqlTick&  tick        // ссылка на структуру 
   );
 
Igor Zakharov:

estrito da propriedade?

 
Alexandr Gavrilin:

Que raio se passa com o tipo duplo nas últimas versões do metaeditor? Tanto no mt4 como no mt5 escreve alguns disparates em vez de -0,01. De onde vêm estes números? Eu ponho as variáveis a zero.

Esta é a construção de 2007.

Sempre foi 0,01, mas agora não o compreendo:


 
Andrei Trukhanovich:

estrito da propriedade?

em ambos são os mesmos:

Ainda não verifiquei o símbolo (como acima assinalado - o código não é meu), mas num relance rápido são 95% idênticos. E a diferença não está nos locais onde o erro aparece. Mas, por alguma razão, uma compila, a outra não. Já o arranjei para mim próprio, mas estou a informar os criadores sobre a estranheza.

 

Este bug parece ter aparecido em construções recentes do MT5.

Bug nas funções CryptEncode() e CryptDecode(). Problema com o método de conversão CRYPT_AES256

Pode reproduzir o bug no último (2009) construído com este guião:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   string Txt = "The quick brown fox jumps over the lazy dog. A0 A1 A2 A3 A4 A5 A6 A7 A8 A9"; 

//---Key
   uchar Key[32];
   ArrayInitialize(Key, 3);

//---encode
   uchar SourceArr[], EncodedArr[];
   
   StringToCharArray(Txt, SourceArr); 
   
   int EncodeRes = CryptEncode(CRYPT_AES256, SourceArr, Key, EncodedArr);
   
//---decode
   uchar DecodedArr[];
   
   int DecodeRes = CryptDecode(CRYPT_AES256, EncodedArr, Key, DecodedArr);
   
   string DecodedTxt = CharArrayToString(DecodedArr);

//---res
   Print("Txt: ",Txt);
   Print("EncodeRes: ",EncodeRes);
   
   Print("DecodedTxt: ",DecodedTxt);
   Print("DecodeRes: ",DecodeRes);
   
//---
   return;
}
 
Marat Sultanov:

Este insecto parece ter aparecido em construções recentes do MT5.

O bug está nas funções CryptEncode( ) e CryptDecode(). Problema com o método de conversão CRYPT_AES256

Pode reproduzir o bug no último (2009) construído com este guião:

É muito provável que a correcção só apareça quando se fizer uma actualização para uma nova construção.
 
Vitaly Muzichenko:

Aqui na construção desde 2007

Foi sempre 0,01 e agora não é claro:


Mostrar código de saída