Função StrToTime causa erro 4051

 

Hi,

o editor em construção >600 não gosta da função StrToTime.

Chamá-lo causa o erro 4051. O que está errado?

O código está aqui:

//+------------------------------------------------------------------+
//| test.mq4 |
//+------------------------------------------------------------------+

#property version "1.00"

//--- input parameters
input string TimeClose_="21:45";
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
datetime xxxxx = StrToTime("21:45"); // makes no difference with TimeClose_ from the input
Print("error: "+GetLastError());
}
//+------------------------------------------------------------------+

O resultado a cada tique:

O que há de errado aqui. A compilação com o editor 509 não causa erro, é claro

 
kla-mue:

Hi,

o editor em construção >600 não gosta da função StrToTime.

Chamá-lo causa o erro 4051. O que está errado?

O código está aqui:

<apagado>

Favor postar seu código usando o botão SRC
 

OK, agora eu sei... da próxima vez...

você tem uma solução para o meu problema?

//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//+------------------------------------------------------------------+

#property version   "1.00"

//--- input parameters
input string   TimeClose_="21:45";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   datetime xxxxx = StrToTime("21:45");
   Print("error: "+GetLastError());
  }
//+------------------------------------------------------------------+
 
kla-mue: OK, agora eu sei... da próxima vez...
  1. Da próxima vez, edite seu post original.
  2.    datetime xxxxx = StrToTime("21:45");
       Print("error: "+GetLastError());
    teste EURUSD,H1: erro: 4051
    Não chame GetLastError() a menos que você tenha um erro. É xxxx == 0? Por que você não o imprimiu junto com o GLE?
  3. Talvez você devesse tentar o novo StringToTime
 
kla-mue:

OK, agora eu sei... da próxima vez...

você tem uma solução para o meu problema?

Pode ter sido resolvido. . https://www. mql5.com/en/forum/149475 mas, de qualquer forma, informe-o ao Service Desk.

 
WHRoeder:
  1. Da próxima vez, edite seu post original.
  2. teste EURUSD,H1: erro: 4051
    Não chame GetLastError() a menos que você tenha um erro. É xxxx == 0? Por que você não o imprimiu junto com o GLE?
  3. Talvez você devesse tentar o novo StringToTime



@2: como devo descobrir se há um erro, se eu não perguntar ao GLE?

Este código é para descobrir, por que minha EA está dando mensagens de erro. Nenhum outro propósito.


@3: o StringToTime causa o mesmo erro :(


Existe outra possibilidade?

 
kla-mue: @2: como devo descobrir se há um erro, se eu não perguntar ao GLE?

O GLE não lhe diz SE você tiver um erro. Ele lhe diz qual é o erro QUANDO você tem um.

O GLE retorna o último código de erro. Esse código está associado a que código? Desconhecido. Pode ter sido algo associado com o processamento do terminal interno ou uma chamada de uma função anterior que você chamou.

Don't call GetLastError() unless you have an error
Você tem um erro se OrderSend retorna bilhete negativo, Time[i] retorna zero, ou se StringToTime retorna zero, etc.
 

StringToTime

A função converte uma string contendo hora ou data em formato "aaaa.mm.dd [hh:mi]" em tipo de data/hora.

datatime StringToTime(
string valor // data string
);

Parâmetros

valor

[em] Cordas no formato " yyyyy.mm.dd hh:mi ".

datetime xxxxx = StringToTime(D'21:45');
 
qjol:
D'21:45'

Isso não é uma corda, é uma data já (21:45 do dia em que você compilou o código).
Leia o doc StrToTime()

  datetime var1; var1=StrToTime("2003.8.12 17:35"); var1=StrToTime("17:35"); // retorna a data atual com a hora dada var1=StrToTime("2003.8.12"); // retorna a data com a hora da meia-noite de "00:00"
 
mas u tem que usar o formato "yyyy.mm.dd hh:mm" caso contrário u recebe erro 4051
 

PERFEITO ! Agora, sua execução sem erro =)

Deve ser o formato completo da data!

TNX muito!!