English
中文
日本語
ID
Vietnam
한국어
Filipino
 
   대학 내비게이션

외환 MQL4 지능형 거래 시스템 템플릿 및 구조

MQL4 Expert Advisor Template & Structure

특정 Expert Advisor에는 대략 6개의 구조적 요소가 있으며, 그 중 5개는 선택 사항이고 단 1개만이 필수 요소입니다. 예, EA의 구조는 하나의 기본 부분만 아는 것처럼 간단할 수 있지만 결국에는 모든 부분을 알고 싶어하게 됩니다. MQL4 Expert Advisor 템플릿 및 구조에 대한 전체 튜토리얼에서 거래 EA를 프로그래밍하는 데 도움이 되는 변수 및 기타 기능을 추가하는 방법을 알아보세요.


전문가 조언 마법사를 클릭할 때(MetaEditor에서 새로 만들기/파일을 선택하거나 도구 모음에서 새로 만들기 버튼을 누르거나 키보드에서 Ctrl + N을 누르세요) , 대부분의 구조 부재를 쉽게 볼 수 있습니다. 대화 상자에서 "Expert Advisor"를 선택하고 "Next"를 누른 후 원하는 이름, 작성자 및 링크를 입력하십시오. EA는 선택한 이름으로 \experts 폴더에 저장됩니다.


다음으로 몇 가지 외부 변수를 추가할 수 있습니다. 추가 버튼을 클릭하면(이렇게 하면 외부 변수 목록에 새 레코드가 추가됩니다), 각 레코드에는 이름(변수 이름을 설정하려면 두 번 클릭), 유형(데이터 유형을 설정하려면 두 번 클릭), 세 개의 필드가 포함되어 있습니다. 및 초기 값(변수 초기화 값을 제공하려면 두 번 클릭). 샘플 BasicTemplate EA에 세 가지 변수를 추가했습니다:

< /tbody>
이름유형초기 값
많은더블0.1
TakeProfitint250
StopLossint150

여기에 변수를 너무 많이 입력하는 것은 대부분 수동으로 입력해야 하기 때문에 시간 낭비입니다. "완료" 버튼을 누르면 EA 템플릿이 아래와 같은 문서를 열게 됩니다.



참고: 처음 mql4 프로그래밍을 배웠을 때 전문가를 기대하고 있었습니다. Advisor Wizard 거래 아이디어를 번역하고 코딩하는 데 도움을 주세요. 실제로 이는 템플릿의 빈 셸을 렌더링하는 것 외에는 아무 작업도 수행하지 않습니다. 정말 불쌍한 마법사야! 후속 기사에서는 여러분이 사용하고 배울 수 있는 보다 완전한 템플릿을 제시하겠습니다.


//+——————————————————–+

//| BasicTemplate.mq4 |

//| Copyright © 2011, ExcelMarkets |

//| /school |

//+——————————————————–+

// Structure #1 (Optional): Directives
#property copyright “Copyright © 2011, excelmarkets.com”

#property link “/school”// Structure #2 (Optional): Input parameters

extern double Lots=0.1;

extern int TakeProfit = 250;

extern int StopLoss = 150;

// Structural #3 (Optional): expert initialization function

int init()
{

//—- start up code
return(0);
}

// Structure #4 (Optional): expert deinitialization function
<structural#4>
int deinit()
{

//—-  shutdown code
return(0);
}

// Structure #5 (Essential): expert start function

int start()
{

//—- your trade conditions and orders
return(0);
}

// Structure #6 (Optional): Custom Functions
</structural#4>

int customfunction1(){
// your custom option conditions
return (0); }

void customfunction2(){
// your custom function conditions
}

위의 내용은 특정 EA의 기본 구조와 비슷하며, 이에 생명을 불어넣는 코드가 없습니다. 각 구조 요소에는 설명이 필요합니다.

구조 요소 #1(선택 사항): 전처리기 지시문

MQL 템플릿에 나타나는 첫 번째 항목은 다음으로 시작하는 전처리기 지시문입니다. #, 템플릿에는 작성자 이름인 #property copyright와 마법사에 들어갈 수도 있고 들어가지 않을 수도 있는 #property 링크라는 두 가지가 있는 것을 볼 수 있습니다. 이것은 Expert Advisors와 관련된 유일한 두 가지 속성 지시어이며, 포함 또는 제외는 전적으로 선택 사항입니다.


일부 EA에서 볼 수 있는 또 다른 전처리기 지시문은 #include 지시문입니다. 포함 파일은 컴파일 시 프로젝트에 포함될 함수와 소스 코드로 구성되며 구문은 다음과 같습니다.


#include < filename.mqh > ;< /p>


보실 수 있는 표준 포함 파일은 #include stdlib.mqh입니다. 이 파일에는 MetaEditor와 함께 제공되며 프로그래머가 찾을 수 있는 유용한 기능이 여러 개 포함되어 있습니다.


다른 파일(예: 다른 EA, 라이브러리 파일 또는 Windows dll 파일)에서 컴파일된 함수를 사용하려는 경우 #을 사용할 수 있습니다. import 지시어를 사용하여 이러한 기능을 프로젝트로 직접 가져올 수 있습니다.


대부분의 라이브러리 파일은 #import 지시문을 사용하여 호출됩니다.

#include 및 #import와 같은 전처리기 지시문을 사용하는 것은 일반적으로 고급 프로그래머를 위한 것입니다. 나는 그것을 여기에 게시할 것이라고 생각했습니다. 그래서 당신은 그것을 사용하는 전문 조언자를 볼 때 그것이 무엇인지 알 수 있을 것입니다.

구조 요소 #2(선택 사항): 외부 및 전역 변수

코드의 다음 부분은 외부 변수이며 매우 유용합니다.


변수는 나중에 사용하기 위해 무엇인가, 특히 숫자를 저장할 수 있는 작은 상자와 같습니다. 이 개념은 수학에서 차용한 것입니다(1의 값이 변수 x에 저장되는 x = 10이라는 진술을 기억하십시오). 그 시점부터 x 값이 변경될 때까지 x 값은 10입니다. x에 대한 모든 참조는 값 10으로 대체됩니다.


물론 프로그램의 다른 부분 내에서 변수를 선언할 수 있지만 이 섹션에 변수를 넣고 그 앞에 extern이라는 단어를 붙여서 다음을 수행할 수 있습니다. 외부(즉, Expert)에서 Expert Advisor 변수의 속성 대화 상자를 확인하세요.


외부 변수에는 거래 설정(랏 크기, 이익실현 및 손절매) 및 지표 설정과 같은 프로그램의 조정 가능한 매개변수를 넣을 수 있는 곳입니다. Expert Advisor의 Expert Properties 대화 상자를 열면 프로그램의 외부 변수가 표시됩니다.


변수 앞에 extern을 추가하여 외부 변수를 지정한다는 점에 유의하세요. Extern은 변수가 외부 변수임을 보장합니다. 즉, 전문가 속성 대화 상자에 나타나며 사용자가 보고 조정할 수 있습니다.


external int stoploss = 150;


내가 암시했듯이 변수는 다음과 같습니다. 모든 프로그래밍 언어의 기본 저장 장치이며 프로그램을 실행하는 데 필요한 데이터를 보유합니다. 변수를 선언해야 합니다. 변수를 선언하려면


데이터 유형(예: int), 공백, 식별자(예: :StopLoss), 등호, 기본값(예: 150).


데이터 유형은 숫자, 텍스트 문자열, 날짜, 색상 등 변수가 보유하는 정보 유형을 지정합니다. 변수에 대한 자세한 내용은 MQL4 기본 튜토리얼의 변수 설명을 참조하세요.


변수 앞에 extern을 넣지 않으면 변수는 여전히 유효하며 내부 변수입니다. 즉, 전문가 속성에는 표시되지 않습니다. 대화. 이 섹션에서 내부 및 외부 변수를 선언하면 전역 변수가 된다는 장점이 있습니다. 즉, 프로그램의 모든 함수에서 사용할 수 있다는 의미입니다. 프로그램이 실행되는 동안 전역 변수와 해당 값은 메모리에 남아 있으며 프로그램의 모든 함수에서 참조할 수 있습니다.


참고: EA의 이 부분에서 외부 및 내부 변수를 선언하는 것이 일관되고 편리하지만 반드시 필요한 것은 아닙니다. 모든 함수 내에서 내부(외부 아님) 변수의 일부 또는 전체를 선언할 수 있습니다. 작은 단점은 변수가 모든 함수에 전체적으로 적용되지 않고 해당 함수에만 적용된다는 것입니다.



구조 요소 #3(선택 사항): 전문가 초기화 기능

init() 함수는 다음과 같은 경우 선택 사항입니다. 사용하지 않으면 생략됩니다.


이것은 다른 기능보다 먼저 실행되는 기능입니다.


init() 함수가 실행되기 시작합니다:


프로그램이 연결된 후 차트에;


클라이언트가 시작된 후;


거래 기호 이후 및/또는 차트 기간이 변경되었습니다;


metatrader에서 프로그램을 다시 컴파일한 후;


전문가 창에서 입력 변경 후;


계정 변경 후.


start() 함수는 첫 번째 인용문에서 실행되지만 init()는 (들어오는 인용문에 관계없이) 추가 직후에 실행됩니다. 서버에 연결되어 있지 않으면 실행되지 않습니다. 프로그램 루프에서 한 번만 호출되고 다시 호출되지 않습니다.


init() 함수를 사용할 때 일반적으로 코드를 거의 입력하지 않습니다. 이 기능에 배치된 가장 일반적인 코드는 계정 보호 체계(EA를 사용자 계정에 잠그는 코드)와 특정 통화 쌍 및 거래 시간에서 작동하도록 프로그램을 잠그는 것입니다.


저는 보통 여기에서 보시는 것처럼 이 부분에 핍과 슬리피지 값을 자동으로 정의하는 코드를 배치합니다.


구조 요소 #4(선택 사항): 전문 초기화 해제 기능

deinit() 기능도 선택 사항이며 사용하지 않는 경우 생략할 수 있습니다. 전문 고문에게는 필요하지 않을 것입니다.


이것은 프로그램이 닫힌 후 호출하는 마지막 함수입니다. 여기에 원하는 내용을 삭제할 수 있습니다.


함수는 다음과 같이 호출됩니다:


MetaTrader 4로 작업을 수행할 때, 또는 가격 차트를 닫을 때;


거래 계좌 간에 전환할 때;


타임테이블의 기간을 변경할 때;


가격 차트에서 판단을 제거할 때;

< br/>

expert의 매개변수를 변경할 때


MetaEditor에서 프로그램을 다시 컴파일할 때

< p>

대부분의 경우 deinit()는 전혀 사용되지 않습니다.

구조 요소 #5(기본): 전문가 시작 기능

이 기능은 지능형 거래 시스템의 가장 중요한 기능이며 언제든지 가장 중요한 작업을 수행할 수 있습니다. 대부분의 코드를 사용자 지정 함수에 넣지 않는 한 일반적으로 대부분의 코드가 있는 위치이므로 특별한 주의를 기울일 가치가 있습니다.


항상 다음으로 시작합니다:

(){


< p >그리고 항상


; }


시작 부분에서 (0)을 반환합니다. 마감 라인과 마감 라인에는 거래 개시 및 청산에 대한 모든 조건은 물론 다양한 거래 절차 및 조건을 배치할 수 있습니다.


start() 함수는 모든 틱에서 실행되며 수신된 모든 데이터 틱에 대해 계속 호출됩니다. 루프라고 생각하면 가격이 움직일 때마다 시작 기능이 실행되므로 시작 기능에 입력한 모든 항목이 유사하게 실행됩니다. 실행 기능은 EA의 Movie Director와 같습니다. 액션을 호출하고 배우와 제작진에게 무엇을 해야 하는지 알려줍니다. 코드를 설정하고 다른 모든 기능을 호출합니다.


많은 EA가 모든 코드를 이 함수에 넣는 것을 보았습니다.

이 구조적 요소와 일부 외부 변수를 포함하는 완전한 기능을 갖춘 EA를 검사하려면 MetaEditor에서 MACD Sample.mq4를 열 수 있습니다. EA가 모든 내부 변수, 표시기, 시작 및 종료 조건을 시작 함수 내에 기록하는 것을 볼 수 있습니다. 몇 가지 명백한 외부 변수 외에 다른 구조적 부분은 없습니다. 아마도 작성하는 데 있어 가장 간단한 EA 중 하나일 것입니다. 이것이 아마도 모든 MT4 다운로드에 포함되어 있는 이유일 것입니다. 이점은 높지 않을 수 있지만 작성이 간단하고 명확하여 프로그래머에게 학습을 알리는 데 도움이 됩니다.


다음 몇 개의 기사에서는 주로 start() 함수의 코드와 일부 사용자 정의 함수에 중점을 둘 것입니다.


구조 요소 #6(선택 사항): 사용자 정의 함수

EA가 사용할 수 있는 다른 모든 함수는 함수 다음에 선언된 start()에 있어야 합니다. .


이러한 사용자 정의 함수는 start(), init() 또는 deinit() 함수 또는 기본 프로그램에서 호출되는 기타 함수에서 호출할 수 있습니다.

사용자 정의 함수를 만드는 아이디어는 특정 작업을 수행하는 코드 블록을 만든 다음, 일단 생성되면 프로그램의 어느 부분에서나 해당 특정 작업을 호출할 수 있다는 것입니다. 따라서 사용자 정의 기능을 사용하면 작업이 매우 깔끔하고 편리해집니다.


맞춤 함수의 몇 가지 예는 다음과 같습니다.


일괄 함수

< p>

주문 집계 기능


주문 접수 기능


< / p>

주문 마감 기능


추적 손절매 기능


다다다


많은 프로그래머가 EA를 구동하기 위해 사용자 정의 함수를 사용하는 것을 보았으므로 start() 함수에는 코드가 거의 필요하지 않습니다. 사용자 정의 기능을 시작 기능에 삽입하기만 하면 EA가 닫히고 실행됩니다.


다른 EA에서 흥미로운 사용자 정의 기능을 찾으면 이를 복사하여 자신의 EA에 붙여넣고 프로그램의 다른 부분에서 추출하여 호출할 수 있습니다. 사용자 정의 함수의 모든 코드가 어떻게 작동하는지 완전히 이해할 필요는 없으며 작동 방식만 이해하면 됩니다. 구체적인 내용은 나중에 확인하실 수 있습니다.


향후 기사에서는 모든 EA에서 신속하게 구현할 수 있는 몇 가지 유용한 사용자 정의 기능을 자세히 설명하겠습니다.


참고: 모든 사용자 정의 기능은 시작 기능 아래에 위치합니다. 시작 기능 내에 있지 않고 아래에 있어야 합니다. 시작 기능에 들어가면 제대로 컴파일되지 않을 수도 있지만 EA를 혼란스럽게 할 것입니다.