현재 제공되는 EA는 CExpert 클래스를 기반으로 롱 또는 숏 포지션(또는 둘 다)을 선택할 수 있도록 설계되었습니다.
두 가지 파일이 제공됩니다:
- LongShortExpertModified.mqh: 이 클래스는 기본 CExpert 클래스를 확장하여 CheckOpen()과 CheckReverse() 메소드를 수정합니다. 이를 통해 원하는 주문만 열 수 있도록 합니다.
- LongShortExpertMACD.mq5: 이 EA는 내장된 ExpertMACD.mq5 클래스를 간단히 수정하여, 입력 매개변수에 따라 원하는 주문 유형만 허용하도록 만든 것입니다. 전문가 사용법을 명확히 하기 위해 제공됩니다.
LongShortExpertModified
이 클래스는 기본 CExpert 클래스의 동작을 수정하여, 다음의 enum에 따라 특정 유형의 주문만 허용합니다:
enum ENUM_AVAILABLE_POSITIONS
{
LONG_POSITION,
SHORT_POSITION,
BOTH_POSITION
};
이 enum은 최종 EA의 입력 매개변수로 사용되어 어떤 유형의 주문이 허용될지를 결정합니다. 내부적으로는 원하는 주문만 열고, 두 포지션 유형이 모두 허용될 경우에만 주문 반전을 처리합니다(BOTH_POSITION enum 값 사용).
이를 위해 CheckOpen()과 CheckReverse() 메소드가 재작성되었습니다:
class CLongShortExpertModified : public CExpert { protected: ENUM_AVAILABLE_POSITIONS m_positions; public: CLongShortExpertModified(void); ~CLongShortExpertModified(void); virtual bool CheckOpen(void); virtual bool CheckReverse(void); void SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;}; };
CheckOpen()은 m_positions 값에 따라 롱 또는 숏 포지션만 확인하도록 수정되었습니다:
bool CLongShortExpertModified :: CheckOpen() { switch(m_positions) { case LONG_POSITION: return CheckOpenLong(); // 새 롱 포지션만 확인 case SHORT_POSITION: return CheckOpenShort(); // 새 숏 포지션만 확인 default: return CExpert::CheckOpen(); // 기본 동작 } }
CheckReverse()는 두 포지션 유형이 모두 허용될 경우에만 포지션 반전을 확인하도록 수정되었습니다:
bool CLongShortExpertModified::CheckReverse() { switch(m_positions) { case LONG_POSITION: case SHORT_POSITION: return false; // 반전이 허용되지 않음 default: return CExpert::CheckReverse(); // 기본 동작 } }
LongShortExpertMACD
이 클래스는 MQL5 배포에 포함된 기본 ExpertMACD EA를 기반으로 이전 클래스 사용의 구체적인 EA 예시를 제공합니다.
먼저, 구체적인 Expert 클래스를 포함하고 해당 입력 매개변수를 추가해야 합니다. 또한, 외부 전문가는 기본 CExpert 대신 서브클래스와 연결됩니다:
#include <Expert\
댓글 0