MetaTrader 5에서 MACD와 SAR 활용하기: 트레이딩 시스템 최적화

Mike 2018.06.18 19:52 27 0 0
첨부파일

아이디어 제공자: Gatis.

MQL5 코드 제공자: Vladimir Karputov.

이 EA는 네 가지 매개변수를 분석합니다:

  1. 막대 #1의 MACD 주요 선의 값 (macd_main_1)
  2. 막대 #1의 MACD 신호선의 값 (macd_signal_1)
  3. 막대 #1의 SAR의 값 (sar_1)과 가격 Bid (m_symbol.Bid())의 관계

이 매개변수들은 매수 및 매도 신호의 기본 공식에 결합됩니다:

bool open_buy        = (macd_main_1>macd_signal_1 && macd_signal_1<0 && sar_1<m_symbol.Bid());
   bool open_sell       = (macd_main_1<macd_signal_1 && macd_signal_1>0 && sar_1>m_symbol.Bid());

그러나, 공식의 어느 부분에서든 신호의 값 <>를 최적화할 수 있습니다. 이를 위해 각 신호 <>변수 (InpMoreLessBuy_1, InpMoreLessBuy_2, InpMoreLessBuy_3, InpMoreLessSell_1, InpMoreLessSell_2, InpMoreLessSell_3)가 도입됩니다. 이 변수들을 사용하여 기본 공식은 다음과 같이 수정됩니다:

bool open_buy=    (InpMoreLessBuy_1   ? macd_main_1>macd_signal_1      : macd_main_1<macd_signal_1) && 
                  (!InpMoreLessBuy_2  ? macd_signal_1 < 0              : macd_signal_1 > 0 ) &&
                  (!InpMoreLessBuy_3  ? sar_1         < m_symbol.Bid() : sar_1         > m_symbol.Bid() );
   bool open_sell=(!InpMoreLessSell_1 ? macd_main_1<macd_signal_1      : macd_main_1>macd_signal_1) && 
                  (InpMoreLessSell_2  ? macd_signal_1 > 0              : macd_signal_1 < 0 ) &&
                  (InpMoreLessSell_3  ? sar_1         > m_symbol.Bid() : sar_1         < m_symbol.Bid() );

이 EA는 새 막대가 생성될 때만 작동합니다. 신호가 수신되면 수신된 신호와 반대의 포지션이 닫힙니다.

공식을 최적화할 때는 포지션 수를 최적화하는 것도 합리적입니다:

MACD와 SAR 최적화

목록
댓글 0