찻주전자의 질문 - 페이지 32

 
tol64 :
이러한 객체 속성을 명시적으로 전달합니다( ANCHOR_RIGHT_UPPER, CORNER_RIGHT_UPPER ).

도착한 것 같습니다. 작동하는 코드가 아닌 샘플 기능을 보여주었습니까?

여러분, 저는 주말을 보내고 있습니다. 방해해서 죄송합니다 :)

 

이 기능의 더 완벽한 버전이지만 무언가를 조정할 수 있습니다(일반적으로 이 모든 것을 하나의 개체 또는 여러 개체의 형태로 구현합니다).

그러나 함수를 라이브러리에 배치하고 원하는 대로 사용할 수 있습니다.

 bool Create_BMP_Label( long    chart_id,   // id графика
                       string bmp_nm,     // имя объекта
                       string bmp_path,   // путь к обекту
                       long    anchor,     // точка привязки
                       long    corner,     // угол привязки
                       int     x_dist,     // координата по шкале X
                       int     y_dist)     // координата по шкале Y
{
//----------------------------------------------------------------------------//
//Work variables
bool Result = true ; //Returned importance
//----------------------------------------------------------------------------//

ResetLastError ();

Result =   ObjectCreate (chart_id,bmp_nm, OBJ_BITMAP_LABEL , 0 , 0 , 0 ); // создание объекта

   if (Result)
  {
   ObjectSetString (chart_id,bmp_nm, OBJPROP_BMPFILE , 0 ,bmp_path);   // BMP файл
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_ANCHOR ,anchor);       // установка точки привязки
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_CORNER ,corner);       // установка угола привязки
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_XDISTANCE ,x_dist);     // установка координаты X
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_YDISTANCE ,y_dist);     // установка координаты Y
   ObjectSetInteger (chart_id,bmp_nm, OBJPROP_SELECTABLE , false );     // нельзя выделить объект, если FALSE
   ObjectSetString (chart_id,bmp_nm, OBJPROP_TOOLTIP , "\n" );         // нет всплывающей подсказки, если "\n"
  }
//The execution errors checking
   if ( GetLastError ()!= 0 )
  {
  Result = false ;
  }  
//----------------------------------------------------------------------------//
return (Result);
//----------------------------------------------------------------------------//
}
 
Interesting :

이 기능의 더 완벽한 버전이지만 뭔가를 조정할 수 있습니다(그러나 일반적으로 이 모든 것을 하나의 개체 또는 여러 개체의 형태로 구현합니다).

그러나 함수를 라이브러리에 배치하고 원하는 대로 사용할 수 있습니다.



아름답습니다.)) 그리고 객체의 형태로 이 기능을 예로 들자면 어떤 장점이 있을까요? 그 동안 나는 모든 것을 함수의 형태로 구현합니다. 어쩌면 내가 잘못된 길을 가고 있어서 모든 것을 다시 해야 합니까?
 
tol64 :
아름답습니다.)) 그리고 객체의 형태로 이 기능을 예로 들자면 어떤 장점이 있을까요? 그 동안 나는 모든 것을 함수의 형태로 구현합니다. 어쩌면 내가 잘못된 길을 가고 있어서 모든 것을 다시 해야 합니까?

글쎄, 왜 모든 것입니다. 함수는 라이브러리에서 더 보편적이고 패키지화될 수 있습니다.

클래스에도 장점이 있지만 이것은 OOP와 관련된 트릭입니다(주요 작업은 구현에 대해 생각하지 않고 다양한 프로젝트에서 코드를 사용하는 것입니다).

예시

스크린샷에서 볼 수 있듯이 정보 패널 (다른 기능일 수 있음)과 같은 것이 있으므로 이 패널을 관련 없는 일련의 개체(그래픽, 텍스트 및 기타)로 간주하거나 개체 형태로 사용할 수 있습니다. 하나의 클래스로 연결됩니다. 따라서 하나의 "입력" 매개변수 "모서리"가 변경되면 그러한 변경은 패널과 관련된 모든 것에 영향을 미칩니다.

차트를 참조할 때와 마찬가지로 클래스에 차트를 지정하면 이 차트와 이 클래스가 관리하는 모든 개체를 표시합니다.

 
Interesting :

글쎄, 왜 모든 것입니다. 함수는 라이브러리에서 더 보편적이고 패키지화될 수 있습니다.

클래스에도 장점이 있지만 이것은 OOP와 관련된 트릭입니다(주요 작업은 구현에 대해 생각하지 않고 다양한 프로젝트에서 코드를 사용하는 것입니다).

예시

스크린샷에서 볼 수 있듯이 정보 패널(다른 기능일 수 있음)과 같은 것이 있으므로 이 패널을 관련 없는 일련의 개체(그래픽, 텍스트 및 기타)로 간주하거나 개체 형태로 사용할 수 있습니다. 하나의 클래스로 연결됩니다. 따라서 하나의 "입력" 매개변수 "모서리"가 변경되면 그러한 변경은 패널과 관련된 모든 것에 영향을 미칩니다.

차트를 참조할 때와 마찬가지로 클래스에 차트를 지정하면 이 차트와 이 클래스가 관리하는 모든 개체를 표시합니다.

당신은 매우 놀라운 능력을 가지고 있습니다. 몇 줄로 모든 것을 매우 명확하게 설명하십시오. 고맙습니다. ))

필요한 모든 기능을 익히고 실습한 후에는 구조, 클래스 및 OOP에 대해 공부하기 시작합니다. 자연이 때때로 당신을 잠자리에 들도록 강요하는 것은 유감입니다. 당신은 컴퓨터에서 멀리 크롤링해야합니다. ))

 

이 스크립트를 작성했습니다:

 bool del;

void OnStart ()
  {
   long chart_id  = ChartID ();
   int amount_obj = ObjectsTotal (chart_id, 0 , OBJ_LABEL );
   int i;
   
   Print ( "Всего объектов типа OBJ_LABEL: " ,amount_obj);
   
   for (i= 0 ; i<amount_obj; i++)
      {
       string name_obj = ObjectName (chart_id,i, 0 , OBJ_LABEL );
       del = ObjectDelete (chart_id,name_obj);
       
       if (del == false || GetLastError () != 0 ) Print (ErrorDescription( GetLastError ()), ", " , GetLastError ());
       
       ChartRedraw ();
      }
  }

작업: 차트에서 OBJ_LABEL 유형의 모든 개체를 제거합니다. 그러나 일부는 건너 뛰고 남아 있습니다. 로그에 오류가 기록됩니다.

제대로 하는 방법을 알려주세요.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
tol64 :

이 스크립트를 작성했습니다:

작업: 차트에서 OBJ_LABEL 유형의 모든 개체를 제거합니다. 그러나 일부는 건너 뛰고 남아 있습니다. 로그에 오류가 기록됩니다.

제대로 하는 방법을 알려주세요.

주기가 증가하지 않고 감소해야 하는 것 같지만 세부 사항에 대해 설명하지는 않았지만(그러나 MQL4 이후로 주문은 감소 주기로 삭제되었습니다).

여기서 트릭은 큰 인덱스에서 삭제를 시작하면 선택한 요소(목록의 꼬리에서)를 삭제하는 것을 제외하고 원래 목록이 변경되지 않는다는 것입니다.

 
Interesting :

주기가 증가하지 않고 감소해야 하는 것 같지만 세부 사항에 대해 설명하지는 않았지만(그러나 MQL4 이후로 주문은 감소 주기로 삭제되었습니다).

여기서 트릭은 큰 인덱스에서 삭제를 시작하면 선택한 요소(목록의 꼬리에서)를 삭제하는 것을 제외하고 원래 목록이 변경되지 않는다는 것입니다.

끝에서 루프를 시작하려고했습니다.

   for (i=amount_obj- 1 ; i>=amount_obj; i--)

이제 로그에는 오류가 없지만 단일 개체도 삭제되지 않습니다.))

 
tol64 :

끝에서 루프를 시작하려고했습니다.

이제 로그에는 오류가 없지만 단일 개체도 삭제되지 않습니다.))

나>=0
 
tol64 :

네 가지에서 나는 이 접근 방식을 사용합니다. 모든 개체는 그룹이고 이름의 일부는 그룹에서 공통입니다.

제거

 // удаление по маске всех объектов индюка
   for ( int i = ObjectsTotal () - 1 ; i >= 0 ; i--)
    {
       string name = ObjectName (i);
       if ( StringFind (name, "sig_nal" ) == 0 )
      {
         ObjectDelete (name);
      }
    }

다른 그룹을 위해

 // удаление по маске всех объектов индюка
   for ( int i = ObjectsTotal () - 1 ; i >= 0 ; i--)
   {
       string name = ObjectName (i);
       if ( StringFind (name, "signal" ) == 0 )
      {
         ObjectDelete (name);
      }
       else if ( StringFind (name, "Asignal" ) == 0 )
      {
         ObjectDelete (name);
      }
   }

여기 IgorM 함수가 있습니다.

***

(경우에 따라) ObjectName별로 정렬 (5ki와 관련이 있는지 파악하지 못함)

[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - MQL4 форум
  • www.mql5.com
[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - MQL4 форум