iClose/iOpen 시계열 등에 대한 액세스 작업 시 MQL5 버그 - 페이지 7

 
Renat Fatkhullin :

1) 하나의 OnTick/OnCalculate 계산의 실행 시간을 마이크로초 단위로 측정하고 로그에 출력합니다.

이렇게 하면 하나의 틱을 계산하는 데 얼마나 많은 시간이 소요되는지 확인할 수 있습니다. 그런 다음 이 속도로 초당 계산할 수 있는 틱 수를 평가하십시오. 확실히 12개 이하의 틱이 있으며 초당 더 많은 틱이 있음이 밝혀졌습니다.


2) 데이터를 추출하는 차트/시간 프레임에 첨부된 지표에서 각 OnCalculate의 계산 시간을 측정합니다.

아마 비슷한 상황이 있을 것입니다. 느린 계산으로 인해 터미널은 계산된 symbol:timeframe이 잠금 해제될 때까지 기다립니다. 다른 사람들의 차트 반환을 동결시키는 것은 특히 깊은 역사에서 브레이크 표시기입니다.


지표를 개발할 때 성과 문제와 경제적 재계산을 가장 먼저 고려해야 합니다. 그렇지 않으면 주변의 모든 것을 죽일 것입니다.

레나트, 왠지 많이 슬펐다. Tiki는 이제 내가 문제를 해결하기를 기다리고 있습니까? 지금까지는 진드기가 스스로 생성되는 것으로 가정하고 시간이 있든 없든 있습니다. 그리고 이제 시스템을 걸 수 있음이 밝혀졌습니다.

 
Алексей Тарабанов :

레나트, 왠지 많이 슬펐다. Tiki는 이제 내가 문제를 해결하기를 기다리고 있습니까? 지금까지는 진드기가 스스로 생성되는 것으로 가정하고 시간이 있든 없든 있습니다. 그리고 이제 시스템을 걸 수 있음이 밝혀졌습니다.

표시기는 간격 없이 매 틱마다 실행됩니다. OnCalculate의 지속 시간과 틱의 빈도를 항상 제어해야 합니다. 그렇지 않으면 개그가 발생합니다.

가장 간단한 재생산은 사용자 지정 기호에서 표시기를 실행하고 특정 주파수에서 표시기를 시작하는 것입니다. 주파수가 증가함에 따라 브레이크가 보입니다. 모든 것이 논리적입니다.

 

어떤 경우에 지표가 그 가치를 이끌어내지 못할 수 있습니까? 버퍼는 유효한 값으로 채워져 있지만 표시기의 차트는 비어 있습니다. 적어도 그 반대는 아닙니다. 빌드 1940

1944년에도. 아마도 그렇게 되어야 한다

 
fxsaber :

표시기는 간격 없이 매 틱마다 실행됩니다. OnCalculate의 지속 시간과 틱의 빈도를 항상 제어해야 합니다. 그렇지 않으면 개그가 발생합니다.

가장 간단한 재생산은 사용자 지정 기호에서 표시기를 실행하고 특정 주파수에서 표시기를 시작하는 것입니다. 주파수가 증가함에 따라 브레이크가 보입니다. 모든 것이 논리적입니다.

네 맞습니다.

 
Алексей Тарабанов :

레나트, 왠지 많이 슬펐다. Tiki는 이제 내가 문제를 해결하기를 기다리고 있습니까? 지금까지는 진드기가 스스로 생성되는 것으로 가정하고 시간이 있든 없든 있습니다. 그리고 이제 시스템을 걸 수 있음이 밝혀졌습니다.

티키 는 항상 기다리고 있었다. OnCalculate가 모든 틱에서 호출 되는 것을 보장합니다.

4개에서 GUI가 정지되면 5개에서는 특정 기호에 대한 별도의 처리 스레드에서 지연이 발생합니다. 그리고 항상 상위 5위 안에 들었습니다. 이제 막 보셨군요

 
Renat Fatkhullin :

재접속 후 다른 사람의 보이지 않는 시간대 업데이트가 정지되면서 연결이 정리되고 수정되었습니다. 이유는 재연결 후 잘못된 캐시 상태였습니다.

베타 버전 1946은 도움말 -> 데스크톱 업데이트 확인 -> 최신 베타 버전을 통해 사용할 수 있습니다.

업데이트, 테스트합니다.

문제는 현재 문제가 다른 도구(보이지 않는 기간)에서 데이터를 로드하는 경우와 관련이 있었는지, 다중 통화 지표 및 전문가를 말하는 것인지, 아니면 관련 없는 문제인지입니다.

 
Slava :

티키 는 항상 기다리고 있었다. OnCalculate가 모든 틱에서 호출 되는 것을 보장합니다.

4개에서 GUI가 정지되면 5개에서는 특정 문자에 대한 별도의 처리 스레드에서 지연이 발생합니다. 그리고 항상 상위 5위 안에 들었습니다. 이제 막 보셨군요

터미널 로그에 "표시기가 너무 느립니다"와 같은 상황에 대한 메시지가 표시됩니다.

?

 
Igor Makanu :

터미널 로그에 "표시기가 너무 느립니다"와 같은 상황에 대한 메시지가 표시됩니다.

?

전문가 로그에서
 
Slava :
전문가 로그에서

감사합니다. 이것은 최소한 무언가이지만 표시기가 관련이 없는 틱을 계산하고 표시기가 터미널 스트림을 중단시킨다는 것을 프로그래밍 방식으로 결정하는 것이 불가능하다는 것을 이해합니다.

 
Igor Makanu :

감사합니다. 이것은 최소한 무언가이지만 표시기가 관련이 없는 틱을 계산하고 표시기가 터미널 스트림을 중단시킨다는 것을 프로그래밍 방식으로 결정하는 것이 불가능하다는 것을 이해합니다.

결정하려고 할 수 있습니다.

분이면 마지막 막대의 시간을 TimeCurrent()와 비교할 수 있습니다. M1이 아닌 경우 iTime(_Symbol, PERIOD_M1,0 )을 요청하고 TimeCurrent()와 비교할 수 있습니다.

마지막 막대의 종가와 입찰가 또는 종가(상품에 따라 다름)를 비교할 수 있습니다. 현재 심볼의 SymbolInfoTick을 즉시 요청할 수 있습니다. 거기에는 입찰과 마지막 외에도 틱 시간도 있습니다