'CopyTicks' 테스트 - 페이지 43

 
fxsaber :
CopyTicksRange가 요청된 모든 틱을 올바르게 반환하지만 LastError == ERR_HISTORY_TIMEOUT(4403)일 때 버그가 발생했습니다.


버그가 아니라 기능입니다. CopyTicks는 때때로 같은 것을 제공합니다. 이 "기능"을 사용하는 방법을 알아낼 때까지

CopyTicksRange 기능에 대한 설명:

 ERR_HISTORY_TIMEOUT – время ожидание синхронизации тиков вышло, функция отдала всё что было.

물론 CopyTicks 기능에 대한 틱이 수신된 경우 개발자가 이 오류가 의미하는 바를 설명했으면 합니다. 이 오류를 처리하는 방법. ps: 인디케이터를 불러

 

이 문제를 가능한 한 빨리 해결하기 위해 어떤 정보를 제공해야 하는지 알려주십시오.

 void OnStart ()
{
   MqlTick Ticks[];

   Print ( CopyTicksRange ( _Symbol , Ticks, COPY_TICKS_INFO , ( ulong ) D'2020.04.09 10:40:29' * 1000 , ( ulong ) D'2020.04.11' * 1000 )); // 8192
   Print ( _LastError ); // 4407

   ResetLastError ();

   MqlTick Ticks2[];

   Print ( CopyTicksRange ( _Symbol , Ticks2, COPY_TICKS_INFO , ( ulong ) D'2020.04.09 10:40:30' * 1000 )); // 131066
   Print ( _LastError ); // 0
}


티키는 복사하지 않아 오류가 발생합니다.

끊임없는

의미

설명

ERR_HISTORY_SMALL_BUFFER

4407

수신 배열이 너무 작아서 요청된 모든 데이터를 저장할 수 없습니다.


그런 놀라움으로 정상적으로 작동하는 것은 불가능합니다!


GUI(CTRL+U)를 통해 틱은 문제 없이 수행됩니다.

검색 문자열 : Osibka 007.
 
fxsaber :

이 문제를 가능한 한 빨리 해결하기 위해 어떤 정보를 제공해야 하는지 알려주십시오.

티키는 복사하지 않아 오류가 발생합니다.

끊임없는

의미

설명

ERR_HISTORY_SMALL_BUFFER

4407

수신 배열이 너무 작아서 요청된 모든 데이터를 저장할 수 없습니다.

다른 방법으로 로컬에서 확인했습니다. 아직 재생산되지 않았습니다. 세부 정보 필요:

1. 터미널의 버전은 무엇입니까?

2. 어떤 서버로 작업하고 있습니까?

3. 스크립트가 호출되는 기호는 무엇입니까?

4. COPY_TICKS_INFO가 아니라 COPY_TICKS_ALL로 호출하면 ERR_HISTORY_SMALL_BUFFER 오류도 발생합니까?

고맙습니다!

 
Anton :

다른 방법으로 로컬에서 확인했습니다. 아직 재생산되지 않았습니다. 세부 정보 필요:

1. 터미널의 버전은 무엇입니까?

2. 어떤 서버로 작업하고 있습니까?

3. 스크립트가 호출되는 기호는 무엇입니까?

4. COPY_TICKS_INFO가 아니라 COPY_TICKS_ALL로 호출하면 ERR_HISTORY_SMALL_BUFFER 오류도 발생합니까?

고맙습니다!

  1. 2380.
  2. 모든 서버 - 항목 3을 참조하십시오.
  3. 사용자 정의 기호 .
  4. 플래그는 동작을 변경하지 않습니다.

ZY 인 트레일러 커스텀. json에서 심볼을 만들고 틱을 가져오고 이 심볼의 차트에서 스크립트를 실행합니다. 복제 여부를 적어주세요.

파일:
EURUSD.zip  896 kb
 
fxsaber :

복제 여부를 적어주세요.

네, 2380에서 재생산되었습니다.

매우 감사합니다! 우리는 이해한다.

 
fxsaber :

  1. 2380.
  2. 모든 서버 - 항목 3을 참조하십시오.
  3. 사용자 정의 기호.
  4. 플래그는 동작을 변경하지 않습니다.

ZY 인 트레일러 커스텀. json에서 심볼을 만들고 틱을 가져오고 이 심볼의 차트에서 스크립트를 실행합니다. 복제 여부를 적어주세요.


다시 한번 감사합니다.

예, 2380년에 그들은 실수로 문제를 가져와 신속하게 수정했습니다. 그러나 빌드 2380에 성공했습니다.

불행히도 그 순간 이후로 MetaQuotes-Demo에서 모든 것이 수정된 새 빌드가 없었습니다.

이전 빌드로 롤백하거나 MetaQuotes-Demo에서 다음 빌드를 기다릴 수 있습니다.
 
Anton :
이전 빌드로 롤백하거나 MetaQuotes-Demo에서 다음 빌드를 기다릴 수 있습니다.

이전 빌드 동안 정말 감사합니다. 그들은 2380에서 많은 일을했습니다 ...

 

MT5 최신 릴리스 빌드 2361. 사용자 지정 기호 . json에서 심볼을 만들고, 틱을 가져오고, 이 심볼의 차트에서 EA 테스트를 실행합니다.

조언자

 void OnTick ()
{
   MqlTick Tick={ 0 };
   if ( SymbolInfoTick ( _Symbol ,Tick))
  {
     MqlTick OldTicks[];
     Print ( CopyTicks ( _Symbol ,OldTicks, COPY_TICKS_ALL ));
     Print ( GetLastError ());
     Print ( CopyTicks ( _Symbol ,OldTicks, COPY_TICKS_ALL ,( ulong ) D'2020.04.06 00:00:00' * 1000 ));
     Print ( GetLastError ());
  }
   ExpertRemove ();
}

테스트 옵션

[Tester]
Expert=test.ex5
Symbol =AUDNZD.RannForex
Period =M1
Optimization= 0
Model= 4
FromDate= 2020.04 . 08
ToDate= 2020.04 . 09
ForwardMode= 0
Deposit= 10000000
Currency=USD
ProfitInPips= 1
Leverage= 100
ExecutionMode= 0
OptimizationCriterion= 6
Visual= 0

1. 네팅 계정.

1.1. 주어진 날짜로 출력은 진실과 유사합니다: 2000 0 2000 0.

1.2. 날짜를 04/07/2020-04/08/2020으로 변경하면 출력이 -1 4004 1 0과 같이 이상해집니다.

첫째, 첫 번째 경우에 오류가 나타나는 이유는 무엇입니까? 둘째, 왜 두 번째 경우는 1틱만 사용합니까? 틱 요청 날짜가 변경되지 않았습니다.

2. 헤지 계정.

2.1. 주어진 날짜를 사용하면 출력이 2000 0 1 0과 같이 이상해집니다.

두 번째 경우에 1틱만 걸리는 이유는 무엇입니까? 틱 요청 날짜가 변경되지 않았습니다.

2.2. 날짜를 04/07/2020-04/08/2020으로 변경하면 출력이 이상하게 중지되지만 동일하게 2000 0 1 0이 됩니다.


따라서 질문: 고정 매개변수가 있는 CopyTicks가 테스트 날짜뿐만 아니라 계정 유형에도 의존하는 이유는 무엇입니까? 아니면 내가 뭔가를 놓치고 뭔가 잘못하고 있습니까?

이것은 작업을 크게 복잡하게 만들므로 가능하면 수정하십시오. 재현할 수 있었습니까? 나에게 반복해야 할 다른 것이 있습니까? 고맙습니다.

파일:
AUDNZD.zip  2448 kb
 
traveller00 :

따라서 질문: 고정 매개변수가 있는 CopyTicks가 테스트 날짜뿐만 아니라 계정 유형에도 의존하는 이유는 무엇입니까? 아니면 내가 뭔가를 놓치고 뭔가 잘못하고 있습니까?

계정 유형에 대한 의존성 - 대략적인 이유를 상상할 수 있습니다. 나는 그것이 옳다라고 말하지 않을 것이다. 마지막 이력이 있는 심볼 교환 - 개발자는 헤지 등에서 심볼을 어떻게 처리할지에 대해 한 번 잘 생각해야 합니다.

나는 Tester에서 CopyTicks를 사용하지 않습니다. 첫날은 중요하지 않습니다. 명확한 거래 신호가 정말로 필요하다면 첫날 거래하지 마십시오.

 
traveller00 :

MT5 최신 릴리스 빌드 2361. 첨부 파일의 사용자 지정 기호. json에서 심볼을 만들고, 틱을 가져오고, 이 심볼의 차트에서 EA 테스트를 실행합니다.

조언자

테스트 옵션

1. 네팅 계정.

1.1. 주어진 날짜로 출력은 진실과 유사합니다: 2000 0 2000 0.

1.2. 날짜를 04/07/2020-04/08/2020으로 변경하면 출력이 -1 4004 1 0과 같이 이상해집니다.

첫째, 첫 번째 경우에 오류가 나타나는 이유는 무엇입니까? 둘째, 왜 두 번째 경우는 1틱만 사용합니까? 틱 요청 날짜가 변경되지 않았습니다.

2. 헤지 계정.

2.1. 주어진 날짜를 사용하면 출력이 2000 0 1 0과 같이 이상해집니다.

두 번째 경우에 1틱만 걸리는 이유는 무엇입니까? 틱 요청 날짜가 변경되지 않았습니다.

2.2. 날짜를 04/07/2020-04/08/2020으로 변경하면 출력이 이상하게 중지되지만 동일하게 2000 0 1 0이 됩니다.


따라서 질문: 고정 매개변수가 있는 CopyTicks가 테스트 날짜뿐만 아니라 계정 유형에도 의존하는 이유는 무엇입니까? 아니면 내가 뭔가를 놓치고 뭔가 잘못하고 있습니까?

이것은 작업을 크게 복잡하게 만들므로 가능하면 수정하십시오. 재현할 수 있었습니까? 나에게 반복해야 할 다른 것이 있습니까? 고맙습니다.

첫 출시. 테스터 로그를 봅니다.

 2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: symbol to be synchronized
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: symbol synchronized, 3720 bytes of symbol info received
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: load 23 Kb of history data to synchronize in 0 : 00 : 00.009
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: history synchronized from 2020.04 . 06 to 2020.04 . 08
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: ticks synchronization started
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: load 567 Kb of tick data to synchronize in 0 : 00 : 00.031
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex: history ticks synchronized from 2020.04 . 08 to 2020.04 . 08
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex,M1: history cache allocated for 3897 bars and contains 2868 bars from 2020.04 . 06 00 : 05 to 2020.04 . 07 23 : 59
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex,M1: history begins from 2020.04 . 06 00 : 05
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex,M1 (MetaQuotes-Demo): generating based on real ticks
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex,M1: testing of Experts\test.ex5 from 2020.04 . 08 00 : 00 to 2020.04 . 09 00 : 00 started
2020.04 . 21 10 : 53 : 10.573 Core 01 AUDNZD.RannForex : real ticks begin from 2020.04 . 08 00 : 00 : 00
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    - 1
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    4004
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    1
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    0
2020.04 . 21 10 : 53 : 10.573 Core 01 2020.04 . 08 00 : 01 : 11    ExpertRemove() function called
2020.04 . 21 10 : 53 : 10.573 Core 01 removed itself within OnTick

테스터는 4월 8일 단 하루 만에 틱을 동기화했습니다. 즉, 4월 8일까지는 틱이 없습니다.

처음에 오류 4004가 발생했습니다(요청된 틱에 대한 메모리가 충분하지 않음). 이것은 잘못된 메시지입니다. 우리는 이해할 것입니다. 기본 매개변수가 있는 요청이 기존 눈금의 경계에 있는 것 같습니다.

다음 요청은 당신에게 1틱을 준 것이 맞습니다. 2020.04.06 00:00:00부터 현재 테스트 순간까지 첫 번째 틱이 왔을 때 틱이 하나만 있기 때문입니다.

어드바이저를 약간 조정하겠습니다

 void OnTick ()
  {
   MqlTick Tick= { 0 };
   if ( SymbolInfoTick ( _Symbol ,Tick))
     {
       MqlTick OldTicks[];
       Print ( CopyTicks ( _Symbol ,OldTicks, COPY_TICKS_ALL ));
       if ( GetLastError ()!= 0 )
         return ;
       Print ( GetLastError ());
       Print ( CopyTicks ( _Symbol ,OldTicks, COPY_TICKS_ALL ,( ulong ) D'2020.04.06 00:00:00' * 1000 ));
       Print ( GetLastError ());
     }
   ExpertRemove ();
  }

그리고 우리는 두 번째 틱부터 진드기가 오르기 시작했음을 알 수 있습니다. 두 경우 모두 - 2틱

 2020.04 . 21 11 : 14 : 13.256 Core 01 AUDNZD.RannForex : real ticks begin from 2020.04 . 08 00 : 00 : 00
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 11    - 1
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    2
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    0
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    2
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    0
2020.04 . 21 11 : 14 : 13.256 Core 01 2020.04 . 08 00 : 01 : 19    ExpertRemove () function called

즉, 틱이 존재한다는 경계의 요청 오류에 대한 가정이 맞았습니다.

시작 날짜를 4월 7일로 변경

 2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex: history ticks synchronized from 2020.04 . 07 to 2020.04 . 08
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex,M1: history cache allocated for 3486 bars and contains 1429 bars from 2020.04 . 06 00 : 05 to 2020.04 . 06 23 : 59
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex,M1: history begins from 2020.04 . 06 00 : 05
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex,M1 (MetaQuotes-Demo): generating based on real ticks
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex,M1: testing of Experts\test.ex5 from 2020.04 . 07 00 : 00 to 2020.04 . 09 00 : 00 started
2020.04 . 21 11 : 18 : 17.775 Core 01 AUDNZD.RannForex : real ticks begin from 2020.04 . 07 00 : 00 : 00
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    - 1
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    4004
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    1
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    0
2020.04 . 21 11 : 18 : 17.775 Core 01 2020.04 . 07 00 : 01 : 28    ExpertRemove() function called
2020.04 . 21 11 : 18 : 17.775 Core 01 removed itself within OnTick

모두 같은. 틱이 이미 2일 동안 동기화되었다는 사실을 제외하고 - 테스트 데이터베이스에는 4월 7일과 8일에 대한 틱이 있습니다.

시작 날짜를 4월 8일로 다시 설정했습니다. 그리고 우리는 예상 출력을 봅니다

 2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: load 47 bytes of history data to synchronize in 0 : 00 : 00.000
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: history synchronized from 2020.04 . 06 to 2020.04 . 08
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: ticks synchronization started
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: load 54 bytes of tick data to synchronize in 0 : 00 : 00.000
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex: history ticks synchronized from 2020.04 . 07 to 2020.04 . 08
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex,M1: history cache allocated for 3897 bars and contains 2868 bars from 2020.04 . 06 00 : 05 to 2020.04 . 07 23 : 59
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex,M1: history begins from 2020.04 . 06 00 : 05
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex,M1 (MetaQuotes-Demo): generating based on real ticks
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex,M1: testing of Experts\test.ex5 from 2020.04 . 08 00 : 00 to 2020.04 . 09 00 : 00 started
2020.04 . 21 11 : 20 : 51.257 Core 01 AUDNZD.RannForex : real ticks begin from 2020.04 . 07 00 : 00 : 00
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    2000
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    0
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    2000
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    0
2020.04 . 21 11 : 20 : 51.257 Core 01 2020.04 . 08 00 : 01 : 11    ExpertRemove() function called
2020.04 . 21 11 : 20 : 51.257 Core 01 removed itself within OnTick

테스터는 첫 번째 출시보다 더 많은 틱을 가지고 있기 때문입니다. 그리고 그물망으로 헤징하는 것은 그것과 아무 관련이 없습니다.