시스템트레이딩 게시글

SerialMA_EA: 메타트레이더 5를 위한 시스템 트레이딩 전략

첨부파일
20089.zip (7.9 KB, 다운로드 2회)

안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 사용할 수 있는 SerialMA 지표를 기반으로 한 Expert Advisor(이하 EA)에 대해 소개해드릴게요.

이 EA는 지표의 라인이 가격과 교차하는 지점에서부터 계산 주기를 시작하며, 다음 교차가 일어날 때까지 지속적으로 주기를 늘립니다. 교차가 일어날 때마다 계산은 최소값으로 다시 시작됩니다.

EA는 다음과 같은 지표의 특성을 활용합니다:

  • 신호 바에서 캔들스틱의 종가가 지표 라인 위에 있고, 이전 바의 지표 포인트가 지표 라인에 있을 경우, 롱 포지션을 열라는 신호입니다.
  • 신호 바에서 캔들스틱의 종가가 지표 라인 아래에 있고, 이전 바의 지표 포인트가 지표 라인에 있을 경우, 숏 포지션을 열라는 신호입니다.

포지션 오프닝 모드는 두 가지를 선택할 수 있습니다:

  • 각 신호에서 적절한 포지션이 하나 열리며, 반대 포지션은 닫힙니다.
  • 한 방향으로만 하나의 포지션을 열 수 있습니다. 첫 번째 신호에서 포지션이 열리고, 반대 포지션이 있다면 이 신호에서 닫힙니다. 동일 방향의 추가 신호는 무시되며, 반대 신호가 나타나면 포지션이 전환됩니다 (스윙).
이 EA는 헤지 계좌에서 작동하도록 설계되었습니다. 만약 넷팅 계좌에서 EA를 실행하면 경고 메시지가 나타나고 EA는 언로드됩니다.

EA의 올바른 작동을 위해서는 컴파일된 지표 파일 SerialMA.ex5를 터미널 디렉토리의 표준 지표 폴더에 저장해야 합니다 (Your terminal directory\MQL5\Indicators).

EA는 롱/숏 포지션을 활성화하거나 비활성화 할 수 있으며, 신호를 반전시켜 매도 대신 매수 또는 그 반대의 포지션을 열 수 있습니다. 스톱로스와 테이크프라핏을 포인트로 설정할 수 있으며, 잘못된 스톱로스 및 테이크프라핏 값이 지정된 경우 EA는 심볼에 대해 허용된 최소 StopLevel로 값을 조정합니다.

잘못된 값이 지정된 경우 EA는 로트를 조정합니다. 만약 로트가 너무 크면 EA는 포지션을 열 수 있도록 조정하고, 최소 로트를 열기 위한 자금이 없으면 신호를 건너뜁니다.

이 EA는 교육 목적으로 설계되었습니다.

EA에는 12개의 입력 파라미터가 있습니다:

  • Experts magic number - EA의 포지션을 식별하는 고유 ID;
  • 포지션 오프닝 모드 - 포지션 오프닝 모드 (각 신호에서 또는 하나의 포지션만 허용);
  • 롱 포지션 활성화 - 롱 포지션을 열 수 있게 활성화;
  • 숏 포지션 활성화 - 숏 포지션을 열 수 있게 활성화;
  • 거래 반전 - 반전 모드 선택 (예, 아니오): 예를 선택하면 롱 신호에서 숏 포지션이 열리고 그 반대의 경우도 마찬가지;
  • 로트 - 열 포지션의 볼륨;
  • 스톱로스 (포인트 단위) - 포지션의 스톱로스;
  • 테이크프로핏 (포인트 단위) - 포지션의 테이크프라핏;
  • 가격 슬리피지 - 포지션 오프닝 시 최대 허용 슬리피지;
  • 스탑을 위한 스프레드 배수 - 스탑 주문 계산 시 적용되는 스프레드 배수;
  • 환경 업데이트 대기 시간 (초 단위) - 거래 환경 업데이트를 기다리는 시간;
  • 환경 상태를 얻기 위한 시도 횟수 - 정확한 거래 환경을 얻기 위한 시도 횟수.
* 스톱로스 및 테이크프라핏 주문 (그리고 대기 주문)의 경우, 이러한 주문을 배치하기 위한 최소 허용 거리인 StopLevel이 있습니다. 즉, 스톱로스 및 테이크프라핏 (그리고 대기 주문)은 가격에 대해 이 거리보다 가까이 배치할 수 없습니다. StopLevel이 0이면 비어있다는 의미가 아니라, 단지 StopLevel이 변동이 있다는 뜻입니다. 이 경우 최소 거리는 보통 스프레드와 같지만, 때로는 두 배의 스프레드조차도 충분하지 않을 수 있습니다. 따라서 이 파라미터는 스탑 주문을 배치할 최소 거리를 계산하기 위해 스프레드를 위한 사용자 정의 배수를 지정할 수 있게 해줍니다.
** 거래 주문이 서버로 전송될 때, 실행 지연으로 인해 시장 포지션 수의 잘못된 계산이 발생할 수 있습니다. 이런 "정의되지 않은" 상태가 감지되면 EA는 지정된 초만큼 기다린 후 환경을 다시 읽습니다.
*** 하나의 틱 내에서 기다리는 기간 수는 EA 파라미터에서 설정됩니다. 정확한 환경을 얻기 위한 모든 허용된 시도를 한 후, EA는 처리를 종료하고 다음 틱을 기다립니다. 이때까지 거래 환경이 업데이트되지 않으면 EA는 새로운 틱에서 이러한 시도를 반복할 것입니다.

이 전략은 2017.01.04부터 2018.02.09까지의 데이터를 사용하여 기본 설정으로 테스트되었습니다. 안타깝게도, 기본 설정으로는 좋은 결과를 보이지 않았습니다. 그래서 반전 모드로 테스트를 진행했는데, 반전 모드에서 결과가 더 좋았습니다. 이 EA는 동적으로 계산된 이동 평균으로부터 신호를 받기 때문에 최적화할 파라미터가 없습니다. 그러나 EA에 추가할 내용을 고민해볼 수 있습니다. 예를 들어, 열린 포지션에 트레일링 스톱을 적용할 수 있습니다.

Fig.1,2 테스트 결과.

연관 포스트

댓글 (0)