使用 MT4의 놀라운 장점 중 하나는 온라인에서 사용할 수 있는 수백 개의 맞춤형 지표를 사용하고 통합한다는 것입니다. 많은 사람들이 사용자 정의 지표 창에서 차트로 끌어서 놓아 사용자 정의 지표를 쉽게 사용할 수 있습니다. MQL4 iCustom Indicator EA 기사에서 맞춤형 지표 또는 오실레이터를 사용하여 거래하도록 Expert Advisor를 프로그래밍하는 방법을 알아보세요.
Expert Advisors의 맞춤 지표를 사용하려면 알아야 할 몇 가지 사항이 있습니다.
EA와 함께 사용하려는 사용자 지정 지표는 지표 디렉터리(MT4 표준 설치의 경우 C:\Program Files\MetaTrader 4\experts\indicators)에 있어야 합니다. EA를 실행하면 표시기 디렉터리에서 컴파일된 표시기(.ex4 파일)를 찾습니다.
iCustom()이라는 사용자 정의 표시기를 처리하기 위한 내장 함수가 있습니다. iCustom()은 코드를 처음부터 다시 작성할 필요 없이 Expert Advisor 또는 사용자 정의 표시기 코드에서 외부 표시기를 사용할 수 있게 해주는 MQL4 함수입니다.
이 함수의 구문은 다음과 같습니다:
double iCustom(string Symbol , int Timeframe , string IndicatorName, int 표시기 매개변수, int Mode, int Shift);
매개변수 설명
Symbol 사용된 데이터 기호 지표를 계산합니다. NULL은 현재 거래 기호를 나타냅니다.
시간 제한 시간 제한. 모든 시간 범위 열거 값이 될 수 있습니다.
(0)을 선택하여 현재 시간 범위를 표시하거나 다음 중 하나를 선택합니다: (1, 5, 15, 30, 60, 240, 1440, 10080, 43200) {모두 분 이내} p>
IndicatorName 네비게이터 창의 사용자 정의 표시기 목록에 표시되는 표시기 파일의 이름입니다. 예를 들어 "NonLagMA_v7.1.1"입니다.
지표
매개변수 사용자 정의 표시기 속성 창의 입력 탭에는 사용자 정의 표시기의 매개변수가 표시됩니다. 전달된 매개변수와 해당 순서는 사용자 정의 표시기의 선언 순서 및 외부 변수 유형과 일치해야 합니다. 모두 쉼표로 구분해야 합니다.
모델 행 인덱스입니다. 0~7일 수 있으며 SetIndexBuffer 함수 중 하나에서 사용하는 인덱스와 일치해야 합니다.
지표 버퍼에서 얻은 값의 이동 지수 지수입니다(현재 막대를 기준으로 특정 기간 전에 이동했습니다).
위의 6개 매개변수 중 가장 이해하기 쉬운 매개변수는 처음 3개와 마지막 매개변수입니다. 이전 기사에서 품종과 기간에 대해 논의했습니다. 지표 이름도 매우 간단합니다. 이는 내비게이터 창의 사용자 지정 지표 목록에 표시되는 시장으로 둘러싸인 지표 이름입니다. 예: 창에 NonLagMA_v7.1이라는 메트릭이 표시되면 메트릭 이름 매개변수에 "NonLagMA_v7.1"로 씁니다.
이전 기사에서 마지막 매개변수 Shfit에 대해서도 논의했지만 여기서는 간단히 검토해 보겠습니다. Shift는 지표가 계산되는 막대를 나타냅니다. 차트에서 시간을 거슬러 올라가면 막대에 0, 1, 2, 3, 4, 5...라는 번호가 지정됩니다. 이동 옵션을 변경하는 것은 표시선을 미래 또는 과거로 이동하는 것과 유사합니다. Shift 1은 이전 막대의 값을 가져옵니다. 오프셋 0은 현재 막대의 값을 가져옵니다.
합계:
shift = 0 현재 막대의 표시 값을 가져옵니다. (아직 형성 중)
shift = 이전 막대의 값 1
shift = 이전 막대 앞 막대의 값 2개
세 번째 매개변수 표시 매개변수와 네 번째 매개변수 패턴은 EA에서 발견하고 구현하기 어려울 수 있습니다.
지표 매개변수 검색
먼저 맞춤 표시 매개변수를 검색하는 방법을 살펴보겠습니다. 대부분의 경우 사용자 정의 표시기는 1개 또는 2개의 표시기 매개변수를 사용할 수 있지만 일부는 3개 이상의 표시기 매개변수를 사용하므로 검색 프로세스가 더 어려워집니다. 사용자 정의 지표 NonLagMA_7.1은 9개의 지표 매개변수를 사용하는 보다 복잡한 지표의 예입니다.
참고: 매개변수는 표시기 값을 변경하는 입력이며, 사용자 정의 표시기에 대한 최적의 설정을 지정하는 데 사용하는 변수입니다. NonLagMA_v7.1을 다운로드할 수 있습니다.
사용자 정의 표시기 속성 창의 입력 탭으로 이동하면 NonLagMA_v7.1 사용자 정의 표시기의 매개변수가 표시됩니다:
위 이미지에서는 6개의 입력을 볼 수 있지만 실제로는 9개의 입력 또는 표시 매개변수가 있습니다. 입력이 서로 다른 9개의 표시 매개변수가 있으며, 그 값은 최상의 설정을 얻기 위해 변경할 수 있으며, 그 중 하나는 표시기(길이)의 형성에 중요합니다.
표시기 매개변수를 찾는 더 좋은 방법은 소스 코드에서 매개변수를 복사하여 붙여넣는 것입니다. 사용자 정의 지표를 마우스 오른쪽 버튼으로 클릭하고 수정을 클릭하면 MetaEditor에서 해당 지표의 소스 코드를 볼 수 있습니다. 표시기가 회색이면 mq4 코드가 없고 ex4만 있다는 의미이며 이를 디컴파일하는 방법을 찾거나 위의 방법을 사용하여 속성 창에서 매개 변수를 추론할 수 있습니다.
mq4 코드가 있고 열 수 있다면 운이 좋을 것입니다. 이제 표시기의 소스 코드 시작 부분에서 외부 변수를 확인하십시오. 지표 매개변수, 데이터 유형 및 기본값이 여기에 나열됩니다. 외부 코드를 복사하여 Expert Advisor의 외부 변수 섹션에 붙여넣기만 하면 됩니다.
NonLagMA 표시기를 사용하면 다음과 같은 외부 변수를 볼 수 있습니다:
// ——입력 매개변수
외부 가격 = 0;
외부 길이 = 9; //NonLagMA 기간
외부 int 변위 = 0; //DispLace 또는 Shift
외부 double PctFilter = 0; //십진수 동적 필터
외부 색상 = 1; //색상 모드 전환(1색)
외부 int ColorBarBack = 1; //컬러 모드로 복귀
외부 이중 편차 = 0; //상한/하한 편차
외부 알람 모드 = 0; //가청 알람 스위치(0-off , 1-on)
External int WarningMode = 0; //소리 경고 스위치(0-off, 1-on)
유지 9개의 매개변수가 있지만 단 하나의 매개변수인 길이만이 표시기의 특성을 변경한다는 점을 염두에 두십시오. 대부분의 경우 0인 Color를 제외하고 다른 것들은 기본값으로 둘 수 있습니다. 마지막 두 매개변수 mode 및 Shift의 기본값으로 0을 사용하는 경우 위의 내용을 사용하여 iCustom NonLagMA 표시기 ID를 구축할 수 있습니다.
iCustom (NULL, 0, "NonLagMA_v7.1", 가격, 길이, 변위, PctFilter, 색상, ColorBarBack, 편차, AlertMode, WarningMode, 0,0).
최적화를 위해 위의 9개 매개변수 중 하나인 길이만 통화 기호 및 기간에 가장 적합한 NonLagMA를 찾기 위해 변경하거나 최적화하려는 매개변수입니다. 다른 것들은 기본값으로 유지됩니다. 일반적으로 길이를 사용자 정의 지표의 매개변수로 간주하면 이는 전략 형성에 있어 가장 중요한 매개변수가 되며, 따라서 추가 작업에서도 가장 중요한 매개변수가 됩니다.
위의 사용자 정의 표시기는 효율적으로 컴파일되어야 하지만 이를 전략에 적용하려면 마지막 두 매개변수인 mode 및 Shift를 사용하는 방법을 알아야 합니다.
검색 모드(라인/신호)
모드는 0~7 범위의 라인 인덱스입니다. MT4는 사용자 정의 지표당 최대 8개의 지표 라인(버퍼)을 허용합니다. 이러한 라인(버퍼)은 표시기 코드의 SetIndexBuffer 라인 중 하나에서 사용되는 인덱스와 일치해야 합니다.
이를 시각화하는 것이 도움이 됩니다. 표시기에는 최대 8개의 서로 다른 색상의 선/신호(또는 화살표)가 있습니다. 각 줄은 출력을 제공하고 각 줄에는 값이 있습니다. 모드를 사용하면 EA(8분의 1)에 필요한 라인(신호)을 선택할 수 있습니다. 대부분의 경우 표시기에는 하나의 라인/신호만 있으므로 mode=0을 사용해야 합니다.
모드에 대한 참고 사항: MT4는 0에서 7까지 색인을 생성하므로 모드는 0에서 7까지의 값을 갖습니다. 따라서 첫 번째 신호는 모드 = 0(1 대신)을 갖습니다. 표시기에 세 개의 표시기 라인/신호가 있고 첫 번째 라인의 값을 얻으려면 mode=0을 사용하고 두 번째 라인/신호의 값은 mode=1 및 mode=2를 사용하여 세 번째 신호의 값을 얻습니다.
좋아, 그렇다면 EA에 사용할 패턴을 어떻게 결정합니까?
이 모드의 비밀은 표시기 버퍼에 있습니다.
기본적으로 코드에서 버퍼를 찾아야 하며 이러한 버퍼는 모델 라인이 됩니다. 3개의 버퍼가 있다고 가정합니다:
iCustom(Symbol(),Timeframe,"CUSOMT INDI NAME", 쉼표로 구분된 모든 매개변수, BUFFER, SHIFT);
현재 막대의 3개 버퍼 값을 얻으려면 다음과 같이 작성합니다:
iCustom(Symbol(),Timeframe,"CUSOMT INDI NAME", 쉼표로 구분된 모든 매개변수, 0, 0);
iCustom(Symbol(),Timeframe,"CUSOMT INDI NAME", 쉼표로 구분된 모든 매개변수, 1, 0);
iCustom(Symbol() ,Timeframe e,"CUSOMT INDI NAME",쉼표로 구분된 모든 매개변수, 2, 0);
좋아, 좋아, 보자 이 버퍼 구문의 예 , 코드에 나타나는 위치.
NonLagMA 표시기의 초기화 기능에서 아래와 같이 여러 표시기 버퍼를 볼 수 있습니다.
표시기 버퍼(6);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0, MABuffer );
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpBuffer);
SetIndexStyle(2,DRAW_LINE);
< p >SetIndexBuffer(2,DnBuffer);SetIndexBuffer(3, trend);
SetIndexBuffer(4,Del);
SetIndexBuffer(5,AvgDel) ;
문자열 약어;
SetIndexStyle은 세 개의 선(DRAW_LINE)이 있음을 알려줍니다. 아래에서 SetIn
빨간색으로 강조 표시했습니다. 표시된 데이터시트는 모드(라인/신호)의 기능을 파생하는 단서를 제공합니다. NonLagMA는 첫 번째 모드(mode = 0)이며 회선 자체라고 추론할 수 있습니다. 막대 위로 마우스를 가져가면 해당 막대의 NonLagMA 행에 대한 데이터 판독값이 제공됩니다. 위쪽은 두 번째 모드(모드 =1)이며 파란색 선으로 추론할 수 있습니다.
아래에 파란색 선이 있는 막대 위로 마우스를 가져가면 데이터 판독값 제공 없이 데이터 판독값이 올라가는 것을 볼 수 있습니다. 다운스트림 행의 경우. Dn은 세 번째 모드(mode = 2)이며 빨간색 선이라고 추론할 수 있습니다. 빨간색 선이 있는 막대 위로 마우스를 가져가면 Dn 행에 대한 데이터 판독값이 제공되지만 위쪽 행에 대한 데이터 판독값은 제공되지 않는 것을 볼 수 있습니다.
트렌드의 네 번째 모드(모드 = 3)는 데이터 창에 나타나지 않지만 코드를 보면 다음과 같이 작성되어 있음을 알 수 있습니다. 현재 추세 신호 == 1이면 추세가 길고, 현재 추세 신호 == -1이면 추세가 짧습니다.
이제 NonLagMA 사용자 정의 표시기의 4가지 모드에 대한 개요를 살펴보았으므로 최소 3가지 유형의 EA 조건을 생성할 수 있습니다.
< p>크로스오버(Mode=0)와 같이 MA 라인 자체와 함께 작동하는 EA;
사용 NonLagMA가 파란색으로 변할 때 매수하고 빨간색으로 변할 때 매도하는 Up(신호(색상) 및 Dn(빨간색)에 대한 파란색 EA(모드 = 1 및 모드 = 2))
EA는 추세 신호를 사용하여 추세가 상승할 때 매수하고 추세가 하락할 때 매도합니다(모드 = 3).
다음 기사에서 각 EA 조합을 살펴보겠습니다: 맞춤 지표를 사용하여 전략 수립