MT4에서 MT5로 옮기는 문제. 또는 더 정확하게는 MT5에서 일부 알고리즘의 오류 없는 실행이 불가능합니다. - 페이지 4

 
Eugeni Neumoin :

OnCalculate()에는 문제가 없습니다. 전체 GUI는 OnChartEvent() 를 통해 작동합니다. 그래픽 인터페이스에는 400개 이상의 버튼이 있으며 일부 버튼은 시계열과 어떤 식으로든 상호 작용하지 않습니다. OnCalculate() 및 OnTrade() 함수는 다음 틱까지 기다릴 수도 있습니다. 심리학적으로는 감지할 수 없습니다. 그러나 OnChartEvent()를 사용하면 더 복잡합니다. 여기에 인간 심리학이 작용합니다. 프로그램 사용자는 그래픽 인터페이스의 버튼을 누릅니다. 그리고 원하는 응답을 얻지 못합니다. 그의 반응은 어떻습니까? 반응 중 하나 - 동일한 버튼을 다시 누릅니다. 많은 버튼을 두 번째 클릭하면 이 버튼으로 연결된 기능이 비활성화되도록 만들었습니다. 다른 방법으로 버튼 동작을 비활성화하라는 귀하의 제안을 예상합니다. 그러나 MT4에도 동일한 프로그램이 있습니다. 모든 것이 잘 작동합니다. MT4에는 그래픽 인터페이스와 상호 작용하는 알고리즘이 하나 있고 MT5에는 다른 알고리즘이 있습니다. 동일한 프로그램의 이러한 동작은 거부를 유발할 뿐입니다.

MT5로 전송할 때 OnChartEvent() 종료를 포함하여 비슷한 작업을 수행했습니다. 나는 이것 때문에 그래픽 인터페이스가 단순히 죽었다는 거짓말을 하고 싶지 않습니다.

예, 5분 후에 OnTimer()의 시계열에 액세스합니다. 2분 안에 할게요. 무슨 일이 일어나는지 확인하겠습니다.

Artem, 귀하의 제안은 이전에 도움이 되었습니다.

아니요, 물론 그래픽 작업의 논리를 변경하려는 제안은 없을 것입니다. 플랫폼 간 코드는 동일한 방식으로 작동해야 합니다.

  1. 시계열은 2분에 한 번 이상 액세스해야 합니다. 이 경우에만 시계열의 지속적인 최신 상태가 보장됩니다. 즉, 다중... 표시기에서 코드의 이 부분은 기본적으로 있어야 합니다.
  2. MQL5에서는 MQL4와 달리 CartRedraw()를 사용하여 차트를 업데이트하여 한 번에 업데이트할 수 있는 모든 그래픽 개체로 필요한 모든 조작 후에 그래픽의 변경 사항을 표시해야 합니다. 차트를 업데이트합니다. 제 요점을 분명히 했는지 모르겠습니다. 예를 들어 사용자가 버튼을 클릭하고 여러 요소로 구성된 스택 객체와 같이 추가로 무언가를 그려야 하는 경우 모든 요소를 그린 다음 그래프를 한 번만 업데이트해야 합니다. 한 개체의 그려진 각 요소 후에 업데이트하는 대신.
    사용자가 버튼을 클릭했지만 아무 것도 표시되지 않으면 실제로 모든 것이 있고 차트만 아직 업데이트되지 않았을 수 있습니다(틱이 나타날 때만 자체 업데이트됨).
 
Artyom Trishkin :

아니요, 물론 그래픽 작업의 논리를 변경하려는 제안은 없을 것입니다. 플랫폼 간 코드는 동일한 방식으로 작동해야 합니다.

버튼을 마무리하기 위해 내가 제안할 수 있는 유일한 것은 필요한 시계열을 아직 사용할 수 없는 경우에도 데이터에 그래픽을 구축할 방법이 없다는 것입니다. 이 경우 데이터를 사용할 수 있게 되는 순간을 기다려야 하며 기다리는 동안 단추를 비활성화해야 합니다. 예를 들어 Windows 인터페이스와 유사하게 만듭니다. 단추 작업을 사용할 수 없으면 단추가 회색입니다. 이러한 논리는 두 플랫폼 모두에 존재할 수 있으므로 코드에 차이가 없습니다.

 

ChartRedraw()는 예를 들어 OnChartEvent() 및 기타에서 큰 블록을 떠날 때 활성화됩니다. 즉, 이 기능을 사용하면 모든 것이 정상입니다.

팝업 팁 정보. 숫자나 기호를 클릭하면 모든 것이 작동한다는 표시일 뿐입니다.

숫자와 기호를 클릭하면 OnChartEvent() 요소 중 하나가 작동해야 합니다 . CHARTEVENT_OBJECT_CLICK . 툴팁이 표시되지 않는 한 발동되지 않습니다. 여기에서 왜 이런 일이 발생하는지 이해하고 싶습니다. CHARTEVENT_OBJECT_CLICK가 작동하지 않습니다 .

그리고 시계열에 대한 액세스를 면밀히 모니터링할 것입니다.

 
Eugeni Neumoin :

ChartRedraw()는 예를 들어 OnChartEvent() 및 기타에서 큰 블록을 떠날 때 활성화됩니다. 즉, 이 기능을 사용하면 모든 것이 정상입니다.

팝업 팁 정보. 숫자나 기호를 클릭하면 모든 것이 작동한다는 표시일 뿐입니다.

숫자와 기호를 클릭하면 OnChartEvent() 요소 중 하나가 작동해야 합니다 . CHARTEVENT_OBJECT_CLICK . 툴팁이 표시되지 않는 한 발동되지 않습니다. 여기에서 왜 이런 일이 발생하는지 이해하고 싶습니다. CHARTEVENT_OBJECT_CLICK가 작동하지 않습니다 .

그리고 시계열에 대한 액세스를 면밀히 모니터링할 것입니다.

차트 이벤트 핸들러의 맨 처음에 sparam 매개변수를 로그에 출력합니다. 그러면 모든 작업에 대한 정보가 표시됩니다. 다음으로 출력 제한을 시작합니다. 개체 클릭 이벤트(id== CHARTEVENT_OBJECT_CLICK )가 있는 경우 스팸을 기록합니다. 그리고 그렇게 천천히 당신은 원인에 도달할 것입니다.

 
Artyom Trishkin :

차트 이벤트 핸들러의 맨 처음에 sparam 매개변수를 로그에 출력합니다. 그러면 모든 작업에 대한 정보가 표시됩니다. 다음으로 출력 제한을 시작합니다. 개체 클릭 이벤트(id== CHARTEVENT_OBJECT_CLICK )가 있는 경우 sparam을 기록합니다. 그리고 천천히 당신은 원인에 도달할 것입니다.

그것이 그가 모든 것을 설정한 방식입니다. 그리고 코드에서 OnChartEvent() 의 디버깅을 위한 부분은 항상 주석 처리된 형식으로 표시됩니다. 하지만 감사합니다. 나는 그렇게 할게. 이유를 찾아보겠습니다.
 

숫자 및 기호 바인딩 문제를 방지하려면 OBJPROP_ZORDER를 사용하여 숫자 및 기호의 우선 순위를 높여야 합니다.

MT4에서는 그것 없이 작동합니다. 하지만 MT4에서는 만일을 위해 우선 순위를 높였습니다. 더욱이 파동 기호의 우선 순위는 숫자의 우선 순위보다 더 큰 역할을 했습니다.

이해했습니다.

2분 만에 모든 시계열 전환 - 이 작업을 가장 원활하게 실행하기 위해 다른 옵션을 선택합니다.

프로세스가 시작되었습니다...

 
Eugeni Neumoin :

숫자 및 기호 바인딩 문제를 방지하려면 OBJPROP_ZORDER를 사용하여 숫자 및 기호의 우선 순위를 높여야 합니다.

MT4에서는 그것 없이 작동합니다. 하지만 MT4에서는 만일을 위해 우선 순위를 높였습니다. 더욱이 파동 기호의 우선 순위는 숫자의 우선 순위보다 더 큰 역할을 했습니다.

이해했습니다.

2분 만에 모든 시계열 전환 - 이 작업을 가장 원활하게 실행하기 위해 다른 옵션을 선택합니다.

프로세스가 시작되었습니다...

여기에 부드러움이 없습니다 :)
최소한 2분에 한 번 모든 작동 중인 전화번호에 연락하기만 하면 됩니다. 저는 보통 90초마다 회전합니다. 한 번에 모든 것을 가져오지 않도록 다른 TF에 대한 호출 시간을 분산할 수 있습니다. 그러나 각각에 대해 - 유성 간격보다 작지 않습니다.
 
Artyom Trishkin :
여기에 부드러움이 없습니다 :)
최소한 2분에 한 번 모든 작동 중인 전화번호에 연락하기만 하면 됩니다. 저는 보통 90초마다 회전합니다. 한 번에 모든 것을 가져오지 않도록 다른 TF에 대한 호출 시간을 분산할 수 있습니다. 그러나 각각에 대해 - 유성 간격보다 작지 않습니다.

여기에 브레이크가 있습니다.

그러나 당신은 당신이 가진 것을 참아야 합니다.

그 광대함을 껴안는 것은 불가능하다.)

 
Artyom Trishkin :
여기에 부드러움이 없습니다 :)
최소한 2분에 한 번 모든 작동하는 전화번호에 연락하기만 하면 됩니다. 저는 보통 90초마다 회전합니다. 한 번에 모든 것을 가져오지 않도록 다른 TF에 대한 호출 시간을 분산할 수 있습니다. 그러나 각각에 대해 - 유성 간격보다 작지 않습니다.

퍼질 수 없습니다. 적어도 하나의 TF가 업데이트되지 않으면 표시기가 일부 그래프를 나타낼 수 있습니다. 잘못 건설.

반면 OnCalculate 및 OnChartEvent 함수 전에 시계열의 가용성을 확인했습니다. 제안대로.

시계열 업데이트 및 시계열 가용성 확인은 심각한 속도 저하를 일으킵니다.

그래도 시계열에 대한 액세스가 중단됩니다. 첫 번째 게시물 중 하나에서 분기를 만들 때 말했듯이. 이것은 시계열을 프로그래밍 방식으로 업데이트해야 함을 확인합니다.

이것이 첫 번째입니다.

두번째. 각 개발자가 시계열에 대한 액세스 구성으로 어려움을 겪을 수 있는 방식으로 수행되는 이유는 무엇입니까?

이러한 고통을 배제하기 위한 추가적인 "메커니즘"이 왜 만들어지지 않았습니까?

누군가가 이 고통을 필요로 한다면 아무도 지금 있는 것을 사용하는 것을 금하지 않습니다. 그리고 시계열에 대한 보편적인 대안 액세스가 적합하다고 생각하는 사람들에게는 개발자가 액세스하는 것이 좋습니다.

몇몇 사람들이 MT4에서 MT5로 프로그램을 옮기라고 요청했습니다. 번역됨. 나는 이 번역에 만족하지 않는다. 그러나 지금까지 프로그램을 다운로드 한 사람들은 불평하지 않습니다. 어쩌면 그것은 그들에게 적합합니다. 나는 그것을 의심하지만.

나는 나 자신에게서 추가할 것이다. 시계열 액세스 최적화 실험을 중단합니다. 이것은 시간을 비생산적으로 사용하는 것입니다. 더 흥미로운 활동도 있습니다. 관심 있는 분들은 MT5로 작업해 보세요. MT5에서 갉아먹을 수 있는 것은 인용의 역사뿐이다. NN 교육에 사용합니다.

 
Eugeni Neumoin :

반면 OnCalculate 및 OnChartEvent 함수 전에 시계열의 가용성을 확인했습니다. 제안대로.

시계열 업데이트 및 시계열 가용성 확인은 심각한 속도 저하를 일으킵니다.

1분 30초마다 타이머로 이 작업을 수행하도록 제안되었습니다. 그러나 모든 틱 이전에는 그렇지 않으며 차트 이벤트 이후에는 더욱 그렇습니다.

MT5에서 시계열에 대한 액세스는 실제로 이상적이지 않습니다. 그러나 문제를 해결해야 하고 변명을 찾지 못한다면 이것이 가능합니다.