기고글 토론 "MQL5에서 인디케이터를 호출하는 방법"

 

새로운 기고글 MQL5에서 인디케이터를 호출하는 방법 가 게재되었습니다:

새로운 버전의 MQL 프로그래밍 언어를 사용할 수 있게 됨에 따라 지표 처리 방식이 변경되었을 뿐만 아니라 지표를 만드는 새로운 방법도 있습니다. 또한 인디케이터 버퍼로 작업 할 수 있는 추가적인 유연성이 있습니다. 이제 원하는 인덱싱 방향을 지정하고 원하는 만큼의 인디케이터 값을 얻을 수 있습니다. 이 문서에서는 인디케이터를 호출하고 인디케이터의 버퍼에서 데이터를 검색하는 기본 방법을 설명합니다.

MQL5에는 인디케이터를 호출하는 여러 가지 방법이 있으며 대부분 IndicatorCreate() 및 iCustom() 함수를 사용하여 수행됩니다. 또한 이러한 함수는 인디케이터 핸들만 반환하며 인디케이터에 대한 추가 작업은 이를 통해 수행됩니다. 그래서 핸들은 무엇입니까? IndicatorCreate()iCustom() 함수를 처리하는 방법은 무엇입니까? 전문가가 인디케이터 데이터를 어떻게 얻을 수 있을까요? 이 모든 질문은 이 글에서 다룹니다.

소스 파일 만들기

전문가와 함께 시작하기 위해 소스 파일을 만들어 보겠습니다. MetaEditor4에서와 마찬가지로 File-> New 메뉴에서 MQL5 마법사를 호출하여 이 작업을 수행합니다. 첫 번째 단계에서 Expert Advisor를 선택하고 Next를 누릅니다.


작성자: KlimMalgin

 
유용한 기사입니다. 감사합니다.
 

좋음 ++

고마워요.

 

설명해 주세요.

" IndicatorCreate() 를 사용하여 표시기 핸들 가져오기"에서

배열 만들기

MqlParam params[];      // 표시기 매개변수 저장용 배열

유형을 지정하지 않고 필요에 따라 배열 유형을 변경합니다.

어떻게 작동하나요? 모든 구조에 사용할 수 있나요, 아니면 이 구조에만 사용할 수 있나요? 기존 배열의 유형만 변경할 수 있나요?

 
MqlParam 유형의 매개변수 배열은 핸들을 만들 때만 IndicatorCreate() 함수에 필요합니다. 무언가를 변경하려면 IndicatorRelease를 사용하여 현재 핸들을 "죽이고" 새 핸들을 만들어야 합니다. 이동 중 "엔진 변경" 인디케이터는 제공되지 않습니다.
 

하지만 기사에서, 본문에서

   ***
   // 느린 MA의 기간 설정
   params[0].type         =TYPE_INT;
   params[0].integer_value=21;
   ***

그리고 그 뒤에

   ***
   ArrayResize(params,2);
   // 단계
   params[0].type         =TYPE_DOUBLE;
   params[0].double_value = 0.02;
   ***
아무것도 삭제되지 않고 유형이 변경되었습니다.....
 
케이터링에 비유해 보겠습니다. 웨이터가 쟁반에 음식을 담고 주문을 받습니다. 그런 다음 웨이터가 같은 쟁반에 다른 고객의 음식을 놓고 주문을 받습니다. 이것은 다른 손님과 같은 음식을 먹는다는 것을 의미할까요?
 

따라서 웨이터의 트레이에만 다른 저녁 식사가 제공될 수 있습니다. 좋아요, 실험해볼게요.

int][double]과 같은 혼합 유형의 배열에 대한 계획이 있나요?

 
Silent:

따라서 웨이터의 트레이에만 다른 저녁 식사가 제공될 수 있습니다. 좋아요, 실험해볼게요.

int][double]과 같은 혼합 유형의 배열에 대한 계획은 없나요?

구조를 사용하려면 도움말의 예제( https://www.mql5.com/ru/docs/basis/types/casting#casting_structure)를 참조하세요:

또 다른 예는 색상 유형에서 RGB(빨강, 초록, 파랑) 색상 표현을 얻기 위해 자신만의 함수를 구성하는 방법을 보여줍니다. 이를 위해 크기는 같지만 내부 구성이 다른 두 개의 구조를 만듭니다. 편의를 위해 RGB 표현의 색상을 문자열로 반환하는 함수를 구조에 추가해 보겠습니다.

#property script_show_inputs
input color          testColor=clrBlue;// 테스트 색상 설정
RGB 색상 표현을 위한 //--- 구조
struct RGB
  {
   uchar             blue;          // 파란색 구성 요소
   uchar             green;         // 녹색 색상 구성 요소
   uchar             red;           // 빨간색 구성 요소
   uchar             empty;         // 이 바이트는 사용되지 않습니다.
   string            toString();    // 함수를 문자열로 수신합니다.
  };
//--- 함수를 사용하여 색상을 문자열로 출력합니다.
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- 내장된 유형 색상을 저장하는 구조 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 기능|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- RGB로 저장할 변수
   RGB colorRGB;
//--- 색상 유형 저장용 변수
   builtColor test;
   test.c=testColor;
//--- 두 구조체의 내용을 복사하여 변환하기
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Rosh:

구조를 사용하려면 도움말의 예제( https://www.mql5.com/ru/docs/basis/types/casting#casting_structure)를 참조하세요:

구조에 대해 어느 정도 이해하고 배열에 관심이 있습니다.

고마워요.

 
Silent:

저는 구조에 대해 어느 정도 알고 있고 배열에 관심이 있습니다.

감사합니다.

구조를 만들고 이 유형의 배열을 입력해 보세요.