MQL5는 MetaTrader 5 거래 플랫폼용 사용자 지정 지표, 엑스퍼트 어드바이저(EA) 및 기타 자동매매 전략을 개발하는 데 사용되는 고급 프로그래밍 언어입니다. MQL5 언어의 주요 특징은 다음과 같습니다.
- 객체 지향 프로그래밍: MQL5는 객체 지향 언어로, 데이터와 메서드를 모두 포함하는 객체라는 개념을 기반으로 합니다. 이를 통해 더 쉽고 효율적인 프로그래밍은 물론, 코드의 체계적인 구성과 재사용이 가능합니다.
- 통합 개발 환경: MQL5에는 코드 편집기, 컴파일러, 디버거를 포함한 통합 개발 환경(IDE)이 제공됩니다. 덕분에 MetaTrader 5 플랫폼 안에서 바로 코드를 작성하고 테스트할 수 있습니다.
- 방대한 라이브러리: MQL5에는 거래 전략 개발에 활용할 수 있는 내장 함수와 지표가 풍부하게 갖춰져 있습니다. 또한 MQL5 프로그램에 통합할 수 있는 다양한 서드파티 라이브러리도 있습니다.
- 이벤트 기반 프로그래밍: MQL5는 이벤트 기반 프로그래밍 모델을 사용하며, 이는 가격 변동, 주문 체결, 타이머 이벤트와 같은 특정 이벤트에 반응하여 프로그램이 실행된다는 뜻입니다.
- 멀티스레딩: MQL5는 멀티스레드 프로그래밍을 지원하므로 여러 스레드를 생성하여 프로그램의 서로 다른 부분을 동시에 실행할 수 있습니다. 이는 성능 최적화와 복잡한 거래 전략 관리에 유용합니다.
- 다양한 데이터 유형 지원: MQL5는 정수, 부동 소수점 수, 문자열, 배열 등 폭넓은 데이터 유형을 지원합니다. 또한 가격 및 거래량 데이터와 같은 금융 데이터를 다루기 위한 기능도 내장되어 있습니다.
다음은 통화쌍의 이동평균을 계산하여 그 결과를 터미널 창에 출력하는 간단한 MQL5 프로그램 예시입니다.
// --- input parameters
input int Period = 20; // Period of the moving average
input ENUM_APPLIED_PRICE PriceType = PRICE_CLOSE; // Applied price type
// --- global variables
double MovingAverage; // Moving average value
// --- initialization function
int OnInit()
{
// Initialize the MovingAverage variable
MovingAverage = 0.0;
return(INIT_SUCCEEDED);
}
// --- main function
void OnTick()
{
// Calculate the moving average
MovingAverage = iMA(_Symbol, 0, Period, 0, PriceType, MODE_SMA, 0);
// Print the result to the terminal window
Print("Moving Average: ", MovingAverage);
}