기고글 토론 "MQL5 이벤트 핸들링: 빠르게 MA 피리어드 바꾸기"

 

새로운 기고글 MQL5 이벤트 핸들링: 빠르게 MA 피리어드 바꾸기 가 게재되었습니다:

피리어드가 13인 단일 MA 인디케이터가 차트에 적용되었다고 상상해 봅시다. 피리어드를 20으로 바꾸고 싶은데, 인디케이터 속성 대화 상자에서 13을 20으로 바꾸고 싶지는 않네요. 맨날 쓰는 방법이니까 너무 지루하잖아요. 특히 인디케이터 코드를 열어서 수정하고 싶지가 않습니다. 버튼 하나만 눌러서 해결하고 싶은데요. 키보드의 위쪽 화살표가 딱이겠네요. 이 글에서는 그 방법을 찾아볼게요.

단일 인디케이터 파일과 '인디케이터+어드바이저' 조합 중에 뭐가 더 나을까요?

그렇게 간단한 질문은 아닙니다. 단일 인디케이터 파일은 이벤트 핸들러를 포함한 모든 함수가 한 곳에 집중되어 있다는 장점을 가지죠.

반대로 3~4개의 인디케이터가 엑스퍼트 어드바이저의 차트에 적용되었다고 생각해 봅시다. 흔치 않은 상황은 아닙니다. 게다가 각각의 인디케이터가 표준 OnCalculate() 함수와 더불어 서로 다른 이벤트 핸들러를 가지고 있다고 생각해 보세요. 이 정신 없는 상황에서 이벤트 처리 시 혼동을 최소화하려면 모든 이벤트 핸들로를 한 곳으로 모으는 것이 좋겠죠. 엑스퍼트 어드바이저로 말입니다.

오랫동안 소프트웨어 개발자들은 인디케이터에서 이벤트를 처리할 수 있게 할지 말지를 고민해 왔습니다. 비공개 베타 버전 09.09.09이 나온지 정확히 5개월이 되었네요. 베타 버전에서는 인디케이터가 '순수 연산 엔티티'로 간주되어 연산 속도를 저하시키는 다른 모든 기능을 제한했었죠. '순수'의 개념이 설 자리가 없을 겁니다. 이제 프로그래머들의 판타지가 펼쳐질 테니까요. 하지만 '순수'와 '불순'의 한계 사이의 균형은 유지되어야 합니다.

2009년 9월과 10월 사이 MT5 베타 버전의 빌드 개수가 200개도 채 되지 않았을 때, 저는 '엑스퍼트 어드바이저+인디케이터' 조합으로 코드를 작성하고 디버깅도 해보았는데요. 빠른 MA 매개 변수 변환은 가능했지만 C급 정도였다고나 할까요. 틱이 도착한 후에야 새로고침되었거든요. 당시에는 이 조합만이 유일한 해결책이었는데 이제는 아무도 관심을 갖지 않겠죠.

당시에는 어떻게 인디케이터 기능을 조금 더 향상시킬 수 있을지 생각하지 못했어요. 현재 최신 버전에 반영되어 있는 것처럼 말입니다. 하지만 이제는 필요한 분들께 보다 간편한 해결책을 제공할 수 있어 기쁩니다.


저희 작업 현장을 촬영한 짧은 비디오를 첨부합니다. MA 곡선의 변화(피리어드의 증가 및 감소)는 어떤 면에서는 눈부시기까지 합니다. 이게 바로 마트료시카 인형이죠.

작성자: Sceptic Philozoff