Erros, bugs, perguntas - página 460

 
voix_kas:

A EA requer o acesso a um indicador. Pode obtê-lo de pelo menos três maneiras: IndicatorCreate(...) ou iCustome(...) ou, se for um indicador padrão, por exemplo, iMA(...).

Como eu entendo, ao utilizar qualquer variante, é necessário libertar explicitamente o punho resultante (IndicatorRelease).

A questão é sobre a escolha da forma de chamar o indicador. Quais são os prós e os contras de cada método? Interesse prioritário na rapidez de processamento.

IndicatorCreate - para os indicadores padrão, de modo que no caso do pulso são os análogos da chamada iMA. iCustom - para indicadores personalizados "personalizados". Isto é, essencialmente coisas diferentes.

A velocidade de chamada do iMA e IndicatorCreate(IND_MA) deve ser comparável, mas ainda não a verifiquei.

Quanto ao IndicatorRelease - faz sentido chamá-lo, se não precisar de voltar a este indicador após o cálculo. Não tenho tais situações - se algum indicador for necessário (com um dado conjunto de parâmetros), então será necessário para cálculo/recálculo adicional, e se os parâmetros de entrada do script mudarem, então tudo será reinicializado e serão criadas novas alças.

 

De facto, 99% das vezes, chamar IndicatorRelease é um erro lógico da parte do programador.

A criação de um indicador é uma das operações mais dispendiosas, o que desencadeia mecanismos muito profundos do seu cálculo. Tentar fechar um cabo indicador é também uma operação muito cara, se pensarmos nos processos reais da sua implementação. A frequente criação e encerramento de indicadores mostra que o programador não compreende de todo a essência das operações.

É muito fácil de compreender.

Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
Документация по MQL5: Доступ к таймсериям и индикаторам / IndicatorRelease
  • www.mql5.com
Доступ к таймсериям и индикаторам / IndicatorRelease - Документация по MQL5
 
Renat:

De facto, em 99% dos casos, chamar IndicatorRelease é um erro lógico da parte do programador.

A criação de um indicador é uma das operações mais dispendiosas que desencadeia mecanismos muito profundos para as calcular. Tentar fechar um cabo indicador é também uma operação muito cara, se pensarmos nos processos reais subjacentes à sua implementação. A frequente criação e encerramento de indicadores mostra que o programador não compreende de todo a essência das operações.

É muito fácil de compreender.

Deixem-me intervir na conversa e dizer: os mecanismos do programa m, terminal, forex (de facto, porque estamos aqui reunidos)

A razão pela qual estamos aqui é simples verdades, portanto o que nos impede de as compreender e de cortar os rublos - ou o software que vamos vender,

E se não houver possibilidade de o fazer, temos de nos manter em silêncio até que aconteça um "milagre"!

 
Im_hungry:

Deixe-me intervir na conversa e dizer: os mecanismos do programa, o terminal, o forex (basicamente para o que estamos aqui)

Temos de ter cuidado com o que fazemos e com o que não queremos fazer,

Devemos manter o silêncio até que aconteça um "milagre"!

Um belo exemplo de corrente de pensamento incompreensível. Invejo tais capacidades.
 
Renat:
Um belo exemplo de fluxo de pensamento incompreensível. É invejável poder fazê-lo.

Certamente um Jedi de nível 80, Mestre Yoda está a meditar calmamente nas linhas laterais :)

E não há dúvida, eles "ajudaram crianças sem abrigo em caso de problemas" (de 12 cadeiras).

 

Não há muito tempo, o meu código de trabalho deixou de ser compilado.

Culpa o código na biblioteca padrão:

'GetLastError' - ambiguous call to overloaded function with the same parameters SymbolInfo.mqh  718     10
'GetLastError' - ambiguous call to overloaded function with the same parameters	SymbolInfo.mqh	725	57
Aparentemente, por causa do que está no meu código:
#import "kernel32.dll"
uint GetLastError();
#import
.....
kernel32::GetLastError() 
.... 

Como "digerir" isto para que o meu programa volte a funcionar? Não tenho a certeza do que mudou na nova construção do MQL.

Não é permitido que as funções importadas tenham o mesmo nome que as incorporadas? Como continuar com a vida?

 
7134956:

Como "digerir" isto para que o meu programa volte a funcionar? Não compreendo bem o que mudou na nova construção do MQL.

basta adicionar um parâmetro no interior

#import "Kernel32.dll"
uint GetLastError(int);
#import
 
sergeev:

adicionar um parâmetro simples no interior

Obrigado! Parece ter ajudado. Mas é uma espécie de muleta para passar um parâmetro que é redundante.
 
Pensemos nisto como uma característica ou um autobug.
 
sergeev:
Pensemos nisto como uma característica ou autobug.

Poderia retirá-lo e embrulhá-lo numa biblioteca separada, dando-lhe um novo nome.

Também se poderia tentar pedir espaços nomeados, mas provavelmente é inútil.