OBJ_VLINE - 페이지 2

 
또한 매 틱마다 개체를 다시 생성할 필요가 없습니다. 이렇게 하면 이미 존재하는 4200 개체로 오류 로그가 범람하므로 대신 on init 함수에서 개체를 한 번 만든 다음 나중에 원하는 날짜로 이동할 수 있습니다.
 
Marco vd Heijden :
또한 매 틱마다 개체를 다시 생성할 필요가 없습니다. 이렇게 하면 이미 존재하는 4200 개체로 오류 로그가 범람하므로 대신 on init 함수에서 개체를 한 번 만든 다음 나중에 원하는 날짜로 이동할 수 있습니다.

그 문제를 피하기 위해 :

 ObjectDelete ( 0 , "v_line" );
ObjectCreate ( 0 , "v_line" , OBJ_VLINE , 0 , D'2019.06.04 16:00' , 0 );
 

또는 다음을 통해 객체가 이미 존재하는지 미리 확인할 수 있습니다.

 ObjectFind (...
 

마르코, 폴

답변과 도움 정말 감사합니다

그러나 지금 내가 직면하고 있는 문제는 파일에서 검색한 정보(날짜)를 변환하여 선을 그리는 데 사용하는 것입니다.

코드에서 파일은 MT4 파일 섹션에 # Lines로 저장되고 저장된 날짜는 예를 들어 2019.05.18 05:30:00 입니다. 첫 번째 단계는

날짜의 마지막 3자리를 2019.05.18 05:30으로 변환합니다. 이제 다음 단계는 D' 형식의 시간을 만들기 위해 달성하지 못한 것입니다.

나는 이것을 다음과 같이 시도했다

 ObjectCreate ( 0 , "v_line" , OBJ_VLINE , 0 , "D'" + 2019.05 . 18 05 : 30 + "'" , 0 );

하지만 작동하지 않았으므로 문자열을 시간으로 변환합니다.

 ObjectCreate ( 0 , "v_line" , OBJ_VLINE , 0 , StringToTime ( "D'" + 2019.05 . 18 05 : 30 + "'" ), 0 );

두 경우 모두 라인이 1970.01.01 00:00에 생성되므로 문제는 파일의 날짜를 MT4가 v-라인을 생성하는 데 사용할 수 있는 의미 있는 것으로 변환하는 것입니다.

나는 코드를 첨부하고 있습니다. 아마도 당신은 내 실수를 발견 할 수 있습니다 .. 코드에서 두 줄을 만들었지 만 파일에서 검색 한 날짜에 아무 줄도 생성되지 않았습니다.

파일:
TestDates.mq4  9 kb
 

따옴표 사이에 날짜를 작성하여 잘못하고 있습니다.

그대로 :

D'2019.05.18 05:30'


 ObjectCreate ( 0 , "v_line" , OBJ_VLINE , 0 , D'2019.05.18 05:30' , 0 );
 
StringToTime ( " 2019.05 . 18 05 : 30 " ) == D'2019.05.18 05:30'

둘 다 datetime s입니다. 그냥

 StringToDouble ( "1.234" ) == 1.234
둘 다 더블이다.
 
paul selvan :

따옴표 사이에 날짜를 작성하여 잘못하고 있습니다.

그대로 :

D'2019.05.18 05:30'


위의 William Roeder 와 같이 텍스트를 날짜/시간 형식으로 변환하고 있기 때문에 그렇게 하고 있습니다. 날짜를 올바르게 저장하고 D' 형식으로 변환하지만 여전히 줄을 만들 수 없기 때문에 내 실수가 어디에 있는지 잘 모르겠습니다. 파일에서 날짜를 복사하고 수동으로 줄을 만든 경우 올바른 날짜로 이동합니다.

 
문자열에서 날짜/시간 으로의 변환 대신 에포크 이후 초와 같은 긴 정수 값으로 시간을 절약하고 읽는 데 더 많은 행운이 있을 것이라고 생각합니다.
 
Marco vd Heijden :
문자열에서 날짜/시간 으로의 변환 대신 에포크 이후 초와 같은 긴 정수 값으로 시간을 절약하고 읽는 데 더 많은 행운이 있을 것이라고 생각합니다.

날짜는 초를 포함하여 저장됩니다. 예를 들어 이것은 2019.05.19 15:00:00 파일에서 가져온 시간입니다.

그러나 내 테스트 중에 초와 함께 날짜를 사용하면 1970.01.01 줄이 생성된다는 것을 알았습니다. 이것이 내가 초를 제거하지만 여전히 날짜의 정확한 위치에 파일을 생성할 수 없는 이유입니다

 

이 경우 시간 구조를 볼 수도 있다고 생각합니다.

 struct MqlDateTime 
  { 
   int year;           // Year 
   int mon;             // Month 
   int day;             // Day 
   int hour;           // Hour 
   int min;             // Minutes 
   int sec;             // Seconds 
   int day_of_week;     // Day of week (0-Sunday, 1-Monday, ... ,6-Saturday) 
   int day_of_year;     // Day number of the year (January 1st is assigned the number value of zero) 
  };

당신이 사용할 수있는

 TimeToStruct ()

다음과 같은 기능 :

 datetime TimeExit_SymSymbol = ( datetime ) ObjectGetInteger ( 0 , Exit_SymSymbol, OBJPROP_TIME1);

MqlDateTime str1;

TimeToStruct (TimeExit_SymSymbol,str1); 

그런 다음 여기에서 원하는 모든 값을 추출할 수 있습니다.

 int Year = str1.year;
int Month = str1.mon;
int Day = str1.day;
int Hour = str1.hour;
int Minutes = str1.min;
int Seconds = str1.sec;
이것들은 정수 값이므로 엉망이 될 문자열이 없습니다.
사유: