시스템트레이딩 게시글

이동 평균 2라인 기반 EA로 MetaTrader 4에서 성공적인 거래하기

첨부파일
13617.zip (118.38 KB, 다운로드 1회)

안녕하세요, 트레이더 여러분! 오늘은 이동 평균 2라인을 기반으로 한 EA에 대해 알아보겠습니다. 이 Expert Advisor는 저의 아이디어로 탄생했으며, 코드 작성은 세르기 디우바킨이 했습니다.

이번 EA는 PAMM 계좌에서 거래에 사용되었고, 제 개인적인 실수로 인해 순수익은 20%에 그쳤습니다. 하지만 최대 수익률은 초기 예치금의 84%에 달했습니다.

실제 거래 기간은 2015년 2월 23일부터 2015년 7월 23일까지였습니다.

제 경험에 따르면, 이 EA로 거래하기 위해서는 최소 15,000에서 20,000의 큰 자본이 필요합니다.

이 EA는 이동 평균 값들을 사용하여 거래합니다. 빠른 이동 평균선이 느린 이동 평균선 위에 있고, 두 선 사이의 거리가 설정된 값보다 크면 매수 주문이 열립니다.

반대로, 매도 주문은 지표의 반대 값을 사용하여 열립니다. 주문의 종료는 이동 평균 값에 따라 결정됩니다.

이 EA는 추가 플러그인 모듈도 갖추고 있습니다. 여기에는 빠른 이동 평균선과 느린 이동 평균선 사이의 거리, 이익 실현(Take Profit), 손절매(Stop Loss), 트레일링 스탑(Trailing Stop), 주문 간 거리(상하), 이익 실현 평균화 방법, 거래 시간, 턴(Turn), 이전 주문이 손실로 종료될 경우 첫 번째 주요 로트 증가 등이 포함됩니다.

EA 알고리즘:

  1. EA는 이전에 열었던 주문이 있는지 확인합니다.
  2. 열려 있는 주문이 없다면, EA는 차트를 분석하고 설정한 모든 조건이 충족되면 첫 번째 주요 주문을 엽니다.
  3. 첫 번째 주요 주문이 열리면, EA는 이익 실현 및 손절매 수준을 설정합니다(모듈이 활성화된 경우).
  4. 첫 번째 주요 주문이 손실로 종료되면, 다음 주문이 크기를 증가시켜 열릴 수 있습니다.
  5. 첫 번째 주요 주문이 개설되면, 스탭 업(Step Up) 및 스탭 다운(Step Down) 모듈이 활성화되고 가격이 설정한 값에 도달하면 추가 주문이 이루어집니다. 이들 모듈에 대한 추가 주문은 EA가 이미 첫 번째 주요 주문을 열었거나 열리지 않은 추가 주문이 있을 때만 이루어집니다.
  6. 이 Expert Advisor는 2가지 작동 모드를 가지고 있습니다:
    • a) 첫 번째 모드: 빠른 MA가 느린 MA 위에 있을 경우 EA는 매수 주문을 하고, 추세가 바뀌면(빠른 MA가 느린 MA 아래로) 모든 열린 주문을 닫고 매도 주문을 합니다.
    • b) 두 번째 모드: EA가 매수 주문을 열었고 추세가 바뀌면(빠른 MA가 느린 MA 아래로) 주문은 열려 있습니다. EA는 빠른 MA가 느린 MA 아래로 내려가고 EA의 모든 주문이 마감되었을 때(이익 실현, 손절매 도달 또는 수동으로 종료)만 매도 주문을 합니다.
  7. 이 Expert Advisor는 거래 시간 모듈을 가지고 있으며, 활성화되면 EA는 지정된 시간대에만 첫 번째 주요 주문을 열 수 있습니다. 이 모듈은 추가 주문에는 적용되지 않습니다. 즉, EA가 이전에 열었던 주문이 있다면, 스탭 업, 스탭 다운 또는 턴 모듈이 활성화된 경우, 추가 주문은 시간에 관계없이 이루어집니다.

Expert Advisor 설정:

  1. 작동 모드:

    • 1 — 추세가 바뀌면 모든 열린 주문이 닫히고 반대 주문이 열립니다;
    • 2 — 추세가 바뀌어도 열린 주문은 닫히지 않고(이익 실현, 손절매 도달, 또는 수동으로 종료될 때까지 대기).
  2. 빠른 MA — 이동 평균 지표 플러그인의 설정: 기간, 오프셋, MA 방법. MetaTrader 4 터미널에 포함된 이동 평균이 사용됩니다.

  3. 느린 MA — 이동 평균 지표 플러그인의 설정: 기간, 오프셋, MA 방법. MetaTrader 4 터미널에 포함된 이동 평균이 사용됩니다.

  4. 초기 로트

    4.1. 초기 로트

    • LotConst_or_not — 사용자가 거래를 시작할 로트를 고정할지 아니면 예치금 변화에 따라 초기 로트를 재계산할지를 선택합니다:
      true — 첫 번째 로트는 고정값으로 하며 아래에 지정된 값과 같습니다;
      false — 첫 번째 로트는 예치금 변화에 따라 동적으로 변경됩니다.
    • 로트(Lots) — 거래를 위한 초기 로트를 설정합니다;
    • 위험 비율(RiskPercent) — 예치금에 따라 초기 로트를 설정합니다.

    4.2. 로트 증가

    • 첫 번째 로트 배수(FirstLotMultiplicator) — 이전 첫 번째 주요 주문이 손실로 종료되었을 경우, 매번 증가 비율을 설정하는 매개변수입니다;
    • 첫 번째 로트 크기(First_LotSize) — 첫 번째 주요 주문이 이 라인에 지정된 값에 도달하면, EA는 다음 라인에 설정된 수준에서 이익 실현을 설정합니다;
    • 첫 번째 로트 크기 이익 실현(First_LotSize_TakeProfit) — 첫 번째 주요 주문의 새로운 이익 실현 수준;
    • 첫 번째 최대 로트 크기(First_MaxLotSize) — EA가 첫 번째 주요 주문을 증가시킬 수 있는 최대 값입니다. 첫 번째 주요 주문을 배치해야 할 크기가 이 라인에 지정된 값보다 크면, EA는 3.1 항목에 따라 첫 번째 주요 주문을 배치합니다.
  5. 빠른 MA와 느린 MA 사이의 거리 설정

    • 거리(Distance) — 주문을 열기 위해 빠른 MA와 느린 MA 사이에 필요한 거리, 차트의 포인트로 측정됩니다.
      true — 거리 모듈이 활성화됨(켜짐),
      false — 거리 모듈이 비활성화됨(꺼짐).
  6. 포인트 이익 — TP

    • 이익 실현(TakeProfit) — 주문 또는 주문 그룹을 종료할 때 원하는 이익 값(포인트 기준).
      true — 이익 실현 모듈이 활성화됨(켜짐),
      false — 이익 실현 모듈이 비활성화됨(꺼짐).
  7. 평균화 방법 — 변형 — 이익 실현 수준 평균화 방법의 변형(1 또는 2 중 선택).

    • 변형 1. 평균화 수준은 다음 공식을 따릅니다: (열기 가격 1 + 열기 가격 2 + 열기 가격 3 + 열기 가격 N) / N + EA 설정에서 지정된 이익 실현 수준.
    • 변형 2. 평균화 수준은 EA가 모든 포지션의 "무손실 수준"을 결정하고, EA 설정에서 지정된 이익 실현 수준을 그 가격에 추가하여 이루어집니다.
  8. 포인트 손실 — SL

    • 손절매(StopLoss) — 주문이 반대 방향으로 움직일 때 받을 수 있는 손실 값(포인트 기준).
      true — 손절매 모듈이 활성화됨(켜짐),
      false — 손절매 모듈이 비활성화됨(꺼짐).
  9. 주문 간 거리(스텝 업) — 주문 그리드에서 열린 주문 간의 거리(간격), "추세"에 따라 설정됩니다.

    true — 스텝 업 모듈이 활성화됨(켜짐),
    false — 스텝 업 모듈이 비활성화됨(꺼짐).

    9.1. 트레일링 스탑 — 이동 가능한 손절매 수준.

    true — 트레일링 스탑 모듈이 활성화됨(켜짐),
    false — 트레일링 스탑 모듈이 비활성화됨(꺼짐).
  10. 주문 간 거리(스텝 다운) — 열린 주문 간의 거리(간격), "추세"에 반대 방향으로 설정됩니다.

    true — 스텝 다운 모듈이 활성화됨(켜짐),
    false — 스텝 다운 모듈이 비활성화됨(꺼짐).

  11. EA의 주문 식별자 — 매직 넘버(Magic Number) — EA가 거래 중 한 터미널에서 자신의 주문을 인식하는 데 도움이 되는 매개변수입니다.

  12. 로고 및 데이터 출력 — 테이블 표시(ShowTableOnTesting) — 오늘, 어제 등의 수익을 표시하는 테이블을 켜고 끌 수 있는 매개변수입니다: true - 켜짐, false - 꺼짐.

  13. 시간 프레임 — EA가 거래에 사용할 차트 시간 프레임을 결정하는 프로그램 코드입니다.

    • 현재 — 터미널에서 지정된 차트 시간 프레임.
    • M1, M5, M15, M30, H1, H4, D1, W1, MN1 — 고정 시간 프레임.
  14. 거래 시간 — 특정 시간에 첫 번째 주요 주문을 여는 모듈입니다.

    true — 거래 시간 모듈이 활성화됨(켜짐),
    false — 거래 시간 모듈이 비활성화됨(꺼짐).

  15. 턴(Turn) — 첫 번째 주요 주문의 손절매 수준에 따라 반대 방향으로 제한 주문을 배치합니다.

    true — 턴 모듈이 활성화됨(켜짐),
    false — 턴 모듈이 비활성화됨(꺼짐).

    • 턴 거리(Turn) — 반대pending 주문이 배치되는 거리입니다.
    • 로트 배수(LotMultiplicator) — 이전 주문이 손실로 종료된 경우 턴 모듈에 의해 배치된 주문의 증가 비율을 설정하는 매개변수입니다;
    • 턴 이익 실현(Turn_TakeProfit) — 턴 모듈에 의해 배치된 주문의 이익 실현 수준;
    • 턴 로트 크기(Turn_LotSize) — 턴 모듈에 의해 배치될 주문이 이 라인에 설정된 값을 초과하면, 새로운 이익 실현 수준이 사용됩니다.
    • 턴 로트 크기 이익 실현(Turn_LotSize_TakeProfit) — 턴 모듈의 주문에 대한 새로운 이익 실현 수준;
    • 턴 최대 로트 크기(Turn_MaxLotSize) — 턴 모듈에 의해 배치될 수 있는 최대 주문 크기입니다. 배치될 주문이 지정된 크기를 초과하면 EA는 이를 배치하지 않습니다.

거래 결과:

거래 결과

이번 EA는 PAMM 계좌에서 거래를 위해 사용되었습니다. 실제 거래 기간은 2015년 2월 23일부터 2015년 7월 23일까지였습니다.

최대 수익률은 초기 예치금의 84%에 달했지만, 제가 EA의 거래에 간섭한 탓에 순수익은 20%에 그쳤습니다.

EA 테스트 결과는 월 5%, 10%, 15%의 순이익률을 기록했으며, 최대 손실은 예치금의 20%를 넘지 않았습니다.

P.S. 첨부된 세트는 제가 거래한 계좌에서만 작동했습니다. 각 증권사/브로커 및 계좌(데모 또는 실제)에 맞는 사용자 설정이 필요합니다.

최적화에 너무 신경 쓰지 마세요, 최적화가 항상 도움이 되는 것은 아니며, 매우 급격한 움직임에서 주문 배치 속도를 간과할 수 있습니다.

연관 포스트

댓글 (0)