Uma pergunta para os especialistas em MQL - página 15

 

Obrigado Zhunko e TheXpert !

Suas variantes eliminam este tipo de erro!

 

Hi!

Você pode me dizer o que o aviso pode significar ao compilar um indicador em um mt4 atualizado:

nem todos os caminhos de controle retornam um valor S_E_v.mq4 181
0 erro(s), 1 advertência(ões) 1 2

 
Rita:

Você pode me dizer o que o aviso pode significar ao compilar o indicador no mt4 atualizado:

Isso significa que existe um caso na função que devolve um valor onde nada é devolvido e isso é ruim.
 

Programadores, ajudem-me: preciso determinar a compensação da barra por um determinado tempo em um TF de hora em hora. O procedimento padrão (do tutorial) dá 0. Aponte-me para a direção errada.

 datetime some_time=D'2004.03.21 12:00';
  int      shift=iBarShift("EUROUSD",PERIOD_M1,some_time);
  Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);
 
Nesradamus:

Programadores, ajudem-me: preciso determinar a compensação da barra por um determinado tempo em um TF de hora em hora. O procedimento padrão (do tutorial) dá 0. Aponte-me para a direção errada.

"EUROUSD"

Existe tal símbolo?

 

Boa tarde.

Após a última atualização mt4 e compilação da EA, há avisos em três linhas 101-106-109, ver fig:

Por favor, informe, - como consertar, aqui está o código desta função :

(e deve ser corrigido?)

int init()
{
 ExpertBars = Bars;
//-----------------------------------------------------------
gbNoInit=False; if (!IsTradeAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");
    gbNoInit=True; return;
  }
  if (!IsLibrariesAllowed()) {
    Message("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних экспертов");
    gbNoInit=True; return;
  }
//------------------
}
 
Rita:

Boa tarde. Após a última atualização mt4 e compilação da EA, há avisos em três linhas 101-106-109, ver fig:

Por favor, informe, - como consertar, aqui está o código desta função :

(e deve ser corrigido?)

Seu init() é do tipo int, o que significa que ele precisa devolver um valor. Antes do último parêntese de fechamento escreva

return(INIT_SUCCEEDED);

Há um lugar em uma função onde a função pode não devolver nada. Você não mostrou as funções - procure por si mesmo naquelas funções onde é possível sair no último parêntese de fechamento.

 
Aqui está o código
artmedia70:

Antes do último parêntese de fechamento, escreva .....

Você não mostrou as funções - procure você mesmo naquelas funções em que é possível sair no último parêntese de fechamento.


Obrigado. Retorno corrigido(INIT_SUCCEED);.

Aqui está o código desta função não mostrada para os outros dois avisos restantes:

//+----------------------------------------------------------------------------+
//|  Вывод сообщения в коммент и в журнал                                      |
//+----------------------------------------------------------------------------+
void Message(string m) {
  Comment(m);
  if (StringLen(m)>0) Print(m);}

.

 
Rita:
Aqui está o código

Obrigado. Corrigido.

Aqui está o código para esta função nas outras duas advertências:

1. O mais provável é que você tenha deinit() também int e return(0) não está escrito nele

2. esta função é nula e o parêntese de fechamento serve como retorno` nela. Tudo está bem nele.

 

deinit() - Não o tenho de forma alguma.

Retorno fixo para retornar(0 ) sobre os dois avisos restantes e o código compilado sem nenhum problema.

Obrigado.