기고글 토론 "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

 

GPT와 관련이 없다고 생각합니다.

기사에 언급된 단점 외에도 몇 가지 다른 단점이 있습니다. 예를 들어, (현재 구현에서는) 지표의 여러 복사본을 실행할 수 없습니다 (다른 차트에서도!).

제 생각에는 (초기값을 설정하기 위해) 입력을 남겨두고 사용한 값을 간단한 GP에 저장하는 것이 더 합리적일 것 같습니다.


일반적으로 아이디어, 구현 및 기사는 "A"입니다. 겸손하지 마세요, 알렉세이;)

 
komposter:

GPT와 관련이 없다고 생각합니다.

기사에 언급된 단점 외에도 몇 가지 다른 단점이 있습니다. 예를 들어, (현재 구현에서는) 지표의 여러 복사본을 실행할 수 없습니다 (다른 차트에서도!).

제 생각에는 (초기값을 설정하기 위해) 입력을 남겨두고 사용한 값을 간단한 GP에 저장하는 것이 더 합리적일 것 같습니다.

고마워요, 안드레이.

네, 여러 차트에 여러 복사본을 저장하는 것은 생각하지 못했습니다. GP에 저장하는 것이 더 보편적입니다. 하지만 어쨌든 재설계는 매우 간단합니다. 그리고 짧은 인디케이터 이름이 올바르게 표시되도록 관리하는 것을 잊지 마세요.

저는 원래 대화에서 쉽게 호출하고 볼 수 있기 때문에 GPT를 선택했습니다. 하지만 편집하지 마세요! 물론 정말로 원한다면 물론 할 수 있지만 동시에 기사에 쓰여진 내용을 고려할 수 있습니다.

 

알렉세이, M1-M15의 표시기("둥지 인형"이 있는 표시기)를 사용해 보셨나요? 이 간격에서 결함이 있습니다. 차트에 표시기를 던지거나 TF를 변경 한 다음 단축키를 누르거나 차트 창을 클릭하면 표시기가 왼쪽으로 이동하는 방식으로 나타납니다. 몇 시간 이상에서는 이러한 효과가 표시되지 않습니다.

꼭 필요한 기능이니 꼭 살펴보세요.

 

중앙값은 실제 MA와 일치하지 않습니다.

즉, 확정된 것이 아닙니다.

 
costy_: 중앙값은 실제 MA와 일치하지 않습니다.

즉, 확정된 것이 아닙니다.

기사에서:

필요한 가격이 "기본"(시가, 고가, 저가, 종가)인 경우 이미 해당 CopyXXXX() 함수가 있지만 "복잡한" 가격(중앙값, 평균 또는 일반)의 경우 다른 방법으로 이 배열을 계산해야 합니다.

 

MA 라인이 내 명령에 따라 교묘하게 움직이는 것을 보고 싶지만, MQL4를 아는 사람이라면 MQL5에서는 표시기 매개변수를 즉석에서 호출하고 변경할 수 없다는 사실에 안타까워할 것입니다.

MQL5에서는 일단 핸들이 초기화되면 인디케이터가 고정되어 해당 매개변수가 죽습니다. 지표의 주기가 이미 고정되어 있기 때문에 더 이상 다른 주기로 가격 변동을 스캔할 수 없습니다.

MQL4에서는 start() 내에서 바로 인디케이터를 호출하고 원하는 만큼 파라미터를 변경할 수 있습니다.

당연한 일이지만, Integer는 코드 베이스에 많은 ...OnArray 라이브러리를 작성했습니다.

:(

 
Mathemat:

기사에서:

방법에 관심이있는 사람이 돌아와서 oninit을 두 번째로 호출 할 수 없으며 디스플레이 버퍼가 0으로 롤링됩니다 (크기 == 0).

가격 수정, 파-리를 통해 구현됨

를 통해 구현되었습니다.

 
컴파일은 되지만 작동하지 않고 심각한 오류가 발생합니다.
 
두뇌를 더 멀리 나아가도록 밀어주는 응용 프로그램을 공유해 주셔서 감사합니다.