함수 StrToTime으로 인해 오류 4051이 발생합니다.

 

안녕,

빌드 >600의 편집기는 StrToTime 기능을 좋아하지 않습니다.

호출하면 오류 4051이 발생합니다. 무엇이 잘못되었나요??

코드는 다음과 같습니다.

 //+------------------------------------------------------------------+
//| 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());
}
//+------------------------------------------------------------------+

모든 틱의 결과:

무슨 일이야 물론 편집기 509로 컴파일하면 오류가 발생하지 않습니다.

 
kla-mue :

안녕,

빌드 >600의 편집기는 StrToTime 기능을 좋아하지 않습니다.

호출하면 오류 4051이 발생합니다. 무엇이 잘못되었나요??

코드는 다음과 같습니다.

<삭제됨>

SRC 버튼 을 사용하여 코드를 게시하십시오.
 

알았어, 이제 알았어... 다음에...

내 문제에 대한 해결책이 있습니까?

 //+------------------------------------------------------------------+
//|                                                         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 : 알았어, 알았어... 다음에...
  1. 다음 번에 원본 게시물을 편집 하십시오.
  2.    datetime xxxxx = StrToTime ( "21:45" );
       Print ( "error: " +GetLastError());
    EURUSD,H1 테스트: 오류: 4051
    오류 없는 한 GetLastError() 를 호출하지 마십시오. xxx == 0입니까? 왜 GLE와 함께 인쇄하지 않았습니까?
  3. 아마도 새로운 StringToTime 을 시도해야 할 것입니다.
 
kla-mue :

알았어, 이제 알았어... 다음에...

내 문제에 대한 해결책이 있습니까?

수정되었을 수 있습니다. . . https://www.mql5.com/en/forum/149475 그러나 어쨌든 서비스 데스크 에 보고하십시오.

 
WHRoeder :
  1. 다음 번에 원본 게시물을 편집 하십시오.
  2. EURUSD,H1 테스트: 오류: 4051
    오류 없는 한 GetLastError() 를 호출하지 마십시오. xxx == 0입니까? 왜 GLE와 함께 인쇄하지 않았습니까?
  3. 아마도 새로운 StringToTime 을 시도해야 할 것입니다.



@2: GLE에 요청하지 않으면 오류가 있는지 어떻게 알 수 있습니까?

이 코드는 내 EA가 오류 메시지를 표시하는 이유를 알아내기 위한 것입니다. 다른 목적은 없습니다.


@3: StringToTime이 동일한 오류를 발생시킵니다.:(


다른 가능성이 있습니까?

 
kla-mue : @2: GLE에 요청하지 않으면 오류가 있는지 어떻게 알 수 있습니까?

GLE는 오류가 있는지 알려주지 않습니다. 오류가 있을 때 오류가 무엇인지 알려줍니다.

GLE는 마지막 오류 코드를 반환합니다. 그 코드는 어떤 코드와 연결되어 있습니까? 알려지지 않은. 내부 터미널 처리 또는 호출한 이전 함수의 호출과 관련된 것일 수 있습니다.

Don't call GetLastError() unless you have an error
OrderSend 가 음수 티켓을 반환하거나, Time[i]가 0을 반환하거나, StringToTime 이 0을 반환하는 등의 경우 오류가 있는 것입니다.
 

StringToTime

함수 는 "yyyy.mm.dd [hh:mi]" 형식의 시간 또는 날짜가 포함된 문자열을 날짜/시간 유형으로 변환합니다.

날짜/시간 StringToTime (
// 날짜 문자열
);

매개변수

[in] " yyyy.mm.dd hh:mi " 형식의 문자열입니다.

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

그것은 문자열이 아니라 이미 날짜/시간 입니다(코드를 컴파일한 날의 21:45).
문서 StrToTime() 읽기

 날짜 시간 var1;
  var1=StrToTime("2003.8.12 17:35");
  var1=StrToTime("17:35"); // 현재 날짜를 주어진 시간으로 반환
  var1=StrToTime("2003.8.12"); // 자정이 "00:00"인 날짜를 반환합니다.
 
하지만 "yyyy.mm.dd hh:mm" 형식을 사용해야 합니다. 그렇지 않으면 오류 4051이 발생합니다.
 

완벽한 ! 이제 오류 없이 실행됩니다 =)

완전한 날짜 형식이어야 합니다!

TNX 많이!!

사유: