English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
MetaTrader 5 와 MQL5가 제공하는 무궁무진한 기회

MetaTrader 5 와 MQL5가 제공하는 무궁무진한 기회

MetaTrader 5테스터 | 5 8월 2021, 10:13
319 0
Anatoli Kazharski
Anatoli Kazharski

'아무것도 하지 않으면 아무 일도 일어나지 않는다.'

목차

   개요
   1. 매매 시스템 조건
   2. 외부 매개 변수
   3. 매개 변수 최적화
      3.1. 제 1 변형
         3.1.1. 일반 매개 변수 및 규칙
         3.1.2. 테스터 설정
         3.1.3. 결과 분석
         3.1.4. 최적화 및 테스트 결과 분석을 위한 북리포트(BOOK REPORT) 애플리케이션
         3.1.5. 자금 관리 시스템
      3.2. 제 2 변형
      3.3. 기타 변형
   4. 시각화 테스트
   5. 인터페이스 및 제어
   6. '거래 정보' 및 '자금 관리' 정보 패널
   7. 차트 좌측 거래 정보 패널
      7.1. 매개 변수 시스템
      7.2. 거래 세션 시계
      7.3. 수동 거래
         7.3.1. 매수, 매도 및 반전
         7.3.2. 포지션 청산
         7.3.3. 대기 주문 설정
         7.3.4. 주문 및 포지션 정정
         7.3.5. 대기 주문 삭제
      7.4. 거래 실적
      7.5. 계정 및 통화쌍 관련 정보
  8. 기타 인디케이터
  결론

개요

이번 글에서는 자동 매매 프로그램의 예를 살펴보겠습니다. 그리고 아무것도 모르는 상태에서 시작해 9개월만에 제 MQL5 활용 능력이 얼마나 늘었는지도 보여 드릴게요. 매매 프로그램은 가격 차트의 아주 작은 공간만을 활용하는 반면 굉장히 유익한 다양한 기능을 가지고 있죠. 거래 정보 패널이 얼마나 한눈에 알아보기 쉬운지도 살펴보겠습니다. 단 한 번의 클릭으로 시스템 매개 변수 값을 얻는 기능과 최대의 편의성을 유지하는 동시에 다양한 전략과 신호들을 결합해 얼마나 멋진 시스템을 구축할 수 있는지 한번 보죠.

매개 변수 최적화와 시스템 테스팅 시 어떤 점에 주의해야 하는지도 알려 드리겠습니다. 자금 관리 시스템 설정 시 고려해야 할 요소에는 어떤 것들이 있는지도요. 단일 매개 변수를 이용하는 하나의 표준 인디케이터를 활용한 시스템에서 얼마나 좋은 결과를 얻을 수 있는지도 봅시다. 상세 거래 보고서에 대해서도 알아볼 겁니다. 마지막으로 자동, 반자동 및 수동 거래 리소스를 하나의 프로그램으로 합치는 방법도 알려 드릴게요.

이 글의 난이도는 중 정도가 되겠네요. 이미 MQL5를 익히는 중이지만 아직 실전에 도전하기 부족하다고 느끼는 분들께 도움이 될 겁니다. 개발자시라면 일종의 요구 명세라고 보아도 좋습니다.

아래에 소개될 기능을 아직 잘 모르시는 분들도 계실 겁니다. 이 글을 다 읽고 새로운 아이디어가 떠오르면 웹사이트의 구인구직 게시판을 통해 시스템 제작을 주문할 수도 있을 것이고, 직접 만들어 볼 수도 있겠죠. 본문 자체가 굉장히 길기 때문에 코드 예제는 없으며 각 코드에 대한 글을 따로 올리도록 하겠습니다.

이번 글을 MQL5 리소스 활용 가이드라고 생각하셔도 괜찮겠네요. 제가 시스템 개발을 하면서 고려했던 몇 가지 아이디어들이 템플릿처럼 제공될 겁니다.

한 투자 관련 책에서 자동 매매 시스템이 자동차 범퍼 크기 안에 들어갈 정도로 간단한 경우도 있다고 읽었습니다. 그래서 간단한 시스템을 많이 만들어 봤는데 원하는 결과가 나오지는 않더군요. 그렇다고 해서 그런 시스템이 없다는 말은 아니랍니다. :)

1. 매매 시스템 조건

매매 시스템 조건은 가격 차트 내 교차 레벨을 기반으로 합니다. 해당 레벨들은 변형 가격 채널 인디케이터를 기반으로 결정되는데요. 총 5개의 레벨이 매매, 매수 및 기존 포지션의 반전을 촉발시킵니다.

다음은 가격 채널 인디케이터의 모습입니다.

그림 1. 변형 가격 채널 인디케이터(5개 레벨)

그림 1. 변형 가격 채널 인디케이터(5개 레벨)


각 레벨은 다음과 같습니다(위에서 아래로).

  • H_PCH-최대 바 개수 기준
  • MH_PCH-가격 채널 중심 지점과 최고점의 중간 지점
  • M_PCH -가격 채널 최고점과 최저점의 중간 지점
  • ML_PCH-가격 채널 최저점과 중심 지점의 중간 지점
  • L_PCH-최소 바 개수 기준

바가 완성된 경우에만 교차 레벨이 인정됩니다. 완성된 바만 이용해서 거래하는 거죠.

포지션 오픈, 청산 및 반전 조건은 다음의 네 그룹으로 분류됩니다.

  1. ML_PCH 레벨 업크로싱 시 매수 시그널/MH_PCH 레벨 다운크로싱 시 매도 시그널
  2. M_PCH 레벨 업크로싱 시 매수 시그널/다운크로싱 시 매도 시그널
  3. MH_PCH 레벨 업크로싱 시 매수 시그널/ML_PCH 레벨 다운크로싱 시 매도 시그널
  4. H_PCH 레벨 업크로싱 시 매수 시그널/L_PCH 레벨 다운크로싱 시 매도 시그널

빈번하게 발생하는 또한 고려해야 합니다. 따라서 위의 조건과 더불어 추가적으로 실제 교차가 일어났는지를 확인할 필요가 있습니다.

완성된 바에서 교차가 관찰되지 않으면서 새로운 바의 개장가가 해당 레벨 이상인 경우 실제 교차가 일어납니다. 쉽게 확인되지 않는 경우들이 많으므로 매매 전략 개발 시 굉장히 꼼꼼하게 살필 필요가 있습니다. 저는 시각화 모드를 이용해 과거 기록을 차례차례 꼼꼼하게 분석해 봅니다.

위의 조건 그룹은 모두 단독적인 매매 전략으로도 사용 가능합니다. EA는 매직 넘버를 이용해 포지션이 속하는 그룹을 찾아냅니다.. MetaTrader 5 의 경우 하나의 통화쌍당 하나의 포지션만 오픈 가능하므로 서브포지션 오픈 시 기존 포지션의 크기가 변경됩니다.

관련 정보 및 구현 코드는 '매직 넘버로 전체 포지션 볼륨 계산하기''단일 상품에 대한 다중 엑스퍼트 어드바이저 거래 시 ORDER_MAGIC 사용법'을 참조하세요. 개선이 필요한 부분에 대한 설명도 포함되어 있습니다.

제가 발견한 서브포지션 거래량 관련 문제는 모두 해결했습니다. 

다음의 경우 거래량에 오차가 발생할 수 있습니다.

  • EA에서 찾을 수 없는 매직 넘버로 단일 포지션 또는 전체 포지션 청산
  • 터미널 기본 리소스를 이용한 단일 포지션 또는 전체 포지션 청산 (매직 넘버 없음)
  • 손절 또는 이익 실현을 통한 포지션 청산
  • 손절, 이익 실현 또는 서로 다른 매직 넘버를 갖는 대기 주문이나 매직 넘버가 없는 서로 다른 기간에 대한 대기 주문을 통한 포지션 청산
  • EA는 전역 변수 값을 따릅니다. 전역 변수가 삭제되는 경우, EA는 기록 유지를 위해 해당 변수를 동일한 값으로 복원시킵니다.
  • 프로그램 재컴파일, 삭제된 차트 복원, EA 삭제 후 재다운로드, 터미널 또는 컴퓨터 재부팅

위 상황에서 EA는 정확한 서브포지션 볼륨을 다시 기록합니다. 관련 내용을 이용하여 부정확한 기록의 원인이 되는 다른 상황들을 추가해서 EA를 개발할 수도 있겠죠. 저는 이 도식도를 매직 포인트(magic point)라고 부르는데요. :) 여기에 대해서는 별도로 글을 쓸게요.

손절이익 실현 지점은 각 서브포지션별로 상이합니다. 또한, 각 지점은 단 한번만 설정 가능하므로 인터넷 연결이 끊기지 않는 이상 포지션 오픈 시 실제 손절이익 실현 주문이 아닌 동일한 특성의 대기 주문이 자동 설정됩니다.. 즉, 서브포지션에 매수 주문이 설정되는 경우, 동일한 볼륨의 대기 주문이 자동적으로 설정됩니다.

손절역지정가 매도 대기 주문으로, 이익 실현지정가 매도 대기 주문으로 대체됩니다. 오프라인 상태에서 특정 서브포지션에 대한 특정 주문이 실행되는 경우 대체 대기 주문이 삭제되지 않으며 오프라인 상태 유지 시 결과 예측이 어려워지므로 인터넷 연결이 계속 유지되어야 합니다.

인터넷 연결 상태를 최대한 제어할 수 있어야 합니다. 백업 인터넷 연결이나 VPS 등을 이용하세요. 기타 불가항력적 상황이 발생할 경우 필요한 보안 조치에 대해서는 후술하겠습니다.

VPS(가상 사설 서버) 또는 VDS(가상 전용 서버) 서비스를 통해 단독 서버를 이용할 수 있습니다.

다음은 첫 번째 조건(M_PCH 교차) 충족 시 오픈되는 매매 포지션(좌)과 매수 포지션(우)의 예입니다.

그림 2. 첫 번째 조건으로 포지션 오픈하기

그림 2. 첫 번째 조건으로 포지션 오픈하기

만약 포지션이 열려있는 동안 손절(대기 주문)이 발동하는 경우, 이익 실현 대기 주문은 즉시 삭제됩니다. 마찬가지로 이익 실현이 발동하는 경우 손절 주문이 삭제되죠. 해당 알고리즘은 모든 서브포지션에 적용됩니다.

각각의 서브포지션에는 고유의 손절이익 실현 지점이 설정되어 있으며 더이상의 필요가 없어질 경우 EA가 대기 주문을 삭제합니다. 서브포지션이 이미 열린 상태에서 반대 조건이 충족되는 경우 반전이 일어납니다. 직전 서브포지션과 관련된 모든 대기 주문은 삭제되며 새로운 서브포지션에 대한 주문이 설정됩니다.


다음은 두 번째 조건(ML_PCH/MH_PCH 교차) 충족 시 오픈되는 매매 포지션(좌)과 매수 포지션(우)의 예입니다.

그림 3. 두 번째 조건으로 포지션 오픈하기

그림 3. 두 번째 조건으로 포지션 오픈하기

다음은 세 번째 조건(매수-MH_PCH/매도-ML_PCH) 및 네 번째 조건(매수-H_PCH/매도-L_PCH) 충족 시 오픈되는 포지션의 예입니다.

그림 4. 세 번째 조건으로 포지션 오픈하기

그림 4. 세 번째 조건으로 포지션 오픈하기

그림 5. 네 번째 조건으로 포지션 오픈하기

그림 5. 네 번째 조건으로 포지션 오픈하기

한눈에 파악하기 쉽도록 가격 채널 인디케이터를 확장시켰습니다. 아래 그림은 모든 신호 옵션이 적용된 인디케이터의 모습입니다.

그림 6. MultiSignals_PCH 인디케이터

그림 6. MultiSignals_PCH 인디케이터

해당 인디케이터는 코드 베이스(MultiSignals_PCH indicator)에서 찾을 수 있습니다. 자세한 설명도 포함되어 있고요. 모든 신호는 차트에서 숨길 수 있는데요. 아래에서 설명할 EA를 바탕으로 작업하는 경우에 아주 유용하죠.

위에서 설명한 내용을 이용한다고 해서 시스템을 제어할 수 없는 경우에 발생할 수 있는 중대한 손실 또는 계좌 전체에 대한 손실로부터 여러분을 보호해 줄 수는 없습니다. 얼마나 오래 인터넷 연결이 끊어졌는지, 또 거래 예수금이 얼마인지에 따라 달라지죠.

굉장히 흔치 않은 일이긴 하지만 금융 사고에 대한 대비는 늘 되어 있어야 하죠. 보안 장치가 적은 것보다는 많은게 낫습니다. 실제 손절이익 실현 지점만 설정하면 불가항력적인 상황에 대비할 수 있습니다. 다만 EA 작동에 방해가 되지 않고 제어가 불가능한 상황에만 발동되도록 멀리 떨어진 지점으로 설정해야 합니다. 일종의 '안전 쿠션'이랄까요?

다시 말해 모든 서브포지션에 대한 손절매이익 실현 지점은 대기 주문으로 대체되며 실제 손절매이익 실현은 양쪽 가장 끝에 있는 대기 주문보다 더 멀리 떨어져 있습니다. 실제 손절매이익 실현 지점은 대기 주문과 동일한 지점에 설정되어야 합니다. 그렇지 않을 경우, 대기 주문 실행 시 포지션을 보호할 수 없습니다. 아래 그림을 참고하세요.

그림 7. '안전 쿠션' 역할을 하는 손절매/이익 실현

그림 7. '안전 쿠션' 역할을 하는 손절매/이익 실현

물론, 사용 중 인터넷이 끊긴 경우 즉시 브로커 측에 연락해 전화로 거래를 할 수도 있죠. 하지만 매매 시스템이 24시간 작동하는 경우 위에서 설명한 방법이 훨씬 안전할 겁니다. 굉장히 간단하고 효과적이죠.



2. 외부 매개 변수

EA 외부 변수에서 설정된 손절이익 실현 값은 신호 그룹별로 최적화 됩니다. MultiSignals_PCH 인디케이터의 기간 및 타임프레임 또한 그룹별로 최적화할 수 있습니다. 모든 그룹에 대한 공통 매개 변수로 설정해 최적화할 수도 있고요.

다중 통화 매매 시스템 메커니즘의 예시가 포함된 몇몇 글을 참고해서 EA 개발 도식도를 작성했는데요. Nikolay Kositsin 씨가 작성한 '복수의 금융 상품을 거래하는 엑스퍼트 어드바이저 만들기'에 이해하기 쉬운 도식도가 포함되어 있습니다. Vasily Sokolov 씨의 '거래 모델을 기반으로 다중 엑스퍼트 어드바이저 만들기'에서는 OOP가 사용된 보다 복잡한 도식도를 찾아볼 수 있고요.

아래의 표는 하나의 심볼(SYMBOL_01)(해당 버전의 경우 3개 심볼 포함)과 하나의 매매 전략(TS_01) 또는 신호 그룹(해당 버전의 경우 한 개 심볼 당 4개 그룹 존재)에 대한 간단한 EA 매개 변수 목록입니다. 숫자 01은 헷갈리지 않도록 통화쌍에 번호를 붙인 것입니다.

변수
 Number Of Try
 3
 Slippage
 100
 ================================== SYMBOL_01

 01 _ On/Off Trade
 true
 01 _ Name Symbol
 EURUSD
 * * * * * * * * * * * * * * * * * * * * * * * * * * *   

 01 _ On/Off Time Range
 false
 01 _ Hour of the Start of Trade
 10 : 00
 01 _ Hour of the End of Trade
 23 : 00
 01 _ Close Position in the End Day
 false
 01 _ Close Position in the End Week
 true
 * * * * * * * * * * * * * * * * * * * * * * * * * * *

 01 _ Period PCH (total)
 0
 01 _ Timeframe (total)
 1 Hour
 ---------------------------------------------------- TS_01

 01 _ Trade TS в„–01
 true
 01 _ Timeframe (sub)
 1 Hour
 ---

 01 _ ## - Type Entry
 #1 Cross ML up/MH dw
 01 _ Period PCH (sub)
 20
 01 _ ## - Type Take Profit
 #1 - Points
 01 _ #1 - Points
 250
 01 _ ## - Type Stop Loss
 #1 - Points
 01 _ #1 - Points
 110
 ---------------------------------------------------- TS_02

 ---------------------------------------------------- TS_03

 ---------------------------------------------------- TS_04

 ================================== SYMBOL_02

 ================================== SYMBOL_03

 ---------------------------------------------------------------------- ##
 >>> MONEY MANAGEMENT
 Fix Lot
 0.1
 Money Management On/Off
 true
 Start Deposit
 10000
 Delta
 1000
 Start Lot
 0.1
 Step Lot
 0.01
 Stop Trade
 5000
 ---
 
 Max Draw Down Equity (%)
 50
 Stop Trade by Free Margin ($)
 3000
 Stop Loss/Take Profit by Disconnect (p)
 15
 ---------------------------------------------------------------------- ##
 >>> OPTIMIZATION REPORT
 Condition of Selection Criteria
 AND
 01 _ Statistic Criterion
 이익(Profit)
 -   01 _ Value Criterion
 0
 02 _ Statistic Criterion
 Profit Factor
 -   02 _ Value Criterion
 2
03 _ Statistic Criterion
 NO_CRITERION
 -   03 _ Value Criterion
 0
04 _ Statistic Criterion
 NO_CRITERION
 -   04 _ Value Criterion
 0
05 _ Statistic Criterion
 NO_CRITERION
 -   05 _ Value Criterion
 0
 ---------------------------------------------------------------------- ## >>> ADDON PARAMETERS
 Use Sound
 true
 Color Scheme
 Green-Gray

외부 매개 변수를 이용하면 원하는 만큼의 심볼과 매매 전략을 추가할 수 있습니다. 중요한 건 매개 변수의 개수가 터미널(MetaTrader 5 )의 개발사(MetaQuotes)에서 정한 한도를 넘어서는 안된다는 거죠. 최대 1024개의 매개 변수까지 설정 가능합니다.

전체 매개 변수에 대해 자세히 설명해 드릴게요.

EA 매개 변수 설명
Number Of Try
거래 실패 시 총 시도 횟수 예를 들어, EA가 포지션 오픈에 실패한 경우 일정한 시간 동안 재시도하게 됩니다. 모든 거래 오퍼레이션에 적용됩니다.
Slippage
허용 가능한 가격 슬리피지 포지션 오픈 시 슬리피지가 발생하면 오퍼레이션이 취소됩니다. 해당 매개 변수는 타임프레임이 짧은 거래에 적합합니다.
On/Off Trade
특정 통화쌍에 대한 거래 허용(true)/불허용(false)
Name Symbol
통화쌍 종류 트레이딩 터미널의 마켓 워치 창에 입력된 값과 동일하게 입력되어야 합니다.
On/Off Time Range
특정 시간대 내 거래 허용(true)/불허용(false)
Hour of the Start of Trade
거래 시작 가능 시간
Hour of the End of Trade
거래 종료 시간
Close Position in the End Day
당일 장 종료 시 포지션 청산(true)/비청산(false)
Close Position in the End Week
해당 주 장 종료 시 포지션 청산(true)/비청산(false)
Period PCH (total)
값이 0보다 큰 경우 해당 심볼의 모든 거래 전략 인디케이터에서 공통 변수로 사용됩니다.
Timeframe (total)
Period PCH (total) 값이 0보다 큰 경우 해당 타임프레임 값이 인디케이터에 사용됩니다.
Trade TS в„–01
해당 매매 전략이 적용되는 거래 허용(true)/불허용(false)
Type Entry
해당 매매 블록에 사용될 신호 그룹을 지정
Period PCH (sub)
Period PCH (total) 값이 0인 경우 해당 값이 인디케이터에 사용됩니다.
Type Take Profit
해당 매매 전략에서 사용될 이익 실현 형식 설정 현재 버전에는이익 실현 미사용포인트(Points)의 두 가지 옵션이 있습니다. 즉, 이익 실현 기능을 사용하지 않거나 특정 포인트만큼 떨어진 곳에 이익 실현 지점을 설정합니다.
Points TP
해당 매매 전략에 사용되는 이익 실현 지점을 포인트로 지정
Type Stop Loss
현재 버전에는 손절 미사용포인트의 두 가지 옵션이 있습니다. 즉, 손절 기능을 사용하지 않거나 특정 포인트만큼 떨어진 곳에 손절 지점을 설정합니다.
Points SL
해당 매매 전략에 사용되는 손절 지점을 포인트로 지정
Fix Lot
고정 랏 값 Money Management On/Off 변수가 false인 경우, 해당 매개 변수가 거래 랏 볼륨을 지정합니다.
Money Management On/Off
자금 관리 시스템 사용(true)/미사용(false) 값이 false인 경우, 모든 거래는 Fix Lot 매개 변수에서 설정된 고정 랏 값으로 실행됩니다.
Start Deposit
자금 관리 시스템 거래 랏 계산 시작 지점
Delta
거래 랏 볼륨의 증가/감소를 결정하는 계정 내 잔액 증가/감소 값
Start Lot
거래 랏 증가/감소 기준이 되는 초기 랏
Step Lot
랏 스텝 해당 값만큼 거래 랏이 증가/감소
Stop Trade
예수금이 해당 값 아래로 떨어지는 경우 거래 중단
Max Draw Down Equity (%)
예수금이 해당 값 아래로 떨어지는 경우 거래가 중단되며 안전을 위해 EA가 차트에서 삭제됩니다. EA 삭제 후 로그에 삭제 사유가 입력됩니다. 해당 조건은 테스트 또는 매개 변수 최적화 시에도 적용됩니다.
Stop Trade by Free Margin ($)
거래 실행 전, 거래 실행 후 예수금이 해당 값 아래로 떨어지는지 확인합니다. 거래 실행 후 예수금이 해당 값 아래로 떨어지는 경우 거래가 실행되지 않습니다.
Stop Loss/Take Profit by Disconnect (p)
실제 손절이익 실현 지점 현재 거래 상한가 및 하한가 외부에 위치합니다.
Condition of Selection Criteria
ANDOR 의 두 가지 옵션이 있습니다. 최적화 리포트 매개 변수 블록에 적용되어 최적화 결과가 어떻게 작성될지 결정합니다. AND가 선택된 경우 모든 조건이 충족되어야 합니다. OR이 선택된 경우 전체 조건 중 하나 이상이 충족되어야 합니다.
Statistic Criterion
파일화될 최적화 결과 필터링 시 적용되는 조건이 되는 매개 변수를 선택하는 드롭다운 메뉴입니다.
  • 기준 없음(NO CRITERION)
  • 이익(Profit)
  • 총 거래수(Total Deals)
  • Profit Factor
  • 예상 수익(Expected Payoff)
  • 최대 자본 드로우다운 %(Equity DD Max %)
  • 회수율(Recovery Factor)
  • 샤프지수(Sharpe Ratio)
모든 Statistic Criterion 변수가NO CRITERION 값을 갖는 경우 코드가 작성되지 않으므로 파일이 생성되지 않습니다.
Value Criterion
파일화될 최적화 결과 필터링 조건의 기반이 되는 한계값

예를 들어, 01_Statistic Criterion 매개 변수에서 Profit 을 선택하고 01_Value Criterion100으로 설정한 후 나머지 Statistic Criterion 매개 변수 값을 NO CRITERION으로 설정하는 경우, 거래 횟수가 100 이상인 거래에 대해 선택된 결과만이 최적화 결과 파일로 작성됩니다.
Use Sound
거래 오퍼레이션 소리 알림 사용(true)/미사용(false) 각 이벤트 및 이벤트 그룹은 고유의 소리를 갖고 있습니다. 다음의 이벤트 발생 시 소리가 작동합니다.
  • 거래 오퍼레이션 오류
  • 포지션 오픈/포지션 볼륨 증가
  • 손절/이익 실현 대기 주문 설정/수정
  • 대기 주문 삭제
  • 포지션 볼륨 감소
  • 이익 발생 포지션 청산
  • 손실 발생 포지션 청산
Color Schemes
가격 차트에 적용 가능한 색깔 테마 드롭다운 메뉴의 다음 8개 테마 가운데 선택 가능합니다.
  • 그린그레이(Green-Gray)
  • 레드베이지(Red-Beige)
  • 블랙화이트(Black-White)
  • 오렌지리프(Orange-Leaves)
  • 퍼플클라우드(Purple-Clouds)
  • 그레이라이트그레이(Gray-LightGray)
  • 밀크초콜릿(Milk-Chocolate)
  • 나이트문(Night-Moon)


첫 번째 매개 변수(Number Of Try)와 관련해 EA에서 발생하는 이벤트에 대해 알아보겠습니다.

이벤트에 따라 거래 전, 거래 후 또는 거래 전후로 확인됩니다.

  • 거래 요청 전송 실패
  • 가격 변동
  • 요청 거절
  • 거래자에 의한 요청 거절
  • 요청 프로세스 오류
  • 요청 볼륨 인식 불가
  • 요청 가격 인식 불가
  • 요청 역지정가 인식 불가
  • 요청 인식 불가
  • 미허가 거래
  • 장 종료
  • 예수금 부족
  • 가격 변동
  • 요청 과부하
  • 서버에서 자동 거래를 허용하지 않음
  • 클라이언트 터미널에서 자동 거래를 허용하지 않음
  • 요청 프로세스 차단
  • 거래 서버 연결 종료
  • 실제 계정 전용 오퍼레이션
  • 대기 주문수 한도 도달
  • 해당 통화쌍에 대한 주문 및 포지션 볼륨 한도 도달

여기에 대해서도 따로 글을 쓰겠습니다.


3. 매개 변수 최적화

EA 프레임워크를 통해 다양한 거래 조건을 설정할 수 있습니다. 최소 구성으로 이루어진 EA를 예로 들어 두 가지 주요 변형을 알아보겠습니다. 각각 4개의 매매 전략을 갖는 3개의 통화쌍을 이용합니다.


3.1. 제 1 변형

_ Name Symbol 매개 변수(01,02,03)에 값을 지정합니다. EURUSD, AUDUSD, USDCHF가 한 예죠. 거래할 통화쌍을 정하는 겁니다.

  • 전체 심볼에 대한 Period PCH (total)값을 0보다 크게 설정해 MultiSignals_PCH 인디케이터 기간이 각 심볼의 모든 전략에 적용되도록 설정합니다. 인디케이터 타임프레임은 Timeframe (total) 매개 변수를 통해 설정되며 이 또한 공통적으로 적용됩니다.
  • 각각의 전략은 고유의 Type Entry 매개 변수를 갖습니다.
  • 손절이익 실현 지점도 개별적으로 설정되죠.

다음 도표를 참고하세요.

그림 8. 제 1 변형 도식
그림 8. 제 1 변형 도식

이제 각 매개 변수에 대한 최적화를 설정해야 합니다. 아래 표와 동일하게 값을 설정하세요. 전체 심볼과 모든 매매 전략 블록에 입력되어야 합니다. Timeframe (total) 매개 변수 값을 8시간으로 설정합니다. Opening Prices Only(개장가 전용) 모드에서 발생할 수 있는 특이점에 대한 자세한 설명은 아래 테스터 설정에서 드리겠습니다.

매개 변수 최적화가 진행되는 동안 자금 관리 시스템은 비활성화 되어야 합니다(예: 고정 롯 0.1). Money Management On/Off 변수 값은 false로 설정합니다. 자금 관리 시스템 매개 변수는 나머지 매개 변수가 모두 설정된 후 별도로 설정합니다.

변수 START
STEP STOP
Period PCH (total)
5
1
30
Points TP
50
10
800
Points SL
50
10
200


일반 매개 변수 및 규칙, 전략 테스터 설정, 결과 분석, 북리포트 애플리케이션자금 관리 시스템을 한번 보죠. 해당 내용은 모든 변형에 적용되지만 이번에만 자세히 설명할 겁니다.


3.1.1. 일반 매개 변수 및 규칙

Max Draw Down Equity (%) 값을 50으로 설정합니다. 최적화 과정에서 최대 드로우다운이 50% 미만으로 나타나는 값을 필터링할 겁니다. 필요 없는 값이 필터링되므로 최적화 속도 또한 약간 개선됩니다.

매개 변수는 각 통화쌍별로 따로 최적화되어야 합니다. 최적화 패스 개수가 64 bit long 자료형 값보다 클 경우 트레이딩 터미널에서 설정된 한도를 초과하므로 최적화가 불가능해지기 때문입니다. 기타 제한 사항은 트레이딩 터미널의 '도움말'에서 찾아볼 수 있습니다.


3.1.2. 전략 테스터 설정

터미널의 테스터에서 설정 탭으로 들어가 다음과 같이 매개 변수를 설정합니다.

그림 9. 전략 테스터 매개 변수

그림 9. 전략 테스터 매개 변수

테스트 기간을 최대 1년으로 설정하여 예를 들겠습니다. EA가 적용되는 심볼과 상관 없이 EA 매개 변수에서 특정된 통화쌍에 대해 거래가 이루어지므로 아무 심볼이나 설정해도 좋습니다.

최적화 형식을 Fast(유전 알고리즘)으로 설정하세요.

해당 예시에서는 Balance Max(최대 잔고 값)을 최적화 기준으로 삼습니다.

최적화/테스트 모드 메뉴에서 Opening prices only를 선택합니다. 최적화의 질이 낮아지지만 EA가 완성된 바만 이용해 거래를 실행할 경우 매개 변수 최적화에는 적절합니다. 최적화 완료 후 다른 모드를 선택해 양질의 테스트 결과를 얻는 것이 좋습니다. 또 한 가지 중요한 점이 있는데요.

Opening prices only 내부 메커니즘의 특이성으로 인해 매개 변수 최적화에서 타임프레임을 제외해야 합니다. 전체 타임프레임을 대상으로 해당 모드를 실행할 경우 최적화 및 테스트 결과에 오류가 발생합니다.

클라이언트 터미널-사용자 가이드->전략 테스터->테스터 사용하기->틱 생성 메뉴에서 더 자세한 정보를 찾아볼 수 있습니다(Opening Prices Only). Opening prices only 모드에서 매개 변수 최적화를 진행할 경우, 다음의 규칙을 지켜야 합니다.

  • 각 심볼에 대한 타임프레임이 상이한 경우 모든 심볼은 각각 최적화되어야 합니다. 다른 심볼은 모두 비활성화(FALSE)시키는 것이죠.
  • 각 심볼의 타임프레임이 다른 경우 전체 최적화가 완료되고 나면 M1의 OHLC 모드에서 테스트를 실행해야 합니다.
  • 하나의 심볼을 최적화 또는 테스트하는 경우 테스터 설정에서 입력된 타임프레임은 TS에서 사용된 가장 짧은 타임프레임이거나 그보다 짧아야 합니다.

이런 규칙만 없으면 M1의 OHLC 모드가 매개 변수 최적화에 가장 적합할텐데요. 여러 모드에서 테스트를 실행하고 결과를 비교할 수 있으면 유용하니까요.

듀얼코어 프로세서가 설치된 컴퓨터에서 해당 변형에 대한 최적화 작업은 약 4~5시간이 소요됩니다.


3.1.3. 결과 분석

모든 통화쌍에 대한 매개 변수 최적화가 완료되고 나면 Optimization chart(최적화 차트) 탭에 최적화 결과가 분석되어 향후 거래에 포함시킬 매개 변수를 선택할 수 있습니다.

EURUSD에 적용된 최적화 결과를 보겠습니다.

그림 10. 테스터 내 최적화 차트 탭에 나타난 최적화 결과

그림 10. 테스터 내 최적화 차트 탭에 나타난 최적화 결과

결과의 대부분이 수익 지대에 위치하는 군요. 수익 지대에 나타나는 결과가 많을수록 해당 매개 변수를 이용한 매매 시스템의 수익성이 높을 것이라 예상할 수 있죠.

또한 테스트 기간이 길수록 수익성이 높을 확률이 증가합니다. 하지만 테스트 기간이 길어지면 최적화가 더 오래 걸리죠. 이 경우 MetaQuotes가 제공하는 MQL5 클라우드 네트워크를 이용하면 되는데요. 저렴한 가격으로 여러 개의 최적화 프로세서를 이용해 최적화 소요 시간을 크게 줄일 수 있습니다. 해당 서비스에 대한 더 많은 정보는 MQL5 클라우드 네트워크로 계산 소요 시간 줄이기를 읽어 보세요. M1의 OHLC 모드를 사용해 최적화를 실행하는 경우 특히 유용한 서비스입니다.

특정 심볼에 대한 최적화 결과가 만족스럽지 않다면 다른 심볼을 대상으로 최적화를 실행해 보세요. 대략 어느 정도의 결과가 허용 가능한지는 다음을 기준으로 판단할 수 있습니다. 예를 들어, 최대 드로우다운은 20% 이하여야 합니다. 회수율은 2.00 미만이면 안되겠죠. 손절 지점의 거리가 이익 실현 지점의 거리보다 가까울 수도 있고요.

MetaTrader 5 에는 다양한 결과 분석 도구가 있습니다. 위의 최적화 차트는 결과 그래프(Graphs with Results)라고 하죠. 그 밖에도 선형(1D), 평면(2D)3차원(3D) 그래프가 있습니다. 다음은 3차원(3D) 그래프로 나타낸 USDCHFEURUSD의 테스트 결과입니다.

그림 11. 3D 그래프로 나타낸 USDCHF 최적화 결과

그림 11. 3D 그래프로 나타낸 USDCHF 최적화 결과

그림 12. 3D 그래프로 나타낸 EURUSD 최적화 결과

그림 12. 3D 그래프로 나타낸 EURUSD 최적화 결과

3차원 차트에서는 MultiSignals_PCH 인디케이터(완만한 녹색 지역)의 꽤 많은 매개 변수 값이 거래에 적합한 다양한 손절 지점과 연결되어 있는 게 잘 확인되네요.

각각의 통화쌍에 대한 매개 변수를 선택하고 나면 전체 통화쌍에 대한 테스트를 동시에 진행해 결과를 분석해야 합니다. 테스터의 그래프(Graph) 탭에 결과가 다음과 같은 그림으로 나타날 겁니다. Opening prices only 모드의 테스트 소요 시간은 매우 짧습니다. 1년 이상의 기간을 대상으로 하는 테스트가 약 5초 정도면 완성됩니다(아래 그림 참조).

그림 13. 'Opening prices only' 모드 테스트 결과(제 1 변형)

그림 13. 'Opening prices only' 모드 테스트 결과(제 1 변형)

Every tick 모드를 사용해도 같은 결과가 나올 겁니다

Opening prices only 모드와 약간의 차이는 있을 수 있지만 신경쓰지 않아도 됩니다. 우리 예시의 경우 테스트를 완료하는 데에 12분 정도가 걸렸습니다(아래 그림 참조).

그림 14. 'Every tick' 모드 테스트 결과(제 1 변형)

그림 14. 'Every tick' 모드 테스트 결과(제 1 변형)

M1의 OHLC 모드에서는 해당 테스트가 1분도 채 걸리지 않았습니다.


3.1.4. 최적화 및 테스트 결과 분석을 위한 북리포트(BOOK REPORT) 애플리케이션

EA에 별도로 BOOK REPORT 애플리케이션이 제공됩니다. VBA 언어를 이용해 개발되었는데요. 그렇다 보니 실질적으로 엑셀 2010만 있으면 사용할 수 있는 엑셀 워크북이나 마찬가지입니다. BOOK REPORT 애플리케이션에 대해 한번 알아보죠.

워크북에는 파일(File) 탭 하나만 있습니다. 여기서 최근 파일, 새 파일 그리고 인쇄의 세 가지 옵션을 선택할 수 있죠. 남아 있는 엑셀 기능은 이게 끝입니다. :) 나머지 기능은 모두 제거되었고 최적화 및 테스트 결과 분석 과정은 대부분 자동으로 진행되며 최대한 간단하게 만들었습니다.

그림 15. 엑셀 2010 BOOK REPORT 애플리케이션

그림 15. 엑셀 2010 BOOK REPORT 애플리케이션

해당 애플리케이션에는 기능을 미리 익힐 수 있도록 최적화 및 테스트 결과가 기본적으로 탑재되어 있습니다.

다음 그림과 같이 나타납니다.

그림 16. 최적화 결과 데이터

그림 16. 최적화 결과 데이터

OptReport 워크시트 표 상단에 CONNECT DATA(데이터 연결), DIAGRAM(다이어그램), CROSS HAIR(십자선) 그리고 FULL SCREEN MODE(전체 화면 보기) 네 개의 버튼이 보입니다.

FULL SCREEN MODE 버튼 다음의 오른쪽 화살표 버튼을 누르면 스크롤하지 않고 표의 하단으로 이동할 수 있습니다. 최적화에 사용된 매개 변수 데이터를 포함하는 열은 표 끝에 위치합니다. 데이터 표의 오른쪽에는 표의 상단으로 이동할 수 있는 버튼이 있습니다.

데이터는 필터링을 거쳤으며 오름차순 또는 내림차순으로 정렬할 수 있습니다. 모든 열은 한눈에 알아보기 쉽도록 가로 막대 또는 색깔로 표현됩니다. 표 상단의 버튼을 살펴보죠.

  • CONNECT DATA 해당 버튼을 클릭하면 파일 불러오기 경로를 설정하라는 대화 상자가 뜹니다. BOOK REPORT 애플리케이션은 우선적으로 터미널의 공통 디렉토리에 연결하려고 할 겁니다.

    예를 들어, 윈도우 7의 경우 C:\ProgramData\MetaQuotes\Terminal\Common\Files\
    이죠.윈도우 XP의 경우 C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\Files\
    이고요.
    디렉토리가 없는 경우 사용자가 별도로 설정할 수 있습니다.

    TRADING WAY 엑스퍼트 어드바이저 매개 변수 최적화를 마치고 나면 터미널의 공통 디렉토리에 있는 Files 폴더 안에 DOR 폴더가 생성됩니다. DOR 폴더 안에는 EA 이름과 동일한 EA 폴더가 생성되죠. 해당 EA 폴더 안에는 OPTn 폴더가 생성됩니다(nOPT 폴더의 개수). OPT 폴더에는 최적화 결과 데이터가 포함된 DOR.csv 파일이 생성되는데요. 해당 파일을 OptReport 워크시트로 불러오기합니다.

    파일명이나 확장자가 다른 파일을 불러오기하면 오류 메세지가 나타날 겁니다.

    데이터 구조가 다르거나 내용이 없는 파일을 불러오기해도 오류 메세지가 나타납니다. 파일이 올바르게 선택된 경우 현재 OptReport 데이터가 삭제되며 선택된 파일 데이터로 대체됩니다. 말은 길게 했지만 몇 초면 됩니다.


  • DIAGRAM 해당 버튼을 클릭하면 Diagrams 워크시트로 이동합니다. 예를 들어, OptReport 워크시트의 Profit 열 데이터가 내림차순으로 정리된 경우 아마 다음과 같은 결과가 나타날 겁니다.


    그림 17. 차트로 보는 최적화 결과 데이터

    그림 17. 차트로 보는 최적화 결과 데이터

    차트 아래에는 보고서 내에 포함된 모든 매개 변수에 대한 설명을 포함한 표가 있는데요. 표 왼쪽 열의 매개 변수 이름은 OptReport 워크시트 내 해당 열에 대한 링크입니다. 다음은 전체 매개 변수 목록입니다.

    • PROFIT-테스트 완료 시 순이익
    • TOTAL DEALS-총 실행 거래 수
    • PROFIT FACTOR-총 수익을 총 손실로 나눈 값
    • EXPECTED PAYOFF-기대 승률
    • EQUITY DD MAX REL%-최대 자본 드로우다운(금액)
    • RECOVERY FACTOR-순이익을 최대 잔고 드로우다운(%)
    • SHARPE RATIO-평균 수익률을 수익률의 표준 편차로 나눈 값
    • EQUITY DD-최대 자본 드로우다운(%)
    • EQUITY DD%-최대 자본 드로우다운(금액)에서 기록된 자본 드로우다운(%)
    • EQUITY DD RELATIVE-최대 자본 드로우다운(%)에서 기록된 자본 드로우다운(금액)
    • EQUITY MIN-최소 자본
    • BALANCE DD REL%-최대 잔고 드로우다운(금액)
    • BALANCE DD-최대 잔고 드로우다운(%)
    • BALANCE DD%-최대 잔고 드로우다운(금액)에서 기록된 최대 잔고 드로우다운(%)
    • BALANCE RELATIVE-최대 잔고 드로우다운(%)에서 기록된 잔고 드로우다운(금액)
    • BALANCE MIN-최소 잔고
    • MIN MARGIN LEVEL-최소 마진 레벨
    • GROSS LOSS- 총 손실, 거래 손실의 총 합계
    • GROSS PROFIT-총 이익, 거래 이익의 총 합계
    • CONLOSS MAX- 최대 연속 손실 거래수
    • CONPROFIT MAX-최대 연속 수익 거래수
    • MAX CONLOSSES-최대 연속 손실 거래일 총 손실
    • MAX CONWINS-최대 연속 수익 거래일 총 수익
    • MAX LOSS TRADE-최대 손실
    • MAX PROFIT TRADE-최대 수익
    • TRADES-거래 수
    • SHORT TRADES-숏 거래
    • LONG TRADES-롱 거래
    • LOSS TRADES-손실 거래
    • PROFIT TRADES-수익 거래
    • PROFIT SHORT TRADES-수익 거래 숏
    • PROFIT LONG TRADES-수익 거래 롱
    • LOSS TRADES AVGCON-평균 연속 손실 거래일
    • PROFIT TRADES AVGCON-평균 연속 수익 거래일
    • CONLOSS MAX TRADES-최대 연속 손실 발생 연속 손실 거래수
    • CONPROFIT MAX TRADES-최대 연소 수익 발생 연속 수익 거래수
    • MAX CONLOSS TRADES-최장 연속 손실 거래일 거래수
    • MAX CONPROFIT TRADES-최장 연속 수익 거래일 거래수

    차트 위에 드롭다운 메뉴가 보일 겁니다. 첫 번째 목록에서 세 가지 차트 중 하나를 선택합니다.

    • 상단에 나타난 다이어그램은 OPT.REPORT DIAGRAM입니다. 파일에 작성된 모든 최적화 결과를 보여주죠. 축이 두 개이므로 두 가지 매개 변수를 동시에 확인할 수 있습니다. 해당 다이어그램이 활성화되면 모든 매개 변수가 포함된 드롭다운 메뉴가 다이어그램 우측 상단에 나타납니다.


      그림 18. 최적화 결과 다이어그램 위쪽에 나타난 드롭다운 메뉴

      그림 18. 최적화 결과 다이어그램 위쪽에 나타난 드롭다운 메뉴

      다이어그램을 클릭하면 데이터 워크시트로 이동합니다. 이 경우 OptReport 워크시트로 이동하죠.

    • 드롭다운 메뉴의 두 번째 다이어그램은 PIVOT 3D DIAGRAM이라고 하는 건데요. 3차원 피벗 다이어그램입니다.


      그림 19. 3차원 다이어그램으로 나타난 최적화 결과 매개 변수 조합

      그림 19. 3차원 다이어그램으로 나타난 최적화 결과 매개 변수 조합

      해당 다이어그램이 활성화되면 오른쪽 상단에 드롭다운 메뉴가 나타납니다. 여기서 최적화에 포함시킬 매개 변수를 선택(첫 번째, 세 번째 메뉴)할 수 있으며 세로 축 주요 매개 변수(두 번째 메뉴)를 선택할 수 있습니다.

      그림 20. 3차원 다이어그램 상단에 나타난 드롭다운 메뉴

      그림 20. 3차원 다이어그램 상단에 나타난 드롭다운 메뉴

      다이어그램 오른쪽 하단의 버튼을 이용해 세로 축 또는 가로 축을 기준으로 다이어그램을 회전시킬 수 있습니다. 다이어그램을 클릭하면 OptReport 워크시트로 돌아갑니다. 다이어그램의 기반이 되는 피벗 테이블로 갈 수도 있는데요. 해당 다이어그램의 왼쪽 상단에 위치한 PIVOT TABLE 버튼을 누르면 PivotTable 워크시트로 이동합니다.

      해당 다이어그램은 전체 누적 결과를 반영하며 매개 변수 조합도 확인할 수 있습니다. 보다 상세한 분석을 가능케하는 편리한 기능이죠.


      그림 21. 3차원 다이어그램 피벗 테이블

      그림 21. 3차원 다이어그램 피벗 테이블

      원하는 데이터 셀을 선택하면 TDn 워크시트가 생성됩니다(nTD 라벨이 붙은 워크시트의 개수). 해당 워크시트에는 피벗 테이블에서 선택된 매개 변수가 반영된 전체 결과를 나타내는 표가 작성됩니다. 예를 들어, 190100이라는 매개 변수 셀을 선택하는 경우 해당 매개 변수와 일치하는 모든 결과를 나타내는 표가 생성됩니다. 아래 그림을 참고하세요.


      그림 22. 매개 변수 피벗 테이블에서 선택된 최적화 결과표

      그림 22. 매개 변수 피벗 테이블에서 선택된 최적화 결과표



    • 세 번째 다이어그램인 TEST DIAGRAM은 테스트에 이용된 모든 매매 전략에 대한 잔고 차트를 나타냅니다.


      그림 23. 전체 매매 전략에 대한 테스트 결과

      그림 23. 전체 매매 전략에 대한 테스트 결과

      각 테스트가 완료되면 가장 최근 생성된 OPTn 폴더의 TESTS 폴더에 EA 테스트 결과 파일이 저장됩니다. 모든 결과는 각각의 testN.csv 파일로 저장되며 이때 N은 파일 번호입니다.

      테스트 결과는 TestReport 워크시트로 불러오기해 확인할 수 있습니다. 해당 워크시트에는 OptReport와 동일한 버튼이 나타나는데요. 따라서, 데이터 불러오기를 하려면 CONNECT DATA 버튼을 누르면 됩니다. TS 잔고 데이터 외에도 파일 내에는 트레이딩 터미널의 결과 탭에서 확인 가능한 보고서와 비슷한 형식의 보고서가 포함됩니다. 데이터는 분석에 편리하도록 포맷되어 있습니다.

      그림 24. 거래 테스트 결과

      그림 24. 거래 테스트 결과


  • CROSS HAIR 해당 버튼은 십자선 기능을 활성화합니다. 간단하고 편리한 기능이죠. 위의 그림은 CROSS HAIR 버튼이 활성화된 모습입니다.

  • FULL SCREEN MODE 앞에서 언급한 전체 화면 모드입니다.

실수로 객체를 삭제하는 일을 방지하기 위해 BOOK REPORT 애플리케이션에는 몇 가지 보호 조치가 설정되어 있습니다. 따라서 어떤 객체(버튼, 다이어그램, 디자인 요소)도 선택 후 삭제될 수 없습니다.

해당 애플리케이션에 불필요한 모든 엑셀 컨텍스트 메뉴는 삭제되었습니다. 두 가지 변형 컨텍스트 메뉴만 남아 있는데요.

  1. 셀을 오른쪽 클릭해서 나타나는 컨텍스트 메뉴가 있습니다. 복사워드 두 가지 옵션만 있죠.
  2. 그 다음으로는 워크시트 컨텍스트 메뉴가 있는데요. 삽입, 탭 색상 그리고 삭제의 세 가지 옵션이 있습니다.

삭제 기능의 경우 사용자가 실수로 워크시트를 삭제하지 못하도록 리프로그래밍되었습니다. 워크시트를 삭제하려는 경우 오류 메세지가 나타나며 해당 워크시트는 삭제되지 않습니다.


3.1.5. 자금 관리 시스템

모든 통화쌍에 대한 매개 변수를 설정하고, 결과를 분석한 다음은 자금 관리 시스템을 설정할 차례입니다.

자금 관리 시스템은 계정의 모든 계좌를 관리합니다. 라이언 존스(Ryan Jones)의 비율 고정(Fixed Ratio) 전략에 따르면 투자자는 고정된 비율만큼의 추가 수익(델타)을 얻은 경우에만 거래 랏을 추가할 수 있습니다. 예를 들어, 예수금 300달러에 미니 롯 1개가 있으며 델타 값이 300달러인 경우 롯 수를 2로 증가시키려면(기존 롯 수 1) 300달러의 수익이 있어야 합니다.

마찬가지로, 롯을 3으로 올리려면 2개의 미니 롯이 각각 300달러의 수익을 기록해야 합니다. 다시 말해, 미니 롯의 개수를 2에서 3으로 올리려면 기존의 600달러에 추가적으로 2С…$300=$600, 즉 $1200가 필요하며 미니 롯의 개수를 3에서 4로 증가시키려면 예수금이 $1200인 미니 롯에 ($300С…3)=$1200+$900=$2100가 더 필요하게 되는 거죠. 따라서, 현재 계약 수마다 '고정된 비율'만큼의 수익을 내야합니다. 롯 수가 감소하는 경우 동일한 계산식을 반대로 적용합니다.

물론 매개 변수 최적화를 실행할 수도 있지만 수동 설정 방법을 살펴볼게요. 프리테스트의 경우 Opening prices only 모드 또는M1의 OHLC 모드를 사용할 수 있습니다.

자금 관리 시스템의 기본 매개 변수 값은 다음과 같이 설정되어 있습니다.

매개 변수
Start Deposit
10000
Delta
300
Start Lot
0.1
Step Lot
0.01


테스트 완료 후에는 결과를 분석해야 합니다. 다음은 테스트 결과입니다.

그림 25. 자금 관리 시스템을 적용한 'Every tick' 모드 테스트 결과(제 1 변형)

그림 25. 자금 관리 시스템을 적용한 'Every tick' 모드 테스트 결과(제 1 변형)

매개 변수가 최적화된 과거 기록을 대상으로 자금 관리 시스템을 적용하였으므로 테스트 결과의 총 이익이 더 높게 나올 것입니다. 신경쓸 필요 없습니다.

중요한 매개 변수는 최대 예수금 드로우다운최소 마진 레벨입니다. EA 자금 관리 시스템은 매개 변수를 꽤 광범위하게 설정할 수 있어 보수적인 투자와 공격적인 투자 모두에 적용할 수 있습니다. 최대 예수금 드로우다운최소 마진 레벨 매개 변수는 거래 볼륨과 거래 예수금에 좌우됩니다.

또 한 가지 생각해 볼 점이 있는데요. 위의 결과는 초기에 연속적인 수익 거래가 발생했음을 의미하지만 해당 거래의 로컬 최대값이 최대 드로우다운으로 변했을 경우의 드로우다운은 보여주지 않습니다. 따라서 최대 드로우다운이 발생하는 로컬 최대값에 대한 초기 테스트 일자를 설정하고 해당 테스트 결과를 기반으로 자금 관리 시스템 설정 값을 결정하는 것도 좋습니다.


3.2. 제 2 변형

  • 다시 한번 _ Name Symbol 매개 변수(01,02,03) 값을 설정합니다 . 결과 비교를 위해 이전과 동일한 통화쌍 EURUSD, AUDUSD, USDCHF를 이용하겠습니다.

  • Period PCH (total) 변수 값을 0으로 설정해 각 전략에 대한 MultiSignals_PCH 인디케이터의 기간을 동일하게 만듭니다. 각 매매 전략 블록의 Period PCH (sub) 매개 변수에서 값이 선택될 겁니다. 인디케이터별 타임프레임을 설정하는 것도 가능하지만 해당 변형의 경우 각 매매 전략 블록의 Timeframe (sub) 매개 변수를 이용해 전체에 동일한 값을 설정하겠습니다.

  • 각각의 전략은 고유의 Type Entry 매개 변수를 갖습니다.

  • 손절이익 실현 지점도 개별적으로 설정되죠.

아래 그림을 참고하세요.

그림 26. 제 2 변형
그림 26. 제 2 변형

이제 각 매개 변수에 대한 최적화를 설정해야 합니다. 아래 표와 동일하게 값을 설정하세요. 전체 심볼과 모든 매매 전략 블록에 입력되어야 합니다. Timeframe (sub) 매개 변수에는 고정 값이 입력됩니다.

매개 변수 최적화 동안 자금 관리 시스템은 비활성화합니다. Money Management On/Off 매개 변수 값을 false로 설정하세요.

해당 변형과 이전 변형의 차이점은 MultiSignals_PCH 인디케이터의 기간이 별도로 설정되며 매매 전략 최적화는 동시에 진행된다는 것입니다. 하나의 전략을 최적화할 때마다 나머지 전략은 모두 비활성화시킵니다. 앞서 진행한 테스트와 동일한 타임프레임을 설정(8시간)합니다.

매개 변수 Start Step Stop
Period PCH (sub)
5
1
30
Points TP
50
10
800
Points SL
50
10
200


일반 매개 변수 및 규칙, 전략 테스터 설정, 결과 분석, 북리포트 애플리케이션자금 관리 시스템에 대한 자세한 설명은 제 1 변형을 참조하세요. 이번에는 테스트 결과만 보겠습니다.

최적화가 완료될 때마다 최대 회수율을 기준으로 전략 매개 변수가 선택됩니다.

고정 롯(0.1)에 대한 누적 결과는 다음과 같습니다.

그림 27. 'Every tick' 모드 테스트 결과(제 2 변형)

그림 27. 'Every tick' 모드 테스트 결과(제 2 변형)

이제 제 1 변형에서 적용한 자금 관리 시스템을 적용해 볼까요?

그림 28. 자금 관리 시스템을 적용한 'Every tick' 모드 테스트 결과(제 2 변형)

그림 28. 자금 관리 시스템을 적용한 'Every tick' 모드 테스트 결과(제 2 변형)

시스템의 개별 엘리먼트에 중점을 두기 때문에 각 신호 그룹을 이해하고 구별하기에는 해당 변형이 보다 적합합니다. 제 2 변형을 이용하면 시스템의 전체 내부 메커니즘을 확인할 수 있으며 테스트가 메커니즘의 약점을 발견하는 경우 특정 매개 변수를 변경하거나 매개 변수를 모두 삭제할 수 있기 때문입니다. 해당 변형의 장점이죠.


3.3. 기타 변형

해당 EA는 다른 방식으로도 변형이 가능합니다. _ Name Symbol(01,02,03) 매개 변수에 한 가지 심볼만 입력하고 12가지 매매 전략을 이용해 해당 심볼을 거래할 수도 있죠. 매매 전략의 매개 변수 또한 다양한 타임프레임으로 설정할 수 있습니다. 혹은 하나의 타임프레임 안에서 인디케이터별로 상이한 기간을 설정할 수도 있죠. 손절 및 이익 실현 지점에도 동일하게 적용됩니다. 이익 실현 또는 손절 기능이 비활성화된 경우 서브포지션은 반전 또는 손절/이익 실현 신호에 맞춰 청산됩니다.

손절/이익 실현 기능을 제외하고 반전 기능만 갖춘 시스템을 설정할 수도 있습니다. 이 경우 EA는 다음의 메커니즘을 따릅니다. 포지션 오픈 및 반전 시그널 블록은 위의 거래 시스템 조건에서 설명한 바와 동일합니다. 손실이 발생할 경우 포지션을 청산하는 방법도 설명되어 있습니다. 다음은 손절 대기 주문이 없는 경우 사용 가능한 '탈출' 신호입니다. 서브포지션 오픈 조건과 동일합니다.

  1. H_PCH 레벨 업크로싱 시 매도 서브포지션 청산/L_PCH 레벨 다운크로싱 시 매수 서브포지션 청산
  2. H_PCH 레벨 업크로싱 시 매도 서브포지션 청산/L_PCH 레벨 다운크로싱 시 매수 서브포지션 청산
  3. M_PCH 레벨 업크로싱 시 매도 서브포지션 청산/M_PCH 레벨 다운크로싱 시 매수 서브포지션 청산
  4. M_PCH 레벨 업크로싱 시 매도 서브포지션 청산/M_PCH 레벨 다운크로싱 시 매수 서브포지션 청산

첫 번째와 두 번째 조건이 동일합니다. 세 번째와 네 번째 조건도 동일하고요. 다양한 타임프레임을 대상으로 테스트한 결과, 손절 유형의 대기 주문이 없는 경우 해당 조건들은 '탈출' 신호로서 더 적합하다고 판단했습니다. 만약 실제 손절 주문이 '안전 쿠션(Stop Loss/Take Profit by Disconnect (p) 매개 변수)'으로 사용되는 경우, 다른 서브포지션과 연관된 대기 주문이 없다는 전제 하에 매개 변수로 특정한 포인트만큼 떨어진 곳에 설정됩니다.

가격이 실제 손절 지점에 가까워지거나 해당 지점으로부터 멀어지는 경우, 다른 서브포지션과 연관된 대기 주문이 없다는 전제 하에 특정 포인트 만큼의 ВЅ손절 지점이 수정됩니다. 해당 가격이 멀어지면 특정 포인트만큼 가격과 함께 움직이고, 가까워지면 똑같이 멀어지는 거죠. 특정 전략 설정 시 이익 실현 유형의 대기 주문이 입력되지 않으면 이익 실현 지점 또한 같은 방식으로 이동합니다. '안전 쿠션'의 개념에 대한 자세한 설명은 본문 상단의 매매 시스템 조건에서 찾아볼 수 있습니다.

각 심볼별로 별도의 거래 시간을 설정할 수 있습니다. 특정 시간에 특정 심볼을 거래하는 것이 더 유리할 수도 있기 때문입니다. 하루 혹은 한 주의 끝에 포지션이 청산되도록 설정할 수도 있습니다. 반자동 모드에서는 특정한 기간을 설정할 수도 있죠. 여기에 대해서는 아래의 거래 세션 시간에서 더 다루겠습니다.

또한, 인디케이터 매개 변수만 최적화한 후 인디케이터 시그널을 이용해 수동 거래를 할 수도 있습니다. 잘 알려진 투자자들 중에서도 수동 거래를 선호하는 이들이 있죠. EA의 수동 거래는 거래 패널을 이용해 아주 편리하게 진행되는데요. 차트 좌측 거래 정보 패널에서 좀 더 설명하겠습니다.


4. 시각화 테스트

전략 테스터의 시각화 모드는 한번 짚고 넘어갈 필요가 있습니다.

현재는 몇몇 한계가 있지만 개선될거라 믿습니다. 하지만 한계에도 불구하고 시각화 모드가 아주 유용하게 쓰이는 경우가 있는데요.

복잡한 프로그램을 개발하거나 디버깅할 때 특히 그렇습니다. 다음 그림은 테스트 진행 중 어떤 분석 도구를 추가할 수 있는지를 보여줍니다.

그림 29. 시각화 모드 정보 패널

그림 29. 시각화 모드 정보 패널

차트 좌측에 가장 최근 완성된 바, 현재 서버 시간 및 요일에 대한 데이터가 나타납니다. 차트 우측에는 전체 심볼에 대한 서브포지션과 서브포지션 볼륨을 나타내는 전략, 매수/매도 신호 및 특정 전략이 가장 최근 실행된 가격을 포함한 표가 있습니다.

하단에는 자금 관리 시스템 매개 변수와 현재 랏 볼륨, 현재 드로우다운, 위험성 및 SL/TP('안전 쿠션') 지점 등이 나타납니다. 매개 변수에 대한 보다 자세한 정보는 하단의 인터페이스 및 제어를 참조하세요.


5. 인터페이스 및 제어

차트에 처음 EA를 로드하면 향후 EA에서 사용될 터미널 전역 변수가 생성됩니다. 개수가 꽤 많습니다(46). 각 전역 변수 혹은 전체 전역 변수를 삭제하려고 하면 EA가 기본 값으로 해당 변수를 복원시킬 겁니다.

차트 우측에 거래 정보 패널이 나타나며 Color Schemes 매개 변수에서 설정된 색상 테마가 적용됩니다. 여덟 가지 색상 테마 중 원하는 것으로 선택하면 됩니다.

EA가 로드되면 차트 우측에 나타나는 가격이 패널에 가려지지 않도록 자동으로 가격 위치가 조정됩니다. 아래 그림처럼 보일 겁니다.

그림 30. EA가 로드된 차트

그림 30. EA가 로드된 차트


6. '거래 정보' 및 '자금 관리' 정보 패널

차트 우측에 위치한 거래 정보 패널은 '거래 정보(Trade Info)''자금 관리(Money Management)'의 두 블록이 있습니다. 거래 정보 블록 상단에 왼쪽에서 오른쪽 순서로 왼쪽 패널(Left Panel), 경고 인디케이터(Warning Indicator)전체 패널 숨기기(Hide All Panels) 아이콘이 나타납니다. 아이콘 위에 커서를 대면 툴팁이 나타나며 아이콘이 초록색에서 흰색으로 변합니다.

왼쪽 패널 아이콘을 클릭하면 차트 좌측에 거래 패널이 생성되는데요. 여기에 대해서는 조금 있다 설명하겠습니다. 거래 패널이 열리면서 다운(Left Panel Down)/업(Left Panel Up) 아이콘이 왼쪽 패널 옆에 나타납니다. 해당 아이콘을 클릭하면 아이콘의 삼각형이 나타내는 방향대로 패널이 움직입니다.

거래에 방해가 되는 요소가 없을 경우 Warning Indicator 아이콘은 초록색으로 나타납니다. 거래에 문제가 있을 경우 Warning Indicator 아이콘은 빨간색이 되죠. 다음이 원인일 수 있는데요.

  • 서버 연결 끊김
  • 엑스퍼트 어드바이저 거래 미허용
  • 터미널 거래 미허용
  • 현재 계정 거래 미허용
  • 현재 계정 엑스퍼트 어드바이저 거래 미허용

빨간 Warning Indicator 아이콘을 클릭하면 차트 왼쪽에 거래가 실행되지 않는 이유를 설명하는 메세지가 나타날 겁니다. 아래 그림은 엑스퍼트 어드바이저의 거래가 미허용된 경우입니다. Warning Indicator 아이콘을 다시 클릭하면 메세지가 사라집니다.

패널 디자인은 알파 채널을 이용한 그래픽 편집으로 변경할 수 있습니다.

그림 31. 거래 중단 이유 메세지

그림 31. 거래 중단 이유 메세지

Hide All Panels 아이콘을 클릭하면 모든 패널이 최소화됩니다. 오른쪽 하단에 있는 SHOW 버튼을 클릭하면 이전 화면으로 돌아갑니다.

그림 32. SHOW 버튼

그림 32. SHOW 버튼

Trade Info 패널에는 거래 매개 변수 목록이 나타나는데요. 함수가 포함된 경우 부드러운 녹색으로 나타납니다. 해당 매개 변수를 클릭하면 함수가 실행되며 매개 변수 이름이 파란색으로 변합니다. 반대로, 파란색으로 변한 이름을 클릭하면 처음으로 돌아가죠.

아래의 표는 Trade Info 패널 매개 변수와 해당 기능에 대한 자세한 설명입니다.

Trade Info 패널 매개 변수 목록
Account Equity ($)
현재 자본 수준 잔고보다 금액이 높은 경우 초록색으로 나타납니다. 잔고보다 금액이 낮을 경우 빨간색으로 나타납니다.
Total Positions
현재 포지션 개수
Total Orders
현재 대기 주문 개수
Loading Deposit (%)
거래에 사용된 자본 비율(%)
~Total Risk/Real Profit (%)
예수금/실제 수익에 대한 위험성 최악의 경우 발생 가능한 자본 손실 비율입니다. 포지션 오픈 가격과 실제 손절 지점 사이의 대기 주문이 고려되지 않았으므로 정확한 수치는 아닙니다. 해당 대기 주문을 포함해 계산할 경우 위험성은 보다 낮게 나타날 것입니다. 매매 시스템이 오픈 시 가격과 손절 지점 사이의 대기 주문을 서브포지션에 대한 보호용 주문으로 사용하기 때문이죠. 실제 손절 지점의 가격이 오픈 가격보다 높은 경우 매개 변수는 보호 이익을 초록색으로 나타냅니다. 퍼센트로 나타나도록 설정되어 있습니다. 매개 변수 이름을 클릭하면 금액이 나타나며 파란색으로 변합니다. 파란색으로 변한 이름을 클릭하면 원래대로 돌아가죠.
Current Size Lots
자동 거래 모드 현재 거래 랏 크기
Stops Level (p)
현재 심볼에 대한 스탑 레벨 값(포인트) 이름을 클릭하면 색깔이 변하며 스탑 레벨을 나타내는 점선이 차트에 나타납니다. 해당 레벨은 가격과 함께 움직입니다.
Freeze Level (p)
현재 심볼에 대한 프리즈 레벨 값(포인트)
Spread Is Float (p)
현재 상품에 대한 스프레드 값 유동 스프레드의 경우 Spread Is Float 값이 표시되며 아닌 경우 Spread 값이 표시됩니다. 이름을 클릭하면 매도 호가 선이 차트에 추가되거나 차트에서 삭제됩니다.
Swap Long (p)
현재 통화쌍에 대한 롱 포지션 스왑
Swap Short (p)
현재 통화쌍에 대한 숏 포지션 스왑


자금 관리 블록 매개 변수는 표보다 글로 설명하는 것이 쉽습니다. 우선 자금 관리 블록은 세 부분으로 나뉩니다. 위쪽에는 BALANCE(잔고)VOLUME(볼륨)의 두 개 열이 나타나는데요. BALANCE 열은 자금 관리 시스템이 활성화된 경우(true) 거래 랏 볼륨이 증가 또는 감소할 잔고 레벨을 보여줍니다. VOLUME 열이 나타내는 값만큼 잔고가 증가 또는 감소하게 되죠. 최소 랏 크기로 줄어든 경우, 볼륨 대신 빨간색으로 'Not Less Than 0.01'이라는 메세지가 나타납니다. 자금 관리 시스템이 비활성화된 경우(false) 해당 열의 모든 값은 0이 됩니다.

자금 관리 블록의 중앙부에는 자금 관리 시스템 매개 변수가 나타납니다. 각 매개 변수에 대한 설명은 위의 EA 매개 변수 설명 표를 참조하세요. 해당 매개 변수 값은 거래 도중 변경할 수 없으며 EA 외부 변수로서만 수정 가능합니다.

자금 관리 블록 하단에는 위험 관리와 관련된 매개 변수가 나타납니다. 이와 관련된 설명도 EA 매개 변수 설명 표를 참조하면 됩니다. Max Draw Down Equity (%)의 '/' 오른쪽에 위치하는 값은 한계를 설정합니다. 왼쪽에 위치하는 값은 자본에 대한 현재 계정 드로우다운을 나타내죠.

설정된 계정 드로우다운 한계에 도달하면 모든 포지션이 청산되며 대기 주문이 삭제됩니다. 또한, 매개 변수 값이 빨간색으로 나타납니다. 예: ! 22.01/20.00 ! . 이는 드로우다운 한계가 20%로 설정되었으나 현재 드로우다운이 22%에 달함을 의미하죠.

거래 실행 후 Trade Info 블록의 Current Size Lots 매개 변수에 나타난 예수금이 지정값보다 적거나 지정값과 같을 경우 Stop Trade by Free Margin ($) 값 또한 빨간색으로 표시됩니다. 예: ! 5000 ! . 예수금이 충분해질 때까지 EA는 더이상의 거래를 실행하지 않을 겁니다.

목록의 마지막 매개 변수인 SL/TP by Disconnect (p) 값은 EA에서 설정된 포인트 개수를 나타내거나 FALSE 값을 나타냅니다. 이 경우 EA에서 값을 0으로 설정하면 해당 매개 변수가 비활성화됩니다. 매개 변수 값이 0인 경우 실제 손절이익 실현 지점이 설정되지 않은 채로 포지션이 오픈됩니다.

손절 지점이 설정되지 않은 경우, Trade Info 블록의 ~Total Risk/Real Profit (%) 값은 100.00 !을 갖습니다. 예수금 전체가 위험하다는 뜻이죠(100%). 해당 매개 변수가 금액으로 표시되는 경우, ~Total Risk/Real Profit ($) 값은 현재 자본 수준을 나타냅니다. 예: ! 7698.54 ! .


7. 차트 좌측 거래 정보 패널

이제 Trade Info 블록의 Left Panel 아이콘을 클릭했을 때 차트 좌측에 나타나는 거래 정보 패널을 살펴보겠습니다. 패널 이름 옆에 다섯 개의 아이콘이 나타나는데요. 각 아이콘을 이용해 다른 패널 유닛으로 이동할 수 있습니다.

  • 매개 변수 시스템(Parameters System)
  • 거래 세션 시계(Clocks Of Trading Sessions)
  • 수동 거래(Manual Trading)
  • 거래 실적(Trading Performance)
  • 계정 및 통화쌍 정보(Account/Symbols Info)

하나하나 자세히 살펴보겠습니다.


7.1. 매개 변수 시스템

매개 변수 시스템을 활성화하면 다음과 같은 형태의 패널이 나타납니다.

그림 33. 매개 변수 시스템

그림 33. 매개 변수 시스템

표는 7개 열로 구성됩니다. 함수가 포함되지 않은 헤딩은 노란색으로 나타납니다. 함수가 포함된 헤딩은 부드러운 녹색으로 나타나죠.

특정 심볼에 대한 거래가 미허용된 경우 전체 전략 블록이 회색으로 나타납니다. 특정 심볼에 대한 거래는 허용되었으나 특정 매매 전략의 사용이 불가한 경우 사용 불가능한 전략들만 회색으로 나타납니다.

  • SYMBOLS. 첫 번째 열은 EA에서 거래되는 통화쌍 이름을 포함합니다. 네 가지 신호/전략 그룹을 이용하면 모든 통화쌍 거래가 가능하므로 해당 표는 보기 쉽고 사용하기 쉽게 작성되었습니다. 통화쌍 아래에 밑줄이 나타나면 해당 통화쌍과 특정 전략이 연관되어 있다는 의미입니다. 해당 통화쌍을 클릭하면 동일한 통화쌍으로 이동하죠. 동일한 선 상에 나타나는 타임프레임은 디폴트 값을 갖습니다. 현재 심볼은 파란색으로 변하죠. 해당 심볼과 관련된 매매 전략 블록 전체가 밝게 표시됩니다. 위의 그림에서 현재 심볼이 AUDUSD임을 확인할 수 있죠.

  • 그림 34. 대기 주문과 특정 전략 간의 연결을 나타내는 가로 선 SHOW ORDERS. 두 번째 열에는 서브포지션 오픈 시 사용된 전략, 볼륨 및 방향이 나타납니다. 서브포지션이 없는 경우 EMPTY 값이 나타나죠. 서브포지션이 있는 경우 볼륨이 보일 겁니다. 방향은 색깔로 구분합니다. 롱 포지션 볼륨(Long)은 녹색으로(예: 0.05), 숏 포지션의 볼륨(Short)은 붉은색으로(예: 0.02) 나타납니다. 어떤 대기 주문이 어떤 서브포지션과 관련되어 있는지 확인할 수 있는 체크박스도 있습니다. 특정 서브포지션에 해당하는 박스를 체크하고 나면 해당 대기 주문 아래에 가로 실선이 나타나며 해당 서브포지션 진입 가격이 동일한 색깔의 세로 점선으로 나타납니다. 동시에 모든 박스를 체크해도 됩니다. 각 주문 그룹별로 고유의 색깔을 가지므로 선이 혼동될 일이 없습니다. 오른쪽 그림을 참조하세요.
    다음 심볼로 넘어간다고 해서 체크박스가 해제되지 않습니다. 다시 돌아가면 체크한 대로 차트에 선이 다시 나타나죠. 특정 포지션이 청산되는 경우, 해당 서브포지션과 관련된 선이 차트에서 삭제되며 체크박스 또한 초기화됩니다. 해당 열의 헤딩은 클릭할 수 있는데요. 체크된 박스가 없는 경우 이름이 부드러운 녹색으로 나타날 겁니다. 한 개 이상의 박스가 체크된 경우 파란색으로 나타나죠.

  • TYPE SIGNAL/TRADING STRATEGY. 세 번째 열은 EA 매개 변수에서 선택된 신호 및 거래 전략을 보여줍니다. 신호 이름을 클릭하면 차트에 인디케이터가 적용되며 이를 기반으로 특정 전략에 대한 거래 신호가 생성됩니다. 이름은 파란색으로 나타납니다. 차트에 인디케이터가 이미 적용된 상태에서 다른 신호 이름을 클릭하면 인디케이터가 해당 신호로 교체됩니다. 차트에서는 특정 인디케이터를 적용하기 위해 필요한 통화쌍과 타임프레임을 확인할 수 있습니다.

  • TIMEFRAME. 네 번째 열은 특정 전략의 거래 신호가 형성된 타임프레임을 나타냅니다. 타임프레임을 클릭하면 해당 타임프레임으로 이동하며 타임프레임 이름이 파란색으로 바뀝니다. 현재 블록/심볼 가운데 동일한 타임프레임을 갖는 모든 블록/심볼의 이름 또한 파란색으로 변합니다. 다른 블록/심볼에 해당하는 타임프레임을 클릭하면 현재 심볼 또한 변하게 되죠. 타임프레임 이름을 클릭했을 때 차트에 적용된 인디케이터가 있다면 해당 인디케이터는 심볼과 타임프레임, 전략에 맞게 변합니다.

  • PERIOD INDICATOR. 다섯 번째 열은 EA 외부 변수에서 설정된 인디케이터 기간입니다. 인디케이터가 차트에 적용되면 해당 기간은 파란색으로 표시됩니다. 표시된 기간 옆에는 체크박스가 나타나죠. 분석에 필요한 타임프레임과 심볼에 해당하는 박스를 체크한 후 헤딩을 클릭하면 차트 하단에 선택된 타임프레임 및 심볼을 나타내는 차트를 보여주는 보조 창이 열립니다. 헤딩은 파란색으로 표시됩니다. 차트에 적용된 인디케이터가 있을 경우 보조 창의 차트에도 동일하게 적용됩니다. TYPE SIGNAL/TRADING STRATEGY열의 신호 이름을 클릭해 인디케이터를 제거하는 경우, 보조 창 차트에 적용된 인디케이터 또한 삭제됩니다. 추가로 인디케이터를 적용할 때도 마찬가지입니다. 헤딩이 파란색일 때 박스를 체크하거나 체크를 해제하면 선택된 차트가 보조 창에 추가되거나 보조 창에서 제거됩니다. 파란 헤딩을 클릭하면 보조 창은 최소화됩니다. 사실 보조 창이 삭제되는 것인데요. 모든 체크박스는 그대로 유지되므로 아무때나 복원할 수 있습니다. 보조 창의 크기는 조정 가능합니다. 윗부분을 드래그하면 길이를 늘릴 수 있죠. 대부분의 인디케이터 또한 크기 조절이 가능합니다. 보조 창 또는 프로그램 창의 크기가 조절된 경우, 보조 창의 차트는 서로 겹치지 않도록 자동으로 조정됩니다. 한번에 모든 박스가 체크된 경우, 보조 창에는 모든 차트가 나타납니다. 보조 창의 차트를 클릭하면 메인 창의 해당 심볼/타임프레임으로 이동하죠. +/- 키를 눌러 차트를 확대하거나 축소하면 보조 창 내 차트 또한 자동으로 조정됩니다.

    EA를 편안하게 활용하려면 최소 15개의 모니터가 필요합니다.

    인디케이터 핸들 수신과 동시에 인디케이터의 금융 상품, 타임프레임 및 매개 변수가 특정되어야 합니다. 인디케이터 외부 변수를 통해 표시될 신호가 결정되므로 핸들 수신 후 EA 설정에서 선택된 신호에 따라 필요한 설정 값을 입력합니다. 따라서 특정 전략에서 사용된 신호들만 보조 창 차트에서 확인하게 되는 거죠.

그림 35. 보조 창 다중 차트

그림 35. 보조 창 다중 차트


  • TAKE PROFIT. 여섯 번째 열은 Take Profit 값을 나타냅니다. 해당 값은 EA 외부 매개 변수로 설정됩니다. 특정 매개 변수 블록이 Take Profit 기능의 비활성화를 요구하는 경우(NO TAKE PROFIT), 매개 변수 시스템 패널의 표에 NO TP 값이 나타납니다.

  • STOP LOSS. 일곱 번째 열은 Stop Loss 값을 나타냅니다. Take Profit과 동일한 원칙을 기반으로 결정되죠. Stop Loss 기능이 설정되지 않은 경우, 표에는 NO SL 값이 나타납니다.


7.2. 거래 세션 시계

Clocks Of Trading Sessions으로 이동하면 패널이 다음과 같이 바뀝니다.

그림 36. 거래 세션 시계

그림 36. 거래 세션 시계

EA 외부 매개 변수로 설정된 시간 변수 값을 확인할 수 있습니다. 해당 매개 변수에 대한 간단한 설명은 EA 매개 변수 표를 참조하세요. 정해진 시간 범위 내 거래 시 ON/OFF TIME RANGE 옵션에 가장 높은 우선 순위가 부여됩니다. 즉, 특정 심볼에 대한 모든 시간 옵션이 활성화된 경우, EA는 ON/OFF TIME RANGE 값을 따르게 됩니다.

해당 시간 범위가 끝나면 모든 포지션이 청산되며 청산된 서브포지션과 관련된 모든 대기 주문이 삭제됩니다. 그 다음 우선 순위는 CLOSE IN THE END DAY에 부여되는데요. 당일 장 종료 시 포지션을 청산하는 옵션입니다. 당일 장 종료 시 포지션 청산과 해당 주 장 종료 시 포지션 청산 옵션(CLOSE IN THE END WEEK)이 모두 활성화 된 경우 EA는 해당 옵션을 따릅니다. ON/OFF TIME RANGECLOSE IN THE END DAY 매개 변수가 FALSE 값을 갖는 경우에만 해당 주 장 종료 시에 포지션이 청산됩니다. 위의 기능은 자동 모드와 반자동 모드에서 모두 사용 가능합니다.

시간 범위 모드를 이용하면 거래 시작 시간(START TRADE)을 모든 포지션이 청산되는 거래 종료 시간(END TRADE) 보다 빠르거나 늦게 설정할 수 있습니다. 예를 들어, START TRADE 값이 10:00이고 END TRADE 값이 23:00인 경우, EA는 오전 10시부터 특정 심볼에 대한 신호를 추적합니다. 또한 23:00 시까지 오픈된 포지션이 있는 경우, 오후 11시에 청산되며 모든 대기 주문이 삭제됩니다.

다시 오전 10시가 될 때까지 EA는 포지션을 오픈하지 않습니다. 거래 시작 시간 값이 22:00이고 종료 시간 값이 16:00인 경우, EA는 당일 22:00에 거래를 시작해 이튿날 16:00 에 거래를 마감합니다.

그림 37. 첫 번째 값이 두 번째 값보다 큰 경우

그림 37. 첫 번째 값이 두 번째 값보다 큰 경우

거래 세션 시계 패널 하단에는 현재 그리니치 평균시(GMT), 지정 표준 시간대 및 서버 시간이 나타납니다. 서버에 연결되지 않은 경우 서버 시간 대신 빨간 색으로 '-- : -- : --'가 나타납니다.

차트 내 심볼은 SYMBOLS 열을 클릭해 변경할 수 있습니다. 타임프레임은 해당 심볼에 처음 적용되는 전략의 타임프레임 값을 따릅니다.


7.3. 수동 거래

수동 거래는 수동 및 반자동 거래를 포함하며 OPERATION WITH POSITION & ORDERS 열을 클릭해 해당 구간으로 이동할 수 있습니다.

  • Buy/Sell/Reverse(매수/매도/반전)
  • Close Positions(포지션 청산)
  • Set Pending Orders(대기 주문 설정)
  • Modify Orders/Positions(주문/포지션 정정)
  • Delete Pending Orders(대기 주문 삭제)


7.3.1. 매수/매도/반전

매수/매도/반전이 활성화된 수동 거래는 다음과 같이 나타납니다.

그림 38. 수동 거래-매수/매도/반전

그림 38. 수동 거래-매도/매수/반전

옵션(버튼)은 해당 심볼에 대한 포지션 매수, 매도 및 반전에 사용됩니다. 옵션 하단에는 손절(SL), 이익 실현(TP) 및 (LT) 값을 설정할 수 있는 박스가 있습니다. SL/TP 값을 0으로 설정하고 매수/매도 시도를 하는 경우 손절/이익 실현 기능을 사용하지 않는 포지션이 오픈됩니다. 인풋 박스에 해당하는 이름을 클릭하면 자동으로 0이 입력됩니다. LT 박스를 클릭하는 경우, 해당 금융 상품에 설정 가능한 최소 랏 값이 설정됩니다.

버튼을 클릭하면 대기 및 조정 모드가 활성화되는데요. 버튼의 색깔이 훨씬 어둡게 변하며 SL/TP 값이 0이 아닐 경우 손절/이익 실현 지점을 나타내는 가로 선이 차트에 표시됩니다. 패널의 오른쪽 상단에 START 버튼이 나타납니다(전체 옵션 적용 규칙). 이 버튼을 이용해 거래 오퍼레이션이 실행되죠. 관련된 기타 패널 옵션을 먼저 설명한 후에 해당 과정에 대해 다루겠습니다.

매수/매도/반전 하단에 보조 옵션이 나타납니다.

  • Follow The Price. 설정 레벨을 조정하거나 레벨에 해당하는 인풋 박스 값을 수정합니다.

    • Levels. 해당 옵션이 선택된 경우 손절/이익 실현 지점 설정의 기반이 되는 수평선이 인풋 박스에 입력된 거리를 지키면서 가격과 함께 이동합니다.

    • Value Edits. 해당 옵션이 선택된 경우 수평선은 이동하지 않으며 가격과 수평선 레벨의 거리가 설정되어 있는 경우 입력 값이 조정됩니다.

  • Set Range Orders. 해당 옵션은 주문의 기준이 되는 거래 가격 및 수평선을 한번에 차트에 나타낼 때 사용됩니다. 세로 축의 가격 스케일을 직접 수정할 필요가 없죠. 클릭 한번이면 됩니다. 가격 차트의 최대값과 최소값은 각각 +5 포인트와 -5 포인트로 설정됩니다. 복수 개의 차트를 나타내는 보조 창에 특정 심볼에 대한 포지션 및/또는 대기 주문이 나타나는 경우 세로 스케일은 자동으로 조정됩니다.

  • TP/SL As Position. 해당 옵션을 이용하면 대기 주문에 대한 손절/이익 실현 지점 설정 및 수정을 자동화할 수 있습니다. 예를 들어, 동일한 심볼에 손절 및/또는 이익 실현이 설정된 포지션이 있는 경우, 대기 주문에 대한 손절/이익 실현 지점이 자동으로 동일하게 설정됩니다. 해당 박스를 체크하면 손절/이익 실현 지점이 따로 명시되지 않은 경우 자동으로 동등하게 설정됩니다. 언제 어떤 거래를 실행해야 하는지 계산할 필요가 없는 거죠. MetaTrader 5 의 기본 도구를 이용해 대기 주문/손절/이익 실현을 마우스 드래그만으로도 쉽게 수정할 수 있습니다. 해당 도구는 터미널 설정->차트 탭->거래 레벨 드래그에서 활성화 및 비활성화 가능합니다.. EA의 TP/SL As Position 옵션과 함께 활성화되며 EA는 대기 주문/손절/이익 실현 값도 추적하게 됩니다. 간단한 드래그 한번으로 모든 대기 주문에 대한 손절이익 실현 지점을 조정할 수 있게 되는 거죠.

  • Names Levels. 해당 옵션을 이용하면 수평선 상의 가격과 이름을 나타내는 방식을 설정할 수 있습니다.

아래 가격 차트로 확인하면서 거래 실행 전 수평 레벨 조정(손절이익 실현이 설정된 매수 주문에 대해서도 살펴보죠.

그림 39. Set Range Orders 옵션 사용

그림 39. Set Range Orders 옵션 사용

위는 BUY 버튼이 눌러지는 모습입니다. 버튼의 색깔이 훨씬 짙어지며 오른쪽 상단에 START 버튼이 나타납니다. 차트에 수평선이 나타나죠. 손절 지점은 빨간색으로, 이익 실현 지점은 초록색으로 표시됩니다. Set Range Orders 옵션이 비활성화되는 경우, 이익 실현 지점이 보이지 않습니다. 선이 나타나기는 하지만 창의 범위를 벗어납니다. Set Range Orders 옵션을 활성화시키면, 모든 지점이 보이도록 차트의 높이가 조정됩니다.

해당 옵션을 활성화시킨 후 수평선을 드래그하면 인풋 박스 값과 각 레벨에 대한 차트의 높이가 자동으로 조정됩니다. 인풋 박스 값을 수정해서 레벨을 조정할 수도 있습니다. 스탑 레벨 범위 내에 수평선을 설정하려고 하면 EA가 자동으로 수평선을 범위 밖으로 밀어냅니다. START 버튼을 클릭하면 포지션이 오픈되며 START 버튼은 삭제됩니다.

위의 예시는 현재 심볼에 대한 포지션이 없을 경우에만 적용됩니다. 이 경우 REVERSE 버튼은 사용할 수 없죠. 해당 버튼을 클릭하면 오류를 알리는 소리가 나면서 버튼이 눌리지 않을 겁니다. START 버튼도 나타나지 않습니다. 하지만 이미 오픈된 포지션이 있는 경우, REVERSE 버튼을 이용하면 동일한 볼륨으로 포지션이 반전됩니다. 손절이익 실현 지점도 동일하게 유지되죠.

BUYSELL 버튼을 이용해 현재 포지션 볼륨을 증가 또는 감소시킬 수도 있습니다. 손절/이익 실현 지점이 지정되지 않은 경우 새로 설정해 포지션을 수정할 수도 있죠. 해당 버튼을 이용해 포지션을 청산하거나 반전시킬 수도 있습니다. 그 밖에 다른 오퍼레이션을 수행할 수 있을지도 모르겠네요.



7.3.2. 포지션 청산

그림 40. 수동 거래-포지션 청산

그림 40. 수동 거래-포지션 청산

수동 거래 블록의 포지션 청산은 포지션 청산에 대한 다음의 옵션을 제공합니다.

  • ALL ONLY PROFIT은 현재 이익이 발생하는 모든 포지션을 청산하는 옵션입니다.
  • ALL ONLY LOSS는 현재 손실이 발생하는 모든 포지션을 청산하는 옵션입니다.
  • ON ALL SYMBOLS는 전체 심볼에 대한 포지션을 청산하는 옵션입니다.
  • ON CURRENT SYMBOL은 현재 심볼에 대한 포지션을 청산하는 옵션입니다.


7.3.3. 대기 주문 설정

그림 41. 수동 거래-대기 주문 설정

그림 41. 수동 거래-대기 주문 설정

대기 주문과 관련된 옵션을 설정할 수 있습니다. 매수/매도/반전과 마찬가지로 손절(SL), 이익 실현(TP) 및 (LT)에 대한 인풋 박스가 있습니다. 다음에 대한 인풋 박스 또한 존재합니다.

  • 대기 주문 (PO)
  • 도달 시 역지정가 매수/역지정가 매도 유형 대기 주문의 실행 가격(EP)을 설정할 레벨
  • 대기 주문 그룹(+PO)에 대한 공통 설정
  • 대기 주문 그룹(SP) 설정 시 주문 간 거리 설정(SPACE)

주요 수정 규칙은 매수/매도/반전에서 이미 설명했습니다. 참고로 거래 레벨을 틀리게 설정한 경우 EA에 입력되지 않습니다. 거래 규칙에 따라 자동으로 수정될 겁니다.

아래 그림은 대기 주문 그룹 설정의 예입니다.

인풋 박스에 입력된 값(+PO)이 12이지만 이익 실현 지점이 설정되는 경우 EA가 자동으로 해당 값을 조정할 겁니다. 이익 실현 지점을 드래그하여 조정하는 경우 차트 내 주문 레벨 개수 또한 변합니다.

그림 42. 특정 개수의 대기 주문 설정

그림 42. 특정 개수의 대기 주문 설정


7.3.4. 주문 및 포지션 정정

오픈된 포지션을 쉽게 수정할 수 있는 옵션을 제공합니다. 다음 그림을 참고하세요.

그림 43. 수동 거래-주문/포지션 정정

그림 43. 수동 거래-주문/포지션 정정

포지션에 대한 손절/이익 실현 지점이 설정되지 않은 경우, 이익 실현/손절 옵션을 이용해 추가할 수 있습니다. 포지션에 대한 손절/이익 실현 지점이 이미 설정된 경우 해당 버튼을 눌러 나타나는 수평선을 이용해 쉽게 수정할 수 있습니다.

SET STOPLOSS TO BREAKEVEN 옵션을 이용하면 IF PROFIT >= 인풋 박스에 입력한 포인트와 같거나 그보다 큰 수익이 발생한 포지션을 수정할 수 있습니다.


7.3.5. 대기 주문 삭제

대기 주문 삭제에서는 빠르게 대기 주문을 삭제할 수 있는 여러 옵션이 제공됩니다.

그림 44. 수동 거래-대기 주문 삭제

그림 44. 수동 거래-대기 주문 삭제

  • ALL ON ALL SYMBOLS-전체 통화쌍에 대한 모든 대기 주문 삭제
  • ALL ON CURRENT SYMBOL (CS)-현재 통화쌍에 대한 모든 대기 주문 삭제
  • BUY STOPs (CS)-현재 통화쌍('CS': Current Symbol)에 대한 모든 역지정가 대기 주문 삭제
  • BUY STOP LIMITs (CS)-현재 통화쌍에 대한 모든 역지정가 매수 대기 주문 삭제
  • BUY LIMITs (CS)-현재 통화쌍에 대한 모든 지정가 매수 대기 주문 삭제
  • SELL STOPs (CS)-현재 통화쌍에 대한 모든 역지정가 대기 주문 삭제
  • SELL STOP LIMITs (CS)-현재 통화쌍에 대한 모든 역지정가 매도 대기 주문 삭제
  • SELL LIMITs (CS)-현재 통화쌍에 대한 모든 지정가 매도 대기 주문 삭제


7.4. 거래 실적

거래 실적은 다음의 그림과 같이 나타납니다.

그림 45. 거래 실적

그림 45. 거래 실적

표는 7개 열로 구성됩니다. 첫 번째 열인 SYMBOLS은 통화쌍입니다. 나머지는 조금 더 설명할게요.

  • R & RP (%) 각 통화쌍별 포지션에 대한 리스크를 퍼센트로 나타냅니다. 손절 지점이 수정되어 포지션 오픈가보다 높아지는 경우 값이 초록색으로, 낮은 경우 빨간색으로 나타납니다. 손절 지점이 설정되지 않은 경우 경고가 나타납니다(! ! !).

  • R & RP (p/$) 마찬가지로 각 통화쌍별 리스크를 나타냅니다. 해당 열의 헤딩은 클릭할 수 있는데요. 클릭된 헤딩은 파란색으로 나타나며 R & RP (p) 값이 나타납니다. 헤딩이 클릭되지 않은 경우 R & RP ($) 값이 나타납니다. 이익 보호 여부에 따라 값의 색깔이 설정됩니다. 손절 지점이 설정되지 않은 경우 경고가 나타납니다(! ! !).

  • PROFIT n DAYS ($) 지정된 일수 동안의 이익을 나타냅니다. 헤딩을 클릭하면 패널 오른쪽 상단에 인풋 박스가 나타나며 헤딩은 파란색으로 변합니다. 인풋 박스에 입력된 만큼의 일수에 대한 이익이 각 통화쌍별로 나타납니다. 해당 값은 헤딩에도 표시됩니다. 지정된 기간 동안의 이익/손실에 따라 값의 색깔이 정해집니다.

  • MARGIN ($) 각 포지션에 대한 마진의 크기입니다.

  • TICK LOSS/PROFIT ($) 손실/이익 거래의 틱 값을 나타냅니다.

  • MARGIN CHECK BUY/SELL ($) 매수/매도 거래 실행에 필요한 예수금을 나타냅니다. 헤딩은 클릭할 수 있는데요. 헤딩을 클릭하면 오른쪽 상단에 마지막으로 설정한 볼륨이 입력된 인풋 박스가 나타납니다. 새로운 값을 입력하면 해당 열에 포함된 모든 값이 재계산됩니다.


7.5. 계정 및 통화쌍 정보

그림 46. 계정 및 통화쌍 정보

그림 46. 계정 및 통화쌍 정보

계정 및 현재 거래 중인 통화쌍에 대한 정보를 확인할 수 있습니다.


8. 기타 인디케이터

EA 사용 시 다음의 인디케이터가 필요합니다.

  • SUBWINDOW 인디케이터 인디케이터라기 보다는 여러 개의 차트를 표시할 일종의 더미 보조 창입니다.
  • Spy_Control_panel_MCM 인디케이터 Konstantin Gruzdev(Lizar) 씨가 개발한 인디케이터입니다. 더 자세한 정보코드 베이스를 참조하세요. 틱과 새로운 바를 얻는 데에 사용되는 EA입니다.
  • MultiSignals_PCH 인디케이터 본문의 도입부에서 설명한 인디케이터입니다. 코드 베이스 또는 본문 하단의 첨부 파일을 통해 다운받을 수 있습니다.

모든 인디케이터는 \MetaTrader 5\MQL5\Indicators에 저장되어야 합니다.


결론

간결하면서도 다양한 기능을 갖춘 투자자 키트를 완성했네요.

불가항력적인 상황이 언제나 발생할 수 있다는 걸 꼭 명심하세요. 하지만 대부분의 경우 중장기 거래에서는 피할 수 있습니다. 최소한 당일 거래는 피하세요. 특히 본문의 EA의 경우 반드시 피해야 합니다. EA는 아무 노력 없이도 여러분을 부자로 만들어 줄 마법 지팡이가 아닙니다. 여느 도구와 같이 사용하는 방법을 배워야 하죠. 다음 단계로 나아갈 준비는 마쳤습니다.

향후에 구현할 아이디어들이 아주 많아요. 프로그램 개발은 계속 진행될 것이며 해당 프로그램을 구입한 사용자들에게 관련 지원이 제공될 것입니다. 무료 업데이트 또한 제공할 예정입니다. 제품 개발에 대한 코멘트나 제안 사항이 있으시면 제 프로필의 이메일로 연락 주시거나 저에게 메세지를 보내주세요. 우리 함께 개발도 하면서 투자자로서의 길을 걸어나가 보죠!


MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/392

MQL5 시장이 판매 전략 및 기술 지표에 가장 적합한 이유는 무엇입니까? MQL5 시장이 판매 전략 및 기술 지표에 가장 적합한 이유는 무엇입니까?
MQL5.community Market 은 Expert Advisor 개발자에게 수천 명의 잠재 고객으로 구성된 이미 형성된 시장을 제공합니다. 이곳은 거래로봇과 기술지표를 판매하기에 가장 좋은 장소입니다!
마켓에 제품 출시하기 마켓에 제품 출시하기
Marekt을 통해 전 세계 수백만 명의 MetaTrader 사용자에게 트레이딩 애플리케이션을 제공하십시오. 이미 구축된 인프라가 있습니다: 많은 사용자, 라이선스 솔루션, 평가판, 업데이트 게시 및 결제등의 인프라를 활용할 수 있습니다. 간단한 판매자 등록 절차를 완료하고 제품을 게시하기만 하면 됩니다. 이러한 서비스를 통해 저희가 구축해 놓은 각종 기술들을 사용해서 귀하의 프로그램을 만들어 추가적인 수익을 창출 하십시오.
OpenCL: 병렬 세계로의 다리 OpenCL: 병렬 세계로의 다리
2012년 1월 말, MetaTrader 5의 개발을 뒷받침하는 소프트웨어 개발 회사는 MQL5에서 OpenCL에 대한 기본 지원을 발표했습니다. 예시적인 예를 들어, 이 문서에서는 MQL5 환경에서 OpenCL의 프로그래밍 기본 사항을 설명하고 운영 속도 향상을 위한 프로그램 최적화의 몇 가지 예를 제공합니다.
AutoElliottWaveMaker-MetaTrader 5  엘리엇 파동 반자동 분석 도구 AutoElliottWaveMaker-MetaTrader 5 엘리엇 파동 반자동 분석 도구
이번 글에서는 MetaTrader 5 의 첫 번째 엘리엇 파동 반자동 분석 기구인 AutoElliottWaveMaker에 대해 알아보겠습니다. 해당 도구는 MQL5만으로 작성되어 있으며 외부 라이브러리를 포함하지 않습니다. 이는 MQL5 언어만으로도 충분히 고급 프로그래밍이 가능하다는 반증이기도 하죠.