CopyTicksRange () não funciona corretamente na MQL5. a

jaffer wilson  

Estou tentando conseguir as marcas para tempos diferentes. Tenho usado a função CopyTicksRange (). Costumava funcionar bem.

Mas de repente deixou de funcionar. Estou muito desapontado com este comportamento da função.

Por favor, me explique por que isso está acontecendo? Qual é a melhor maneira de obter carrapatos usando o intervalo de tempo com garantia?

Tentei chamar esta função várias vezes porque achei que levava tempo para carregar os dados do Ticks. Mas todas as vezes que tentei, o comprimento dos carrapatos copiados era -1.

Por favor, diga-me o que posso fazer.

Eu defini Ferramentas -> Opção -> Gráficos -> Número máximo de colunas no gráfico para Ilimitado. Eu tentei o seguinte código:

 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;
     }
Vladimir Karputov  

Um script de exemplo é fornecido na ajuda do CopyTicks

Partida a frio:

Revista

 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

Especialistas:

 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
Alexey Viktorov  
jaffer wilson:

Estou tentando conseguir as marcas para tempos diferentes. Tenho usado a função CopyTicksRange (). Costumava funcionar bem.

Mas de repente deixou de funcionar. Estou muito desapontado com este comportamento da função.

Por favor, me explique por que isso está acontecendo? Qual é a melhor maneira de obter carrapatos usando o intervalo de tempo com garantia?

Tentei chamar esta função várias vezes porque achei que levava tempo para carregar os dados do Ticks. Mas todas as vezes que tentei, o comprimento dos carrapatos copiados era -1.

Por favor, diga-me o que posso fazer.

Eu defini Ferramentas -> Opção -> Gráficos -> Número máximo de colunas no gráfico para Ilimitado. Eu tentei o seguinte código:

ulong(TimeCurrent() + 60) * 1000 é tempo no futuro. Ainda não há carrapatos lá. Você não sabe a que horas você está tentando obter os carrapatos. Tente colocar as coisas assim

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

Serão os carrapatos durante os últimos 60 segundos

jaffer wilson  
#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;
  }
//+------------------------------------------------------------------+

Não serei capaz de compartilhar o código completo, mas aqui está um pequeno exemplo que usei.

jaffer wilson  
Você poderia me sugerir agora? Eu tentei o exemplo acima. Às vezes funciona. Mas nem sempre.
Alexey Viktorov  
jaffer wilson:
Você poderia me sugerir isso agora? Eu tentei o exemplo acima. Às vezes funciona. Mas nem sempre.

Tente esta opção

//+------------------------------------------------------------------+
//| 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);
  }
Desta forma, o indicador esperará que os carrapatos sejam carregados.
jaffer wilson  
Alexey Viktorov :

Tente esta opção.

Desta forma, o indicador esperará que os carrapatos sejam carregados.

Acho que não haverá nenhuma diferença. Porque o problema é com a função MQL5, não aquela que eu criei.

Alexey Viktorov  
jaffer wilson:

Acho que não haverá nenhuma diferença. Porque o problema é com a função MQL5, não aquela que eu criei.

Esta não é a primeira vez que você expressa uma opinião não verificada. O que o impede de verificar?

Tente contar quantos programadores mql5 estão trabalhando com a função CopyTicksRange() e ninguém tem problemas. Você é o único, você é o único que tem tal comportamento da função.

RusPro  
Alexey Viktorov #:

Esta não é a primeira vez que você dá uma opinião não verificada. O que o impede de verificar?

Tente contar quantos programadores de mql5 estão trabalhando com a função CopyTicksRange() e ninguém tem problemas. Você é o único que tem tal comportamento da função.


Uma declaração muito ousada, Alexey.


Eu trabalho com a função CopyTicksRange() e ela funciona constantemente de forma incorreta. Para que funcione corretamente, tenho que ajustar os parâmetros de entrada para que dê um resultado sensato. Estou usando esta função há dois anos e continuo encontrando novas falhas. O apoio continua ignorando todas as perguntas sobre esta função. O mais provável é que eles sejam preguiçosos demais para fazê-lo, pois há uma falha atrás da outra.

Como exemplo, o que esta função pode fazer de forma inesperada:


1) devolver os carrapatos não incluídos na faixa solicitada

2) devolver todos os carrapatos da barra atual em vez da parte solicitada desta barra

3) devolver o lixo, ou seja, não está claro quais carrapatos são devolvidos

4) para pular uma parte dos carrapatos


O melhor foi um conselho de alguém de apoio para fazer muletas - ou seja, se eu sei em que situações uma função falha, eu deveria reformular o pedido para que ele não falhasse. Tenho feito isso desde então :)


Aqui está o exemplo de ontem, contra o qual estou agora procurando uma muleta:


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;
}

E aqui está a muleta:

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

Isto é, a função utilizada por milhares de programadores, pessoalmente para mim retornou todos os carrapatos desde o início da barra atual, mas não incluídos na faixa solicitada.

Alexey Viktorov  
RusPro #:


Essa é uma afirmação muito ousada, Alexey.


Estou trabalhando com a função CopyTicksRange() e ela não está funcionando corretamente o tempo todo. Para que funcione corretamente, tenho que ajustar os parâmetros de entrada para que dê um resultado sensato. Estou usando esta função há dois anos e continuo encontrando novas falhas. O apoio continua ignorando todas as perguntas sobre esta função. O mais provável é que eles sejam preguiçosos demais para fazê-lo, pois há uma falha atrás da outra.

Como exemplo, o que esta função pode fazer de forma inesperada:


1) devolver os carrapatos não incluídos na faixa solicitada

2) devolver todos os carrapatos da barra atual ao invés da parte solicitada desta barra

3) devolver o lixo, ou seja, não está claro quais carrapatos são devolvidos

4) para pular uma parte dos carrapatos


O melhor foi um conselho de alguém de apoio para fazer muletas - ou seja, se eu sei em que situações uma função falha, eu deveria reformular o pedido para que ele não falhasse. Tenho feito isso desde então :)

Destaquei as palavras-chave.

NÃO solicite carrapatos que ainda não existem por definição. Se você solicitar carrapatos mesmo um milissegundo além do tempo atual em milissegundos, você receberá a própria g.........y na forma de seus problemas.

Razão: