메타트레이더 5를 위한 TradingBoxing EA 소개

Mike 2018.06.18 22:58 47 0 0
첨부파일

안녕하세요, 트레이더 여러분! 오늘은 메타트레이더 5에서 사용할 수 있는 TradingBoxing이라는 EA에 대해 소개해 드릴게요. 이 EA는 기존의 TradingBoxing 코드를 바탕으로 개발되었지만, MQL5로 새롭게 구현된 기능들로 가득 차 있습니다.

이 EA의 트레이딩 패널은 입력 파라미터가 하나, 바로 매직 넘버로 구성되어 있어요. 이 매직 넘버는 EA를 식별하는 고유한 번호랍니다.

트레이딩 패널의 모습은 아래와 같습니다:

TradingBoxing

포지션과 대기 주문의 볼륨을 표시하기 위해, CSpinEdit 클래스를 조금 수정하여 CSpinEditDouble로 저장했어요. 아쉽게도, 상속을 통해 클래스를 만들지는 못했지만, 필요한 변경은 잘 적용했습니다.

이 클래스는 더블 타입 데이터를 표시하기 위해 만들어졌으며, DisplayedDigits라는 메소드를 추가하여 텍스트의 표시 정확도를 정의할 수 있어요.

이 컨트롤의 텍스트 필드는 편집 가능하게 설정되어 있습니다. 예를 들어, 텍스트 필드의 값과 많이 다른 가격이나 볼륨을 입력할 때 유용하겠죠. 텍스트 필드의 값을 저장하기 위해 EndEdit 메소드를 CSpinEditDouble 클래스에 추가했습니다:

   int               m_digits;              // 표시할 자리수
   //---
   void              EndEdit() { Value(StringToDouble(Text())); }

public:
                     CSpinEditDouble(void);

이 메소드는 입력된 텍스트를 값으로 기억하게 해줍니다.


이제 EndEdit 메소드는 CSpinEditDouble의 OnEvent 클래스에서 호출됩니다:

//+------------------------------------------------------------------+
//| 차트 이벤트의 공통 핸들러                                   |
//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CSpinEditDouble)
  ON_EVENT(ON_CLICK,m_inc,OnClickInc)
  ON_EVENT(ON_CLICK,m_dec,OnClickDec)
  ON_EVENT(ON_END_EDIT,m_edit,EndEdit)
EVENT_MAP_END(CWndContainer)

트레이드 오더가 최대한 빠르게 처리될 수 있도록, 트레이딩 패널의 버튼을 클릭할 때마다 내부 핸들러인 CTradingBoxingDialog::OnTick()가 강제로 호출됩니다.

목록
댓글 0