Discussão sobre a documentação MQL4 - página 17

 
Yurixx:

Rosh, se eu entendi corretamente seu silêncio, não há uma declaração clara para quais casos e para quais expressões/variáveis a normalização é necessária. Se este for o caso, talvez uma pergunta mais simples possa ser respondida: é a normalização dos valores calculados da forma

int StLs=25;
duplo prc = Ask + StLs*Point;

Ou devo descobrir isso por conta própria, em uma experiência?

Não pensei que você estivesse esperando minha resposta à pergunta. Minha resposta é: eu não faço a normalização em tais casos e as ordens são abertas normalmente. Mas houve um tempo em que eu carreguei uma história feita manualmente e tentei fazer um teste nela - foi aí que fiquei surpreso. Em quase todos os casos, a normalização deve ser usada apenas para o caso - quer sejam valores indicadores de sua própria fabricação inseridos nos parâmetros de preços OrderSend() [por exemplo, todos os tipos de Pivots] ou cálculos complexos (e não complexos) dentro da EA - em todos os casos, não se pode estragar nada com manteiga.

Mas realmente, não posso dar uma formulação clara, quando é absolutamente desnecessário aplicar a normalização de preços na OrderSend(). Em princípio, uma pessoa noturna terá uma sensação em meio ano, mas não há necessidade de ter uma sensação, apenas normalizá-la o tempo todo.
 
Além disso, enquanto verificava o helper hoje, encontrei um grupo de funções em Data Conversions:

que fornecem a conversão de dados de um formato em dados de outro formato.

É de salientar a função NormalizeDouble(), que garante a precisão necessária da representação de preços. Não é possível usar preços não normalizados em operações comerciais cuja precisão exceda a precisão exigida pelo servidor comercial em pelo menos um dígito.
 
Também NormalizeDuplo

duplo NormalizeDuplo( valor duplo, dígitos int)
Arredondamento de um número de ponto flutuante com a precisão especificada.
Os valores calculados de StopLoss e TakeProfit, assim como os preços de abertura de ordens pendentes devem ser normalizados com precisão, cujo valor é armazenado nos Dígitos variáveis pré-definidos.
Parâmetros:
valor - Valor com ponto flutuante.
dígitos - Um formato de precisão, o número de dígitos após o ponto decimal (0-8).
Exemplo:
  double var1=0,123456789;
Print(DoubleToStr(NormalizeDouble(var1,5),5));
// saída: 0,12346
 
"Exemplo:
  duplo var1=0,123456789;
Print(DoubleToStr(NormalizeDouble(var1,5),5));
// saída: 0,12346".

Estes são exemplos que eu gostaria de ver na documentação. Tudo é simples e compreensível. Você o insere em um Expert Advisor ou em um indicador e vê o resultado de uma só vez.
 
Você quer dizer assim?
 

Rosh, por favor, veja a página 16 do mesmo fórum, já escrevi sobre esta função e sugestões para melhorar a ajuda a ela.

 
Fixado por enquanto (estará em nova construção):

duplo NormalizeDuplo( valor duplo, dígitos int)
Arredondamento de um número de ponto flutuante com a precisão especificada.
Os valores calculados de StopLoss e TakeProfit, assim como os preços abertos de ordens pendentes devem ser normalizados com precisão, cujo valor é armazenado nos Dígitos variáveis pré-definidos.

Parâmetros:
valor - Valor com ponto flutuante.
dígitos - Um formato de precisão, o número de dígitos após o ponto decimal (0-8).
Exemplo:
 double var1=0,123456789;
Print(DoubleToStr(NormalizeDouble(var1,5),8));
// saída: 0,12346000



Este exemplo demonstra o recorte via NormalizeDouble() a 5 dígitos, enquanto que Print() simplesmente o torna (desculpe por esse estilo não-russo).
 

Sim, o exemplo se tornou significativamente mais informativo assim que o número de caracteres começou a variar.

 
bool SendFTP( string filename, string ftp_path=NULL)
Envia o arquivo para o endereço de e-mail especificado na janela Publicar. Devolve FALSO se não for bem sucedido.
A função não funciona em modo de teste. Esta função também não pode ser chamada a partir dos indicadores personalizados.
O arquivo a ser enviado deve estar localizado na pasta de arquivos do terminal_diretório ou em suas subpastas.
O envio não é feito se nenhum endereço FTP e/ou senha de acesso estiver especificado nas configurações.
[...]
nulo SendMail( assunto, string some_text)
Envia e-mail para o endereço especificado nas configurações na guia Mail.
O envio pode ser proibido nas configurações, também o endereço de e-mail pode não ser especificado. A função GetLastError() deve ser chamada para obter as informações de erro.
[...]

Tarefa de observação: encontrar 2 diferenças.
 
Aparentemente, você tem que desistir para poder jogar fora a resposta certa por trás das costas? :)
Razão: