사용자 정의 기호. 오류, 버그, 질문, 제안. - 페이지 26

 
Roman :

감사합니다. 이제 그 이유를 알았습니다.
시스템 타이머 변경 단계, 여전히 15.625의 배수

추가되었습니다.
하지만 timeBeginPeriod(1) 함수로 win API 시스템 타이머의 기간을 변경했습니다.
저것들. 이론상 이제 시스템 타이머는 1밀리초로 오버클럭됩니다.
그리고 시스템 타이머 단계는 1밀리초여야 합니다. 맞죠?
그렇다면 왜 카운터는 여전히 해설에 매달려 있습니까?
https://rsdn.org/forum/winapi/4159851.1
 
그리고 Linux의 Wine에서 EventSetMillisecondTimer(1)를 사용해도 주석의 카운터는 정지 없이 실행됩니다.
그러나 프로세서의 로드는 8개의 프로세서 스레드로 인해 40%로 증가합니다.
일반적으로 주제를 닫고 주제에서 벗어남))
 
Roman :
그리고 Linux의 Wine에서 EventSetMillisecondTimer(1)를 사용해도 주석의 카운터는 정지 없이 실행됩니다.
그러나 프로세서의 로드는 8개의 프로세서 스레드로 인해 40%로 증가합니다.

그게 무슨 얘기야...
왜 초당 64번인가?
어떤 정보라도 화면에 표시할 수 있도록 하기 위해서라고 생각합니다. 이 빈도로 충분합니다. 대부분 의미가 없고 비용이 많이 듭니다.
흥미롭게도 OnChartEvent , OnCalculate 및 OnTick 도 초당 64회 이하로 생성됩니까? - 맞는 것 같아요.

 
Nikolai Semko :

그게 무슨 일이야...
왜 초당 64번인가?
어떤 정보라도 화면에 표시할 수 있도록 하기 위해서라고 생각합니다. 이 빈도로 충분합니다. 대부분 의미가 없고 비용이 많이 듭니다.
흥미롭게도 OnChartEvent, OnCalculate 및 OnTick도 초당 64번 이상 생성되지 않습니까?

여기서 말이 되는 것은 부하가 아니라 OnTimer() 핸들러의 기능에 있었습니다.
Windows는 이러한 가능성을 제한하지만 Linux는 그렇지 않습니다.

질문에 대해 OnChartEvent , OnCalculate 및 OnTick 도 초당 64번 이상 생성되지 않습니까?
개발자의 답변을 기다리는 것이 더 나을 것입니다.

 
Roman :

질문에 대해 OnChartEvent, OnCalculate 및 OnTick도 초당 64번 이상 생성되지 않습니까?
개발자의 답변을 기다리는 것이 더 나을 것입니다.

마우스로 OnChartEvent 를 확인했습니다.
최대 주파수는 124Hz로 밝혀졌습니다. 다른 방법은 없습니다. 왜 128이 안되는지 이상합니다.

 
Nikolai Semko :

마우스로 OnChartEvent를 확인했습니다.
최대 주파수는 124Hz로 밝혀졌습니다. 다른 방법은 없습니다. 왜 128이 안되는지 이상합니다.

알고리즘을 약간 변경했습니다. 댓글이 시간을 많이 잡아먹는다는 점은 고려하지 않았습니다. 이미 127Hz를 받았습니다.
이것은 이미 논리적입니다. 1Hz의 오류는 이미 프로그램 자체의 작업으로 설명할 수 있으므로 128에 못 미치게 됩니다.

따라서 OnChartEvent의 최대 주파수 는 128Hz입니다 .

 
MQL5를 사용하여 합성 스프레드를 얻을 수 있습니까?
터미널 자체에는 합성 물질이 퍼져 있습니다.
 
Aidas Geguzis :
MQL5를 사용하여 합성 스프레드를 얻을 수 있습니까?
터미널 자체에는 합성 물질이 퍼져 있습니다.

타사 프로그램의 경우 사용자 지정 기호 는 원래 기호와 약간 다릅니다. 따라서 장애물이 없어야 합니다.

 
사용자 정의 도구가 터미널 인터페이스를 통해 생성되고 사용자 정의 기호 가 음수 값을 얻는 경우
사용자 정의 기호 인터페이스에서 음수 가격을 허용해야 합니다.
이 설정을 지정하지 않으면(잊어버리면) 생성된 계측기에 대한 히스토리가 계산되지 않고 현재 시점의 차트만 표시됩니다.
로그에 음수 가격 허용이 필요하다는 경고가 표시되지 않기 때문에 기록이 계산되지 않는 이유를 오랫동안 이해할 수 없었습니다.
로그에 그러한 경고가 있으면 좋을 것입니다.
 

비어 있는 새 사용자 정의 기호에 일대일 틱(특히 MQ Demo의 EURUSD에서)을 추가하면 오류 5310이 발생합니다(즉시가 아니라 임의 날짜의 통과 주기에서).

 input int Limit = 10000 ;
input datetime Start = D'2020.06.01' ;

int fillArray( ulong &_start)
{
   MqlTick array[];
   int size = CopyTicks ( _Symbol , array, COPY_TICKS_ALL , _start, Limit);
   if (size > 0 )
  {
    _start = array[size - 1 ].time_msc + 1 ;
     if ( CustomTicksAdd (symbolName, array) == - 1 )
    {
       Print ( "Error:" , GetLastError ());
       return - 1 ;
    }
  }
   return size;
}

...
{
  ulong startMsc = ( ulong )Start * 1000 ;
   while (fillArray(startMsc) > 0 );
}

뭐가 문제 야? 맹세하는 진드기를 찾는 방법은 무엇입니까? 로그에 표시된 배열 - 연대순을 위반하지 않습니다.