일반적인 지표 코드 개선 방법으로는 객체를 사용하는 폐쇄형 코드에서 EA와의 충돌을 전반적으로 해결할 수 없다는 것이 밝혀졌습니다.
전문가 조언자를 개선하면 모든 대시보드 지표와의 충돌을 전역적으로 해결할 수 있기를 바랍니다(이것이 제 과제입니다).
MT4 빌드 1353 스레드에 썼으니 터미널 프로그래머들이 주목할 것입니다.
추신 올빼미와 스키가 가지 않은 무언가를 변경했습니다 ...
전체 코드 (표시기 및 전문가 조언자)를 살펴보고 ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName 등이 호출되는 위치와 이유를 찾으십시오. 동기식이며 모든 것을 심각하게 느리게 할 수 있습니다. 가능하면 이러한 함수를 제거하세요.
точнее в очередностях OnInit удалении своих объектов чарта. Тут ремонт терминала не имеет смысла не создавайте объектов по крайней мере до первого OnChartEvent. И удалять объекты пачкой лучше по ChartObjectsDelete
링크를 열면 게시물 하단에 코드가 포함된 첨부 파일을 찾을 수 있습니다. 그런 다음 게시물을 읽고 누가, 어떻게 토론을 진행했는지 확인할 수 있습니다.
문제는 제안된 코드에 있는 것이 아니라(객체가 있는 모든 Expert Advisor를 직접 작성할 수 있음), 지표를 통한 차트 전환 기능으로 작업할 때 객체가 있는 모든 Expert Advisor에 영향을 미치는 전역 오류(단 한 가지 예외)에 있습니다.
Nikolay가 해결책을 제시했지만 그러한 코드 작업에 오류가있어 문제를 더 처리하고 있습니다.
다음은 변경 사항입니다:
if(sparam=="Win_Ea_"){ // вот тут надо поцивильней сделать, из класса брать имя... но уж сами как-нибудь if(id == CHARTEVENT_OBJECT_CLICK){
if(win.BtnClickUP()){
win.Process();
ChartPeriodSet(true);
}
if(win.BtnClickDN()){
win.Process();
ChartPeriodSet(false);
}
}
}
if(id == CHARTEVENT_MOUSE_MOVE){
MouseX=(int)lparam;
MouseY=(int)dparam;
}
나는 끔찍한 멈춤을 제거했습니다. 그리고 측정 된 속도로 버튼을 누르면 모든 것이 정상입니다.
그러나 딱따구리처럼 두드리기 시작하면 다시 멈추기 시작하면 더 짧고 짧아집니다. 나는 생각하지 않는다
당신은 그들을 제거 할 수 없습니다. 아마도 시간 프레임 구성과 관련이있을 수 있습니다.
버튼을 눌렀거나 누르지 않은 위치가 있도록 버튼 작업을하고 버튼이 즉시 눌리지 않도록 관성을 도입해야합니다.
일반적인 지표 코드 개선 방법으로는 객체를 사용하는 폐쇄형 코드에서 EA와의 충돌을 전반적으로 해결할 수 없다는 것이 밝혀졌습니다.
전문가 조언자를 개선하면 모든 대시보드 지표와의 충돌을 전역적으로 해결할 수 있기를 바랍니다(이것이 제 과제입니다).
MT4 빌드 1353 스레드에 썼으니 터미널 프로그래머들이 주목할 것입니다.
추신 올빼미와 스키가 가지 않은 무언가를 변경했습니다 ...
전체 코드 (표시기 및 전문가 조언자)를 살펴보고 ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName 등이 호출되는 위치와 이유를 찾으십시오. 동기식이며 모든 것을 심각하게 느리게 할 수 있습니다. 가능하면 이러한 함수를 제거하세요.
위의 ChartRedraw()!!!! 를 호출하는 것을 잊지 마세요...
신사 숙녀 여러분, 저는 온갖 말도 안 되는 소리를 듣고 있는데 답변할 수 없다고요? 놀랍군요!
전체 코드(표시기 및 EA)를 살펴보고 ObjectGetXXX, ObjectFind, ObjectsTotal, ObjectName 등이 어디서 왜 호출되는지, 동기식이며 모든 속도를 심각하게 저하시킬 수 있는지 알아보세요. 가능하면 이러한 코드를 제거하세요.
위의 ChartRedraw()!!!! 를 호출하는 것을 잊지 마세요...
모든 이벤트에 연속적으로 반응하지 말고 OnChartEvent()를 현명하게 만들어야 합니다. 아니면 뭐가 있는지 모르겠네요... 그리고 왜 여기에 앉아서 문제가있는 코드를 보여주기 위해 겸손하지도 않을 사람을 위해 생각합니까?
이제 ObjectFind () 및 ObjectGet () 1000000 회 반복의 루프를 삽입했는데 모든 것이 정상입니다.
신사 숙녀 여러분, 저는 온갖 말도 안 되는 소리를 듣고 있는데 답변할 수 없다고요? 놀랍군요!
이런 편파적인 대우를 받은 사람은 여러분뿐만이 아닙니다.
모든 이벤트에 연속적으로 반응하지 말고 OnChartEvent()를 현명하게 수행하면 됩니다. 아니면 그게 뭔지 모르겠어요.... 그리고 왜 여기 앉아서 문제가 있는 코드를 보여주지도 않는 사람을 위해 생각할까요?
이제 ObjectFind () 및 ObjectGet ()의 1000000 회 반복 루프를 삽입했는데 모든 것이 정상입니다.
글쎄, 나는 그것을 네 번째로 쓸 것입니다, 그것은 나에게 어렵지 않습니다.
https://www.mql5.com/ru/forum/379526/page9#comment_25865481
링크를 열면 게시물 하단에 코드가 첨부 된 첨부 파일을 찾을 수 있습니다. 그런 다음 게시물을 읽고 토론이 누구에 의해 어떻게 전개되었는지 읽을 수 있습니다.
문제는 특히 제안된 코드에 있는 것이 아니라(개체가 있는 모든 Expert Advisor를 직접 작성할 수 있음), 지표를 통한 차트 전환 기능으로 작업할 때 개체가 있는 모든 Expert Advisor에 영향을 미치는 전역 오류(단일 예외 제외)에 있습니다.
Nikolay가 해결책을 제시했지만 그러한 코드 작업에 오류가있어 문제를 더 처리하고 있습니다.
모든 이벤트에 연속적으로 반응하지 말고 OnChartEvent()를 현명하게 수행하면 됩니다. 아니면 그게 뭔지 모르겠어요.... 그리고 왜 여기 앉아서 문제가 있는 코드를 보여주지도 않는 사람을 위해 생각할까요?
이제 ObjectFind () 및 ObjectGet ()의 1000000 회 반복 루프를 삽입했는데 모든 것이 정상입니다.
루프보다 더 복잡한 코드를 작성해 본 적이 있나요?
네 번째로 글을 쓰겠습니다.
https://www.mql5.com/ru/forum/379526/page9#comment_25865481
링크를 열면 게시물 하단에 코드가 포함된 첨부 파일을 찾을 수 있습니다. 그런 다음 게시물을 읽고 누가, 어떻게 토론을 진행했는지 확인할 수 있습니다.
문제는 제안된 코드에 있는 것이 아니라(객체가 있는 모든 Expert Advisor를 직접 작성할 수 있음), 지표를 통한 차트 전환 기능으로 작업할 때 객체가 있는 모든 Expert Advisor에 영향을 미치는 전역 오류(단 한 가지 예외)에 있습니다.
Nikolay가 해결책을 제시했지만 그러한 코드 작업에 오류가있어 문제를 더 처리하고 있습니다.
다음은 변경 사항입니다:
나는 끔찍한 멈춤을 제거했습니다. 그리고 측정 된 속도로 버튼을 누르면 모든 것이 정상입니다.
그러나 딱따구리처럼 두드리기 시작하면 다시 멈추기 시작하면 더 짧고 짧아집니다. 나는 생각하지 않는다
당신은 그들을 제거 할 수 없습니다. 아마도 시간 프레임 구성과 관련이있을 수 있습니다.
버튼을 눌렀거나 누르지 않은 위치가 있도록 버튼 작업을하고 버튼이 즉시 눌리지 않도록 관성을 도입해야합니다.
0.1초의 지연이 있으면 상황이 해결되고 사용자는 눈치 채지 못할 것입니다.
--
사실, 전문가 없이도 버튼을 맹렬한 속도로 두드릴 수 있습니다....
그리고 여기 우리는 완전히 매달린 것을 제거했습니다.
비뚤어졌을 수도 있지만 중요한 것은 요점입니다:
차트를 전환할 때 객체를 삭제하지 않는 것이 요점입니다.
Destroy()...를 실행할 때 어떤 일이 일어나는지 살펴봐야 합니다. 그대로 두는 것이 가능하다면...
안녕하세요 !)
미안하지만 우리가 mq4에 대해 이야기하고 있다면 아마도 이렇게 해결할 수있을 것입니다 :?)
이것이 바로 브레이크를 만들 수 있는 또 다른 이유입니다:
왜일까요?