MQL로 작성된 UI 갤러리 - 페이지 61

 
hini #:
테스터에서는 OnChartEvent를 호출하지 않기 때문입니다.

를 호출하지 않았기 때문입니다. 그러나 MT4의 동일한 상황에서 가능한 변형이있었습니다. 그중 하나를 성공적으로 구현했습니다. 이 인터페이스는 일반 모드에서 실행되는 Expert Advisor에서 작동했지만 테스터에서 실행되는 복사본을 제어 할 수있었습니다. 연결은 리소스를 통해 실현되었습니다. 차트상의 EA는 테스트 과정에서 모든 데이터를 수신했습니다. MT5에서는 상황이 더 복잡할 수 있습니다. 리소스를 통해 두 복사본 간에 "통신"을 설정하는 것이 가능할지 확실하지 않습니다. 이 문제는 별도의 연구가 필요합니다.

 
다음 주제로 넘어가겠습니다:

개별 항목 속성 목록 탐색하기 4.

//-----------------------------------------------------------------------------------------

고려해야 할 주제 목록을 상기시켜 드리겠습니다:

1. 인텔리센스 목록에서 방향을 잡고 오른쪽 창의 기능을 선택합니다.

2. 프로그래밍 방식으로 창 열기 및 닫기.

3. 인텔리센스 목록에서 방향을 잡고 올바른 창에서 올바른 항목을 선택합니다.

4. 개별 요소 속성 목록을 탐색합니다.

5. 요소 및 창 래퍼 함수의 이름 파싱하기.

6. 선택한요소의 매개변수 값을 해당 유형의 변수로반환하기. 여러 가지 요소의 세 가지 유형을 고려합니다.

7. 서로 다른 유형의 요소의 매개변수에 값 설정하기. 이러한 요소의 인터페이스 창에 값이 어떻게 표시되는지 살펴봅시다.

8. 한 요소의 매개변수 값을 반환하고 해당 값을 수정하여 다른 요소로전달하기. 다양한 유형의 요소와 값을 고려하고 서로 다른 창에서 서로 다른 유형의 요소 간 전달을 테스트해 보세요.

9. 이전 값(_V_LAST) 반환하기. 언제, 어떤 경우에 마지막 값이 필요한지(현재 값과 혼동하지 마세요).

10. 다양한 유형의 요소에 대한 켜기/끄기/잠금/잠금 해제 상태의 설정을 테스트합니다.

11. 버튼과 슬라이더가 있는 입력 필드와 같이 서로 다른 유형의 요소의 값 변경을 연결하고 동기화해 봅시다. 한 요소(수동 또는 소프트웨어)의 값이 변경되면 두 번째 요소의 값도 그에 따라 변경된다고 가정해 봅시다.

12. 래퍼 함수를 통해 슬라이더와 버튼이 있는 입력 필드의 범위 경계를 프로그래밍 방식으로 재설정해 보겠습니다. 테스트 할 시간이 없었지만 작동 할 것이라고 제안합니다. 하지만 두고 봅시다.

13. 래퍼 함수를 통해 요소 상태를 반환해 보겠습니다. 기능에 포함되어 있지만 테스트할 시간이 없었습니다. 그럼 어디 보자... 결과는 알 수 없습니다.

14. 텍스트와 요소 기본 색상을 가져와 설정해 봅시다. 이 색상을 간단한 이벤트나 값 경계와 연관시켜 볼 수 있습니다.

15. 새 API 파일 출력물을 탐색하고 읽는 방법에 대해 자세히 설명하겠습니다.

//------------------------------------------

노란색은 이미 다룬 주제를 나타냅니다.

 
주제를 하나씩 자세히 살펴보겠습니다:

  • 요소의 '관련성'에 따라 속성을 목록으로 분리하는 개념이 성공적으로 구현되었습니다.
  • 구현 결과, 모든 유형의 요소에 대해 7개의 고유한 속성 목록이 만들어졌습니다.
  • 각 목록에는 특별한 식별자가 할당됩니다. 이것은 접두사 p (속성 약어)와 일련 번호입니다.
  • 결과적으로 각 목록은 인텔리센스에서는 p1, p2, p3, p4, p5, p6, p7의 7가지 접두사로 찾을 수 있습니다 .
  • 편의와 혼동을 피하기 위해 속성 목록의 접두사는 래퍼 함수의 이름에 각인되어 있습니다:

  • 접두사를 입력하면 개별 속성 목록이 나타납니다. 이 점이 매우 중요하기 때문에 일부러 '개별'이라는 단어를 강조했습니다.
  • 속성 값을 반환하고 설정하려면, 래퍼 함수는 자신의 이름에 접두사가 붙은 프로퍼티 이름만 허용합니다.:


//--------------------------------------------------------------------------------------------------------------


  • 목록의 이러한 속성만 체크박스에 사용할 수 있습니다. 그러나 목록 자체는 확인란뿐만 아니라 다른 요소에도 속합니다.

//--------------------------------------------------------------------------------------------------------------


  • C_LIST 요소에는 아직 목록에 특별한 속성이 없습니다. 래퍼가 수행할 수 있는 작업(마지막 값인 V_LAST 반환 제외)만 있습니다.

//--------------------------------------------------------------------------------------------------------------


  • C_LIST와 달리 슬라이더에는 사용 가능한 속성 및 작업 목록이 많이 있습니다.

//--------------------------------------------------------------------------------------------------------------


  • 사용 가능한 다양한 속성 및 작업은 S_EDIT 요소에 속합니다:


강조 표시가 추가되었습니다:

각 래퍼 함수는 이름에 접두사가 포함된 속성만 허용합니다.


이것이 실제로 목록 작업이 이루어지는 방식입니다(래퍼 함수의 괄호 안에서는 인텔리센스 기능이 작동하지 않으므로 끝에 대괄호를 넣으세요):

GIF의 속도가 약간 빨라집니다.


GIF에 표시된 호출의 결과로 래퍼 함수는 지정된 프로퍼티의 값을 반환합니다.

호출 전에 속성 값 또는 함수 실행 결과를 저장할 변수를 선언해야 합니다. 이에 대한 자세한 내용은 다음 항목에서 확인할 수 있습니다.

 

5.
요소 이름 및 창 래퍼 함수 구문 분석하기:


1. 요소 래퍼 함수 이름:

EDIT 텍스트 입력 필드 요소 함수 예제: w7_s_p4_EDIT_Comment_1() 을 살펴봅시다 ;

//-------------------------------------------------------------

  • w7 - 창 번호 7

//-------------------------------------------------------------
  • s - 이 래퍼 함수 문자열의 반환 값 유형.

//-------------------------------------------------------------
  • p4 - 이 요소 유형의 속성 목록의 접두사.

/ / - ------------------------------------------------------------
  • 편집 - 엘리먼트 유형.

//-------------------------------------------------------------

  • Comment_1 - 특정 요소의 이름입니다 .

//-------------------------------------------------------------


2. 창 래퍼 함수의 이름입니다:

다른 함수를 예로 들어 보겠습니다: w_15_Processing_the_data();

//-------------------------------------------------------------

  • w_15 - 창 번호 15
숫자는 w 바로 뒤에 오는 것이 아니라 대시 _를 통해 온다는 점에 유의하세요 . 이것이 중요합니다.

) // - ------------------------------------------------------------
  • 처리_the_data - 이 창의 이름 (경고 창의 경우 이름이 캡션(창 헤더의 텍스트)과 일치하지 않을 수 있음).

//-------------------------------------------------------------

창 함수에는 아직 속성 목록을 열기 위한 접두사가 없다는 점에 유의해야 합니다. 이 기능은 곧 추가될 예정입니다. 반환/설정할 창 속성의 특수 목록이 생성되고 접두사가 할당될 것입니다. 또한 창 함수에는 아직 반환 유형 문자가 포함되어 있지 않습니다.

현재로서는 이 함수는 창을 열거나 닫을 수만 있습니다.


이러한 결함은 다음 릴리스에서 수정될 예정입니다.


 
이 튜토리얼 정보는 비공개로 한 번만 따로 요약하는 것이 좋습니다. 그렇지 않으면 향후 댓글이 넘쳐날 수 있습니다.
 
hini #:
이 교육 정보를 비공개로 한 번만 따로 요약하는 것이 좋습니다. 그렇지 않으면 향후 댓글이 넘쳐날 수 있습니다.
물론 이 정보는 그대로 요약되고 순서대로 정렬됩니다.
 
현재로서는 지침, 설명 및 의견의 순서가 이제 막 형성되고 있습니다. 향후 문서의 내용은 개발 및 사용자와의 커뮤니케이션 과정에서 조화롭게 축적됩니다. 결과적으로 배경 정보가 부분적으로 제공됩니다. 피드백을 받는 것은 필수적이며 기술 솔루션의 품질을 높이는 중요한 단계입니다. 소프트웨어는 형성 단계를 거치며 대중의 적극적인 참여 덕분에 완전한 기능을 달성할 수 있습니다. 그 결과 자세한 문서가 포함된 완전한 프로그램이 완성될 것입니다.
 

6.매개변수 또는 속성값을필요한 유형의 변수로반환합니다:


요소 매개변수의 유형(int, double 또는 string) 에 따라 요소 함수의 유형이 결정됩니다.

엘리먼트 함수는 매개변수의 값을 int, double 또는 string의 세 가지 유형 중 하나로 반환하는 것으로 알려져 있습니다.

그러나 함수는 속성 값도 반환합니다...

매개변수 값의 유형이 항상 int인 속성 유형과 일치하지 않는 상황이 발생할 수 있습니다 . 함수가 int 대신 double 또는 string과 같이 잘못된 유형의 속성 값을 반환하는 경우가 있습니다. 이러한 불편함은 함수의 범용성을 위해 어쩔 수 없이 치러야 하는 대가입니다.

사용자의 임무는 를 사용하여 수신된 값을 필요한 유형으로 직접 변환하는 것입니다..


모든 엘리먼트 프로퍼티의 기본 유형은 int입니다.


질문과 답변 예시를 자세히 살펴보겠습니다:

  • - 질문: 함수 유형이 문자열인 경우 함수는 어떻게 int 유형의 속성 값을 반환하나요?
  • - 답변: 함수는 문자열 유형인 int 값을 반환합니다.
  • - 질문: 함수 유형이 double인 경우 함수는 어떻게int 값을 반환하나요?
  • - 답변: 함수는 이중 타입의 int 값을 반환합니다.
  • - 질문: 함수 유형이 int인 경우 함수는 어떻게 double 값을 반환하나요?
  • - 답변: 이중 타입의 요소 속성은 존재하지 않습니다. 요소의 매개변수 속성은 double 유형일 수 있습니다. 이 경우 함수 자체의 타입은 double이 됩니다.


매개 변수 값의 유형에 따라 요소의 함수 유형이 결정됩니다.

이중 유형의 요소에는 속성이 없습니다 . 오직 int만 있습니다. 그러나 이중, 문자열 또는 정수 유형을 허용하는 매개변수 속성이 있습니다. 예를 들어 V_CURRENT, V_LAST, V_MAX, V_MIN, V_STEP은 int 또는 double일 수 있습니다. 두 경우 모두 요소 함수도 int 또는 double이 됩니다. 그러나 매개변수의 속성이나 매개변수 자체가 int가 아닌 경우 함수는 int가 될 수 없습니다 .

슬라이더 함수가 int 유형을 반환하면 요소 생성 단계에서 사용자가 직접 매개변수 또는 속성에 정수를 할당했음을 의미합니다(예: 슬라이더 범위 또는 버튼이 있는 입력 필드를 정수 값 안에 배치).



결론: 사용자의 임무는 수신된 값을 필요한 유형으로 변환하는 것입니다.

몇 가지 실용적인 예를 살펴봅시다:

1.

   //------------------------------------------------
   //Текстовое поле ввода EDIT. Тип функции - string.
   //Получение и установка цвета текста и основания:
   //------------------------------------------------
   
   //1. Устанавливаем любой текст в пустое поле ввода:
   w7_s_p4_EDIT_Comment_1("Some random text");
   //------------------------------------------------

//------------------------------------------------------------------------------------------------------------

2.

   //------------------------------------------------
   //2. Получаем цвет основания поля ввода:
   uint Comment_1_base_color =  (uint)w7_s_p4_EDIT_Comment_1(get_s,p4_COLOR_base); 
   //------------------------------------------------
   //Выводим результат в журнал:
   Print("Comment_1_base_color  ",Comment_1_base_color);
   //------------------------------------------------

//------------------------------------------------------------------------------------------------------------

3.

   //------------------------------------------------
   //3. Назначаем основанию новый цвет:
   w7_s_p4_EDIT_Comment_1((uint)clrWheat,p4_COLOR_base); 
   //------------------------------------------------

결과를 확인합니다:


//------------------------------------------------------------------------------------------------------------

4.

   //------------------------------------------------
   //4. Получаем цвет текста поля ввода: 
   uint Comment_1_text_color =  (uint)w7_s_p4_EDIT_Comment_1(get_s,p4_COLOR_text); 
   //------------------------------------------------
   //Выводим результат в журнал:
   Print("Comment_1_text_color  ",Comment_1_text_color); 
   //------------------------------------------------


//------------------------------------------------------------------------------------------------------------

5.

   //------------------------------------------------
   //5. Устанавливаем другой цвет тексту:
   w7_s_p4_EDIT_Comment_1((uint)clrRed,p4_COLOR_text); 
   //------------------------------------------------

결과를 확인합니다:




다음으로 다른 요소 및 매개변수 속성을 가져오고 설정하는 것을 테스트해 보겠습니다. 이중 유형으로 작업해 보겠습니다.

Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается...
 

코드를 따라 테스트해 본 결과 임의 문자열의 길이가 너무 길면 자동으로 숨겨지지 않는 예기치 않은 문제를 발견했습니다.

w7_s_p4_EDIT_Comment_1("Some random text AAAAAAAA");


 
사소한 문제이므로 나중에 확인하실 수 있도록 남겨두시고, 시간이 있으시면 확인해 보시고, 그렇지 않다면 지금 당장 수정하지 마세요!