CrossMA - 메타트레이더 5를 위한 효율적인 트레이딩 시스템

Mike 2017.01.26 18:05 80 0 0
첨부파일

아이디어 저자조지 F. 페스코프, MQL5 코드 저자barabashkakvn.

CrossMA는 두 개의 이동평균(iMA)의 교차를 기반으로 한 트레이딩 시스템입니다. 손실을 최소화하기 위해 ATR 값을 기반으로 자동으로 손절매가 설정됩니다. 포지션이 열리거나 닫힐 때마다 이메일 알림이 발송됩니다. 매개변수는 백테스트를 통해 선택할 수 있습니다.

지표 값 가져오기

첫 번째와 두 번째 바에서 지표 값을 가져오려면 다음과 같은 코드를 사용합니다:

//--- 이동 평균 값 가져오기
   mas=iMAGet(handle_iMA1,1);       // 장기 이동 평균 12
   maf=iMAGet(handle_iMA2,1);       // 단기 이동 평균 4
   mas_p=iMAGet(handle_iMA1,2);     // 장기 이동 평균 12
   maf_p=iMAGet(handle_iMA2,2);     // 단기 이동 평균 4
   Atr=iATRGet(0);

매도 조건 확인

매도 조건을 확인하는 코드는 다음과 같습니다:

//--- 매도 조건
   if(maf<mas && maf_p>=mas_p)
     {
      double lots=LotsOptimized();
      double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
      res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
      if(SndMl==true && res)
        {
         sHeaderLetter="매도 작전: "+Symbol()+"";
         sBodyLetter="매도 거래: "+Symbol()+" 가격: "+DoubleToString(m_symbol.Bid(),Digits())+
                     ", 손절매 가격: "+DoubleToString(stop_loss,Digits())+"";
         sndMessage(sHeaderLetter,sBodyLetter);
        }
      return;
     }

매수 조건 확인

매수 조건을 확인하는 코드는 다음과 같습니다:

//--- 매수 조건
   if(maf>mas && maf_p<=mas_p)
     {
      double lots=LotsOptimized();
      double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
      res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
      if(SndMl==true && res)
        {
         sHeaderLetter="매수 작전: "+Symbol()+"";
         sBodyLetter="매수 거래: "+Symbol()+" 가격: "+DoubleToString(m_symbol.Ask(),Digits())+
                     ", 손절매 가격: "+DoubleToString(stop_loss,Digits())+"";
         sndMessage(sHeaderLetter,sBodyLetter);
        }
      return;
     }


 

목록
댓글 0