초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1001

 

오류가 발생하는 이유를 알려주세요

 2019.02 . 17 06 : 13 : 28.974 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02 . 17 06 : 13 : 28.983 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден

이 코드에서

       if ( ObjectFind (chart,name)< 0 )
        {
         Print ( "1 Тут ошибка " , GetLastError (), " " ,cLng::CodeDescription( GetLastError ()));
         ResetLastError ();
         graphic.Create(chart,name, 0 , 0 , 0 ,pix_X,pix_Y); //Создает графический ресурс, привязанный к объекту чарта 
         Print ( "2 Тут ошибка " , GetLastError (), " " ,cLng::CodeDescription( GetLastError ()));
         ResetLastError ();
        }

첫 번째 오류가 여전히 설명 가능한 경우 - 개체를 찾을 수 없다고 말하지만 오류 없이 누락된 개체에 대한 검색 구현이 명확하지 않으면 개체가 명시적으로 생성되는 동안 두 번째 오류가 명확하지 않습니다. - 그래프 형성되고 오류의 원인이 명확하지 않습니다.

오류를 제거하는 방법?

 
Aleksey Vyazmikin :

오류가 발생하는 이유를 알려주세요.

이 코드에서

첫 번째 오류가 여전히 설명 가능한 경우 - 개체를 찾을 수 없다고 말하지만 오류 없이 누락된 개체에 대한 검색 구현이 명확하지 않으면 개체가 명시적으로 생성되는 동안 두 번째 오류가 명확하지 않습니다. - 그래프 형성되고 오류의 원인이 명확하지 않습니다.

오류를 제거하는 방법?

ResetLastError()는 함수를 호출하기 전에 실행되어야 합니다. 여기에 무엇이 있습니까:

graphic.Create()

불분명. CCanvas인 경우 Create() 메서드 는 차트 개체 에 바인딩되지 않고 그래픽 리소스를 만듭니다. 그리고 true 또는 false 를 반환합니다.

창조하다

차트 개체에 바인딩되지 않고 그래픽 리소스를 만듭니다.

 virtual bool   Create(
   const string        name,                                 // имя
   const int           width,                                 // ширина
   const int           height,                               // высота
   ENUM_COLOR_FORMAT   clrfmt= COLOR_FORMAT_XRGB_NOALPHA        // формат
   );

옵션

이름

【인】 그래픽 리소스 이름의 기준입니다. 리소스 이름은 생성 시 의사 난수 문자열을 추가하여 생성됩니다.

너비

【인】 너비(X 치수)(픽셀)입니다.

【인】 픽셀 단위의 높이(Y축을 따른 크기)입니다.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

【인】 색상 처리 방법입니다. 색상을 처리하는 방법에 대한 자세한 내용은 ResourceCreate() 함수에 대한 설명을 참조하십시오.

반환 값

true - 성공하면 거짓, 그렇지 않으면 거짓


일반적으로 보여주신 내용으로는 이해하기 어렵습니다.

그러나 이것을 시도하십시오:

 //+------------------------------------------------------------------+
ResetLastError ();
if ( ObjectFind (chart,name)< 0 )
  {
   Print ( "1 Тут ошибка потому, что объекта нет ещё" , GetLastError (), " " ,cLng::CodeDescription( GetLastError ()));
   ResetLastError ();
   if (!graphic.Create(chart,name, 0 , 0 , 0 ,pix_X,pix_Y))
       Print ( "2 Тут ошибка " , GetLastError (), " " ,cLng::CodeDescription( GetLastError ()));
  }
//+------------------------------------------------------------------+

CGraphic이 있는 경우 도움말에 이에 대한 단어가 없기 때문에 반환되는 내용을 이해하기 위해 Create() 코드로 들어가야 합니다.

Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
  • www.mql5.com
Стандартная библиотека / Научные графики / CGraphic / Create - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin :

ResetLastError()는 함수를 호출하기 전에 실행되어야 합니다. 여기에 무엇이 있습니까:

불분명. CCanvas인 경우 Create() 메서드 는 차트 개체 에 바인딩되지 않고 그래픽 리소스를 만듭니다. 그리고 true 또는 false 를 반환합니다.

창조하다

차트 개체에 바인딩되지 않고 그래픽 리소스를 만듭니다.

옵션

이름

【인】 그래픽 리소스 이름의 기준입니다. 리소스 이름은 생성 시 의사 난수 문자열을 추가하여 생성됩니다.

너비

【인】 너비(X 치수)(픽셀)입니다.

【인】 픽셀 단위의 높이(Y축을 따른 크기)입니다.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

【인】 색상 처리 방법입니다. 색상을 처리하는 방법에 대한 자세한 내용은 ResourceCreate() 함수에 대한 설명을 참조하십시오.

반환 값

true - 성공하면 거짓, 그렇지 않으면 거짓


일반적으로 보여주신 내용으로는 이해하기 어렵습니다.

그러나 이것을 시도하십시오:

CGraphic이 있는 경우 도움말에 이에 대한 단어가 없기 때문에 반환되는 내용을 이해하기 위해 Create() 코드로 들어가야 합니다.

위에서 이미 에러 리셋으로 확인하고 에러가 발생한 곳을 현지화했습니다.

또한 다른 기능에서 두 번 발생합니다. 첫 번째 기능 이후에 오류가 재설정되지만 다시 발생합니다.

그리고 내 생성 옵션

창조하다

차트 개체에 바인딩된 그래픽 리소스를 만듭니다 .

bool 생성 (
    긴 상수      chart , // 차트 식별자
    상수 문자열    이름 , // 이름
    상수 정수       subwin , // 하위 창 번호
    상수 정수       x1 , // x1 좌표
    상수 정수       y1 , // y1 좌표
    상수 정수       x2 , // x2 좌표
    상수 정수       y2            // y1 좌표
)

옵션

차트

【인】 차트 ID입니다.

이름

【인】 이름.

서브 승리

【인】 하위 창 번호입니다.

x1

【인】 X1 좌표.

y1

【인】 Y1 좌표입니다.

x2

【인】 X2 좌표.

y2

【인】 Y2 좌표입니다.

 
Aleksey Vyazmikin :

위에서 이미 에러 리셋으로 확인 하고 에러가 발생한 곳을 현지화했습니다.

개체 찾기 기능을 호출하기 전에 오류를 재설정 하지 않습니다 .

 
Artyom Trishkin :

개체 찾기 기능을 호출하기 전에 오류를 재설정 하지 않습니다 .

예, 위의 코드를 이미 확인했기 때문에 인용구의 코드를 재설정하지 않습니다. 거기에는 오류가 없으므로 아래에 표시된 유사한 확인 줄을 삭제했습니다.

 
안녕하세요, 파일에서 중국어 또는 일본어 문자로 된 줄을 읽는 경고 기능 이 있습니다. 어떻게 고칠 수 있습니까?
 
Artyom Trishkin :

개체 찾기 기능을 호출하기 전에 오류를 재설정 하지 않습니다 .

다시 한번 실험을 반복하기로 결정했습니다. 코드는 다음과 같습니다.

       //--- отключим показ ценового графика
       ChartSetInteger ( 0 , CHART_SHOW , false );
       long chart= ChartID ();

      CGraphic graphic;
         Print ( "0 Тут ошибка " , GetLastError (), " " ,cLng::CodeDescription( GetLastError ()));
         ResetLastError ();
       if ( ObjectFind (chart,name)< 0 )
        {
         Print ( "1 Тут ошибка " , GetLastError (), " " ,cLng::CodeDescription( GetLastError ()));
         ResetLastError ();
         graphic.Create(chart,name, 0 , 0 , 0 ,pix_X,pix_Y); //Создает графический ресурс, привязанный к объекту чарта 
         Print ( "2 Тут ошибка " , GetLastError (), " " ,cLng::CodeDescription( GetLastError ()));
         ResetLastError ();
        }

여기 결과가 있습니다

 2019.02 . 17 08 : 55 : 19.845 Test_4G_CB (Si Splice,H1)       0 Тут ошибка 0 Операция выполнена успешно
2019.02 . 17 08 : 55 : 19.860 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02 . 17 08 : 55 : 19.860 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден
오류의 원인에 대한 아이디어가 있습니까?
 
Denis Nikolaev :
안녕하세요, 파일에서 중국어 또는 일본어 문자로 된 줄을 읽는 경고 기능 이 있습니다. 어떻게 고칠 수 있습니까?

Windows에서 글꼴을 설정합니다. "유니코드를 지원하지 않는 프로그램 언어"에 대해 러시아어로 설정합니다.

"지역 표준" - "고급".

 
Vladimir Karputov :

Windows에서 글꼴을 설정합니다. "유니코드를 지원하지 않는 프로그램 언어"에 대해 러시아어로 설정합니다.

"지역 표준" - "고급".

도움이 되지 않았다

파일에서 읽은 줄을 일본어 또는 중국어로 자동 번역했는데 왜 그런가요?

 
Aleksey Vyazmikin :

다시 한번 실험을 반복하기로 결정했습니다. 코드는 다음과 같습니다.

여기 결과가 있습니다

오류의 원인에 대한 아이디어가 있습니까?

글쎄, 당신 은 마지막 오류 를 재설정 했으므로 그런 오류 코드가 발생하는 CGraphic의 야생을 살펴보십시오.

사유: