CopyTicksRange()가 MQL5.a에서 올바르게 작동하지 않습니다.

 

다른 시간에 점수를 얻으려고 합니다. CopyTicksRange() 함수를 사용했습니다. 이전에는 잘 작동했습니다.

그런데 갑자기 작동을 멈췄습니다. 이 함수의 동작에 매우 실망했습니다.

왜 이런 일이 일어나는지 설명해 주시겠습니까? 보장 시간 범위를 사용하여 틱을 얻는 가장 좋은 방법은 무엇입니까?

Ticks 데이터를 불러오는 데 시간이 걸린다고 생각해서 이 함수를 여러 번 호출해 보았습니다. 하지만 시도할 때마다 복사된 틱의 길이는 -1이었습니다.

내가 무엇을 할 수 있는지 알려주세요.

도구 -> 옵션 -> 그래프 -> 차트당 최대 열 수를 무제한으로 설정했습니다. 다음 코드를 시도했습니다.

 int len = CopyTicksRange (Orig_Symbol_Name, ticks_add, COPY_TICKS_ALL , ulong (CURRENT_TIME)* 1000 , ulong ( TimeCurrent () + 60 ) * 1000 );

   if (len<= 0 )
     {
       string error;
       if ( GetLastError () == 4401 )
         error = " ERR_HISTORY_NOT_FOUND ";
       else
         error = string ( GetLastError ());
       Print ("------------------------------------------------------------------");
       Print ("History Tick Length: ", len, " Error: ", error);
       Print ("------------------------------------------------------------------");
       return - 1 ;
     }
 

이 코드를 어디에서 호출합니까? 어떤 종류의 프로그램인가요?

변수 초기화는 어디에 있습니까?

컴파일하고 실행할 수 있도록 파일의 완전한 MQ5 코드는 어디에 있습니까?

 

CopyTicks 도움말에 예제 스크립트가 제공됩니다.

콜드 스타트:

잡지

 2021.01 . 18 09 : 59 : 17.367 Scripts script Generator Magic Number (GBPUSD,H1) loaded successfully
2021.01 . 18 09 : 59 : 17.380 Scripts script Generator Magic Number (GBPUSD,H1) removed
2021.01 . 18 11 : 47 : 13.249 Scripts script CopyTicks (EURUSD,H1) loaded successfully
2021.01 . 18 11 : 49 : 18.826 Scripts script CopyTicks (EURUSD,H1) removed

전문가:

 2021.01 . 18 11 : 49 : 18.580 CopyTicks (EURUSD,H1)   EURUSD: received 100000000 ticks in 27297 ms
2021.01 . 18 11 : 49 : 18.580 CopyTicks (EURUSD,H1)   Last tick time = 2016.02 . 29 09 : 54 : 41.000
2021.01 . 18 11 : 49 : 18.580 CopyTicks (EURUSD,H1)   First tick time = 2011.12 . 19 00 : 00 : 08.000
2021.01 . 18 11 : 49 : 18.580 CopyTicks (EURUSD,H1)   current_time= 2021.01 . 18 11 : 49
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   1 . 2021.01 . 18 00 : 02.617 Ask= 1.20879 Bid= 1.20879 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   2 . 2021.01 . 18 00 : 02.635 Bid= 1.20879 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   3 . 2021.01 . 18 00 : 02.472 Ask= 1.20884 Bid= 1.20884 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   4 . 2021.01 . 18 00 : 03.121 Ask= 1.20859 Bid= 1.20859 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   5 . 2021.01 . 18 00 : 03.218 Bid= 1.20859 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   6 . 2021.01 . 18 00 : 03.878 Ask= 1.20865 Bid= 1.20865 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   7 . 2021.01 . 18 00 : 03.628 Ask= 1.20859 Bid= 1.20859 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   8 . 2021.01 . 18 00 : 03.565 Bid= 1.20859 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   9 . 2021.01 . 18 00 : 03.630 Ask= 1.20866 Bid= 1.20866 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   10 . 2021.01 . 18 00 : 03.819 Bid= 1.20866 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   11 . 2021.01 . 18 00 : 03.313 Ask= 1.20859 Bid= 1.20859 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   12 . 2021.01 . 18 00 : 03.488 Ask= 1.2086 Bid= 1.2086 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   13 . 2021.01 . 18 00 : 03.355 Ask= 1.20865 Bid= 1.20865 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   14 . 2021.01 . 18 00 : 03.105 Ask= 1.20859 Bid= 1.20859 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   15 . 2021.01 . 18 00 : 04.061 Ask= 1.20856 Bid= 1.20856 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   16 . 2021.01 . 18 00 : 04.058 Ask= 1.20853 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   17 . 2021.01 . 18 00 : 04.062 Ask= 1.20852 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   18 . 2021.01 . 18 00 : 04.056 Bid= 1.20852 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   19 . 2021.01 . 18 00 : 04.056 Ask= 1.20853 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   20 . 2021.01 . 18 00 : 04.064 Bid= 1.20853 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   21 . 2021.01 . 18 00 : 04.058 Bid= 1.20853 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   22 . 2021.01 . 18 00 : 04.715 Ask= 1.20844 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   23 . 2021.01 . 18 00 : 04.063 Bid= 1.20844 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   24 . 2021.01 . 18 00 : 04.878 Ask= 1.20849 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   25 . 2021.01 . 18 00 : 04.034 Ask= 1.20844 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   26 . 2021.01 . 18 00 : 04.455 Ask= 1.20838 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   27 . 2021.01 . 18 00 : 05.296 Ask= 1.20837 Bid= 1.20837 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   28 . 2021.01 . 18 00 : 05.354 Ask= 1.20809 Bid= 1.20809 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   29 . 2021.01 . 18 00 : 05.464 Ask= 1.20875 Bid= 1.20875 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   30 . 2021.01 . 18 00 : 05.471 Ask= 1.20822 Bid= 1.20822 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   31 . 2021.01 . 18 00 : 05.383 Ask= 1.20818 Bid= 1.20818 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   32 . 2021.01 . 18 00 : 05.207 Ask= 1.2082 Bid= 1.2082 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   33 . 2021.01 . 18 00 : 05.913 Ask= 1.20818 Bid= 1.20818 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   34 . 2021.01 . 18 00 : 05.446 Ask= 1.20816 Bid= 1.20816 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   35 . 2021.01 . 18 00 : 05.450 Ask= 1.20818 Bid= 1.20818 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   36 . 2021.01 . 18 00 : 05.583 Ask= 1.20816 Bid= 1.20816 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   37 . 2021.01 . 18 00 : 05.478 Ask= 1.20818 Bid= 1.20818 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   38 . 2021.01 . 18 00 : 06.473 Ask= 1.2082 Bid= 1.2082 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   39 . 2021.01 . 18 00 : 06.024 Ask= 1.20819 Bid= 1.20819 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   40 . 2021.01 . 18 00 : 06.752 Ask= 1.20816 Bid= 1.20816 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   41 . 2021.01 . 18 00 : 06.752 Ask= 1.20815 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   42 . 2021.01 . 18 00 : 06.752 Ask= 1.20816 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   43 . 2021.01 . 18 00 : 06.752 Ask= 1.20815 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   44 . 2021.01 . 18 00 : 06.420 Ask= 1.2083 Bid= 1.2083 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   45 . 2021.01 . 18 00 : 06.527 Ask= 1.20829 Bid= 1.20829 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   46 . 2021.01 . 18 00 : 06.085 Ask= 1.20823 Bid= 1.20823 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   47 . 2021.01 . 18 00 : 06.485 Ask= 1.20824 Bid= 1.20824 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   48 . 2021.01 . 18 00 : 06.520 Ask= 1.20823 Bid= 1.20823 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   49 . 2021.01 . 18 00 : 06.099 Ask= 1.20824 Bid= 1.20824 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   50 . 2021.01 . 18 00 : 06.407 Ask= 1.20825 Bid= 1.20825 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   51 . 2021.01 . 18 00 : 06.506 Ask= 1.20824 Bid= 1.20824 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   52 . 2021.01 . 18 00 : 06.840 Ask= 1.20825 Bid= 1.20825 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   53 . 2021.01 . 18 00 : 06.799 Ask= 1.20824 Bid= 1.20824 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   54 . 2021.01 . 18 00 : 06.123 Ask= 1.20825 Bid= 1.20825 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   55 . 2021.01 . 18 00 : 06.572 Ask= 1.20824 Bid= 1.20824 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   56 . 2021.01 . 18 00 : 06.657 Ask= 1.20823 Bid= 1.20823 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   57 . 2021.01 . 18 00 : 06.144 Ask= 1.20824 Bid= 1.20824 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   58 . 2021.01 . 18 00 : 06.589 Ask= 1.20823 Bid= 1.20823 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   59 . 2021.01 . 18 00 : 06.096 Ask= 1.20822 Bid= 1.20822 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   60 . 2021.01 . 18 00 : 06.126 Ask= 1.20823 Bid= 1.20823 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   61 . 2021.01 . 18 00 : 07.266 Ask= 1.20817 Bid= 1.20817 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   62 . 2021.01 . 18 00 : 07.390 Ask= 1.20816 Bid= 1.20816 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   63 . 2021.01 . 18 00 : 07.666 Ask= 1.20817 Bid= 1.20817 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   64 . 2021.01 . 18 00 : 07.816 Ask= 1.20824 Bid= 1.20824 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   65 . 2021.01 . 18 00 : 07.124 Ask= 1.20828 Bid= 1.20828 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   66 . 2021.01 . 18 00 : 07.100 Bid= 1.20828 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   67 . 2021.01 . 18 00 : 07.163 Ask= 1.20827 Bid= 1.20827 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   68 . 2021.01 . 18 00 : 07.719 Ask= 1.20822 Bid= 1.20822 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   69 . 2021.01 . 18 00 : 07.342 Ask= 1.2082 Bid= 1.2082 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   70 . 2021.01 . 18 00 : 07.464 Ask= 1.20823 Bid= 1.20823 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   71 . 2021.01 . 18 00 : 08.728 Ask= 1.2082 Bid= 1.2082 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   72 . 2021.01 . 18 00 : 08.826 Ask= 1.20818 Bid= 1.20818 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   73 . 2021.01 . 18 00 : 08.510 Ask= 1.2082 Bid= 1.2082 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   74 . 2021.01 . 18 00 : 08.172 Ask= 1.20813 Bid= 1.20813 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   75 . 2021.01 . 18 00 : 08.918 Ask= 1.20817 Bid= 1.20817 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   76 . 2021.01 . 18 00 : 08.051 Ask= 1.20814 Bid= 1.20814 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   77 . 2021.01 . 18 00 : 08.527 Ask= 1.20808 Bid= 1.20808 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   78 . 2021.01 . 18 00 : 08.970 Ask= 1.20811 Bid= 1.20811 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   79 . 2021.01 . 18 00 : 08.594 Ask= 1.20814 Bid= 1.20814 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   80 . 2021.01 . 18 00 : 09.525 Bid= 1.20814 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   81 . 2021.01 . 18 00 : 09.118 Ask= 1.20817 Bid= 1.20817 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   82 . 2021.01 . 18 00 : 09.405 Ask= 1.20803 Bid= 1.20803 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   83 . 2021.01 . 18 00 : 09.745 Bid= 1.20803 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   84 . 2021.01 . 18 00 : 09.491 Ask= 1.20813 Bid= 1.20813 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   85 . 2021.01 . 18 00 : 09.582 Ask= 1.20812 Bid= 1.20812 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   86 . 2021.01 . 18 00 : 10.826 Bid= 1.20812 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   87 . 2021.01 . 18 00 : 10.328 Ask= 1.20797 Bid= 1.20797 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   88 . 2021.01 . 18 00 : 10.451 Bid= 1.20797 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   89 . 2021.01 . 18 00 : 10.559 Ask= 1.208 Bid= 1.208 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   90 . 2021.01 . 18 00 : 10.684 Ask= 1.20801 Bid= 1.20801 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   91 . 2021.01 . 18 00 : 10.412 Ask= 1.208 Bid= 1.208 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   92 . 2021.01 . 18 00 : 10.964 Ask= 1.2081 Bid= 1.2081 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   93 . 2021.01 . 18 00 : 10.228 Ask= 1.20805 Bid= 1.20805 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   94 . 2021.01 . 18 00 : 10.668 Ask= 1.20803 Bid= 1.20803 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   95 . 2021.01 . 18 00 : 10.668 Bid= 1.20803 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   96 . 2021.01 . 18 00 : 10.675 Bid= 1.20803 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   97 . 2021.01 . 18 00 : 10.675 Bid= 1.20803 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   98 . 2021.01 . 18 00 : 11.068 Ask= 1.20805 Bid= 1.20805 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   99 . 2021.01 . 18 00 : 11.068 Ask= 1.20804 (Info tick)
2021.01 . 18 11 : 49 : 18.581 CopyTicks (EURUSD,H1)   100 . 2021.01 . 18 00 : 11.497 Ask= 1.20801 (Info tick)

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
  • www.mql5.com
CopyTicks - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
jaffer wilson :

다른 시간에 점수를 얻으려고 합니다. CopyTicksRange() 함수를 사용했습니다. 이전에는 잘 작동했습니다.

그런데 갑자기 작동을 멈췄습니다. 이 함수의 동작에 매우 실망했습니다.

왜 이런 일이 일어나는지 설명해 주시겠습니까? 보장 시간 범위를 사용하여 틱을 얻는 가장 좋은 방법은 무엇입니까?

Ticks 데이터를 불러오는 데 시간이 걸린다고 생각해서 이 함수를 여러 번 호출해 보았습니다. 하지만 시도할 때마다 복사된 틱의 길이는 -1이었습니다.

내가 무엇을 할 수 있는지 알려주세요.

도구 -> 옵션 -> 그래프 -> 차트당 최대 열 수를 무제한으로 설정했습니다. 다음 코드를 시도했습니다.

ulong( TimeCurrent() + 60) * 1000 은 미래의 시간입니다. 아직 틱이 없습니다. 그리고 언제부터 틱을 얻으려고 하는지 알 수 없습니다. 이렇게 넣어보세요.

 int len = CopyTicksRange (Orig_Symbol_Name, ticks_add, COPY_TICKS_ALL , ulong ( TimeCurrent () - 60 )* 1000 , ulong ( TimeCurrent ()) * 1000 );

이것은 지난 60초 동안의 틱입니다.

 
#property version    "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 0
bool terminal_connected, Filled_Complete;
input int GO_BACK_HISTORY_LOAD = 30 ;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   string name = MQLInfoString ( MQL_PROGRAM_NAME );
   IndicatorSetString ( INDICATOR_SHORTNAME , name);
   terminal_connected = ( bool ) TerminalInfoInteger ( TERMINAL_CONNECTED );
   ResetLastError ();
   Filled_Complete = true ;

   if (Fill_Ticks_Symbol( Symbol ()) < 0 )
     {
      Filled_Complete = false ;
     }
   EventSetMillisecondTimer ( 100 );
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   EventKillTimer ();
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
   if (terminal_connected == false || Filled_Complete == false )
     {
       if (Fill_Ticks_Symbol( Symbol ()) > 0 )
        {
         Filled_Complete = true ;
        }
       if ( TerminalInfoInteger ( TERMINAL_CONNECTED ) == true )
         terminal_connected = true ;
     }

//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   if ( TerminalInfoInteger ( TERMINAL_CONNECTED ) == false )
      terminal_connected = false ;
  }

//+------------------------------------------------------------------+
int Fill_Ticks_Symbol( string Orig_Symbol_Name)
  {
   MqlDateTime str;
   TimeToStruct ( iTime (Orig_Symbol_Name, 0 , 0 ) - GO_BACK_HISTORY_LOAD * 86400 , str);
   Comment ( "" );
   datetime start_date = datetime ( StringFormat ( "%d.%d.01 00:00:00" ,str.year,str.mon));
   MqlTick ticks_add[];

   ulong time_start = GetMicrosecondCount ();
//int len = CopyTicksRange(Orig_Symbol_Name, ticks_add, COPY_TICKS_ALL, ulong(start_date)*1000, ulong(TimeCurrent())*1000);

   Print ( "Gathering Ticks from : " , iTime (Orig_Symbol_Name, 0 , 0 ) - GO_BACK_HISTORY_LOAD * 86400 , " To: " , TimeCurrent ());

   int len = CopyTicksRange (Orig_Symbol_Name, ticks_add, COPY_TICKS_ALL , ulong (start_date)* 1000 , ulong ( TimeCurrent () + 60 ) * 1000 );
   int count = 0 ;
   while (len<= 0 && count< 5 && ! IsStopped ())
     {
       Sleep ( 100 );
      len = CopyTicksRange (Orig_Symbol_Name, ticks_add, COPY_TICKS_ALL , ulong (start_date)* 1000 , ulong ( TimeCurrent () + 60 ) * 1000 );
      count++;
     }
   if (len<= 0 )
     {
       Print ( "The History Len was found to be : " , len);
       return - 1 ;
     }
   Print ( "Started : " ,ticks_add[ 0 ].time, "  Ended : " ,ticks_add[len- 1 ].time);
   return len;
  }
//+------------------------------------------------------------------+

전체 코드를 공유할 수는 없지만 여기에 내가 사용한 작은 예가 있습니다.

 
지금 제안해 주시겠습니까? 위의 예를 시도했습니다. 때때로 작동합니다. 하지만 항상 그런 것은 아닙니다.
 
jaffer wilson :
지금 제안해 주시겠습니까? 위의 예를 시도했습니다. 때때로 작동합니다. 하지만 항상 그런 것은 아닙니다.

이 옵션을 사용해 보세요

 //+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
   if (rates_total == 0 )
     {
       if (Fill_Ticks_Symbol( Symbol ()) <= 0 )
         return 0 ;
     }

//--- return value of prev_calculated for next call
   return (rates_total);
  }
따라서 표시기는 틱이 로드될 때까지 기다립니다.
 
Alexey Viktorov :

이 옵션을 사용해 보세요

따라서 표시기는 틱이 로드될 때까지 기다립니다.

별 차이 없을 것 같아요. 문제는 내가 만든 것이 아니라 MQL5 기능 에 있기 때문입니다.

 
jaffer wilson :

별 차이 없을 것 같아요. 문제는 내가 만든 것이 아니라 MQL5 기능 에 있기 때문입니다.

확인되지 않은 의견을 밝힌 것은 이번이 처음이 아닙니다. 확인하는 것을 막는 것은 무엇입니까?

CopyTicksRange() 함수로 작업하는 mql5 프로그래머가 몇 명인지 세어보십시오. 아무도 문제가 없습니다. 당신은 유일한 사람입니다, 당신만이 기능의 이러한 동작을 가지고 있습니다.

 
Alexey Viktorov # :

확인되지 않은 의견을 밝힌 것은 이번이 처음이 아닙니다. 확인하는 것을 막는 것은 무엇입니까?

CopyTicksRange() 함수로 작업하는 mql5 프로그래머가 몇 명인지 세어보십시오. 아무도 문제가 없습니다. 당신은 유일한 사람입니다, 당신은 기능의 이러한 동작을 가지고 있습니다.


아주 대담한 말이네요, 알렉스.


CopyTicksRange() 함수로 작업하고 있는데 항상 작동하지는 않습니다. 올바르게 작동하려면 입력 매개변수를 선택하여 이해하기 쉬운 결과를 제공해야 합니다. 2년 동안 나는 이 기능을 사용해야 했고 점점 더 많은 결함을 찾아야 했습니다. 지원팀은 이 기능과 관련된 모든 질문을 지속적으로 무시합니다. 아마도 그들은 이것을 하기에는 너무 게으른 것입니다. 왜냐하면. 잼에 잼이 있습니다.

예를 들어 이 함수가 예기치 않게 수행할 수 있는 작업은 다음과 같습니다.


1) 요청된 범위에 포함되지 않은 반환 틱

2) 이 막대의 요청된 부분 대신 현재 막대의 모든 눈금을 반환합니다.

3) 쓰레기를 반환합니다. 진드기가 무엇인지 모른다

4) 일부 틱 건너 뛰기


그리고 가장 독창적인 것은 목발을 만드는 지원에서 누군가의 조언이었습니다. 어떤 상황에서 함수가 버그가 있는지 안다면 버그가 발생하지 않도록 요청을 바꿔야 합니다. 예전부터 하고 있어요 :)


다음은 제가 지금 목발을 찾고 있는 어제의 예입니다.


 MqlTick Ticks[ 1000000 ];

int AddTicks( ulong tFrom_msc, ulong tTo_msc, ulong &lt)
{

   int   received= CopyTicksRange ("@BR",Ticks, COPY_TICKS_ALL ,tFrom_msc,tTo_msc);
   
   PrintFormat (" CopyTicksRange :  %s:%d - %s:%d  received %d", TimeToString (tFrom_msc/ 1000 ),tFrom_msc% 1000 , TimeToString (tTo_msc/ 1000 ),tTo_msc% 1000 ,received);
   
   if (received> 0 )
   {
       PrintFormat ("%s:%d - first tick, %s:%d - last tick", 
                               TimeToString (Ticks[ 0 ].time_msc/ 1000 ),           Ticks[ 0 ].time_msc% 1000 , 
                               TimeToString (Ticks[received- 1 ].time_msc/ 1000 ),  Ticks[received- 1 ].time_msc% 1000
                              );
                              
       lt= Ticks[received- 1 ].time_msc ;                   
   }
   return received;
}

다음은 조인트입니다.

 2021.09 . 18 18 : 10 : 26.541 TesterEx ($BR,H1)       CopyTicksRange :   2021.01 . 29 23 : 56 : 864 - 2021.01 . 31 23 : 59 : 999   received 109425
2021.09 . 18 18 : 10 : 26.541 TesterEx ($BR,H1)       2021.01 . 29 00 : 02 : 782 - first tick, 2021.01 . 29 23 : 56 : 863 - last tick

저것들. 수천명의 프로그래머가 사용하는 함수로, 개인적으로 현재 막대의 시작 부분부터 모든 틱을 반환했지만 요청한 범위에는 포함되지 않았습니다.

 
RusPro # :


아주 대담한 말이네요, 알렉스.


CopyTicksRange() 함수로 작업하고 있는데 항상 작동하지 않습니다. 올바르게 작동하려면 입력 매개변수를 선택하여 이해하기 쉬운 결과를 제공해야 합니다. 2년 동안 나는 이 기능을 사용하고 새로운 결함을 찾아야 했습니다. 지원팀은 이 기능과 관련된 모든 질문을 지속적으로 무시합니다. 아마도 그들은 이것을 하기에는 너무 게으르다. 왜냐하면 왜냐하면. 잼에 잼이 있습니다.

예를 들어 이 함수가 예기치 않게 수행할 수 있는 작업은 다음과 같습니다.


1) 요청된 범위에 포함되지 않은 반환 틱

2) 이 막대의 요청된 부분 대신 현재 막대의 모든 눈금을 반환합니다.

3) 쓰레기를 반환합니다. 진드기가 무엇인지 모른다

4) 일부 틱 건너 뛰기


그리고 가장 독창적 인 것은 목발을 만들기 위해 지원한 사람의 조언이었습니다. 어떤 상황에서 함수가 버그가 있는지 안다면 버그가 발생하지 않도록 요청을 바꿔야 합니다. 예전부터 하고 있어요 :)

키워드를 강조했습니다.

정의상 아직 존재하지 않는 틱을 요청하지 마십시오. 현재 시간(밀리초)보다 1밀리초 이상 더 틱을 요청하면 나열된 문제의 형태로 동일한 g………th를 얻게 됩니다.