Testing 'CopyTicks' - page 38

 
Snest:

It's been three months and the ticket still hasn't been closed. Trouble.

Write to them again in the application and ask them to comment. Generally sad, of course, but I also occasionally catch ticks of uncertain direction.

Does AMP already provide reals for MT5? Have they opened online?

 

The question is not for us, but for datafeed, which was not written by us.

 

Yes, opened a real from AMP on MT5.


Renat, is it the wrong quotes from CQG?

Do they provide the wrong trade direction? Or they don't provide it at all for MT5 and have to determine the direction algorithmically?

Does it make sense for me to compare quotes with another terminal on CQG?

 

Unloaded data from another terminal connected to the CQG demo. Matched with ritmik and diverged from MT5:

Price Bid Ask

11.07.2017 8:03:00 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 2 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 2 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:00 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:00 1209.7 1209.6 1209.7 1 Buy

11.07.2017 8:03:00 1209.7 1209.6 1209.7 2 Buy

11.07.2017 8:03:00 1209.7 1209.6 1209.7 1 Buy

11.07.2017 8:03:00 1209.7 1209.6 1209.7 2 Buy

11.07.2017 8:03:00 1209.7 1209.6 1209.7 1 Buy

11.07.2017 8:03:00 1209.7 1209.6 1209.7 1 Buy

11.07.2017 8:03:00 1209.7 1209.6 1209.7 1 Buy

11.07.2017 8:03:00 1209.7 1209.6 1209.7 1 Buy

11.07.2017 8:03:01 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:02 1209.7 1209.7 1209.8 3 Sell

11.07.2017 8:03:02 1209.7 1209.7 1209.8 2 Sell

11.07.2017 8:03:02 1209.7 1209.7 1209.8 1 Sell

11.07.2017 8:03:02 1209.7 1209.7 1209.8 1 Sell


 

COPY_TICKS_INFO-tick history contains duplicate neighbours in the same trading session - bug.

#include <TypeToBytes.mqh>

string GetTickFlag( uint tickflag )
{
  string flag = "";

#define  TICKFLAG_MACRO(A) flag += ((bool)(tickflag & TICK_FLAG_##A)) ? " TICK_FLAG_" + #A : "";
  TICKFLAG_MACRO(BID)
  TICKFLAG_MACRO(ASK)
  TICKFLAG_MACRO(LAST)
  TICKFLAG_MACRO(VOLUME)
  TICKFLAG_MACRO(BUY)
  TICKFLAG_MACRO(SELL)
#undef  TICKFLAG_MACRO

  if (flag == "")
    flag = " FLAG_UNKNOWN (" + (string)tickflag + ")";
     
  return(flag);
}

#define  TOSTRING(A) " " + #A + " = " + (string)Tick.A

string TickToString( const MqlTick &Tick )
{
  return(TOSTRING(time) + "." + (string)IntegerToString(Tick.time_msc % 1000, 3, '0') +
         TOSTRING(bid) + TOSTRING(ask) + TOSTRING(last)+ TOSTRING(volume) + GetTickFlag(Tick.flags));
}

void OnStart()
{  
  MqlTick Ticks[];
  MqlTick Ticks2[];
  
  const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, 1 e4);
  
  ArrayCopy(Ticks2, Ticks);

  for (int i = 0; i < Amount; i++)
  {
    Ticks[i].time = 0;
    Ticks[i].time_msc = 0;
  }

  for (int i = 1; i < Amount; i++)
    if (_R(Ticks[i]) == Ticks[i - 1])
    {
      Print(i);
      Print(TickToString(Ticks2[i - 1]));
      Print(TickToString(Ticks2[i]));      
    }
}

Result

Test3 (RTS-9.17,M1)     4906
Test3 (RTS-9.17,M1)      time = 2017.08.31 18:44:59.963 bid = 0.0 ask = 0.0 last = 109330.0 volume = 6 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.08.31 18:55:07.805 bid = 0.0 ask = 0.0 last = 109330.0 volume = 6 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     4908
Test3 (RTS-9.17,M1)      time = 2017.08.31 18:55:50.541 bid = 109270.0 ask = 109380.0 last = 109330.0 volume = 6 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.08.31 19:05:00.324 bid = 109270.0 ask = 109380.0 last = 109330.0 volume = 6 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9198
Test3 (RTS-9.17,M1)      time = 2017.08.31 23:09:18.717 bid = 109380.0 ask = 109390.0 last = 109390.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.08.31 23:10:18.767 bid = 109380.0 ask = 109390.0 last = 109390.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9872
Test3 (RTS-9.17,M1)      time = 2017.09.21 16:13:21.106 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 16:14:21.108 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9877
Test3 (RTS-9.17,M1)      time = 2017.09.21 16:18:22.071 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 16:19:28.235 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9884
Test3 (RTS-9.17,M1)      time = 2017.09.21 16:25:47.230 bid = 112000.0 ask = 112010.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 16:26:51.723 bid = 112000.0 ask = 112010.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9930
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:17:01.369 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:18:26.289 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9941
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:29:41.000 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 2 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:30:42.114 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 2 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9942
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:30:42.114 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 2 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:34:59.000 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 2 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9945
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:37:11.121 bid = 112000.0 ask = 112010.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:38:15.898 bid = 112000.0 ask = 112010.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9954
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:49:00.026 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:50:01.699 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9955
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:50:01.699 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:51:02.404 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9956
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:51:02.404 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:52:15.775 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9959
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:55:08.919 bid = 112000.0 ask = 112010.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 17:56:14.099 bid = 112000.0 ask = 112010.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9967
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:05:05.165 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:06:07.867 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9968
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:06:07.867 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:07:20.598 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9974
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:15:18.820 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:16:53.501 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9980
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:23:16.970 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 100 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:24:33.299 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 100 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9987
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:31:49.116 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:32:55.510 bid = 112000.0 ask = 112010.0 last = 112010.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9994
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:40:25.187 bid = 112000.0 ask = 112010.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:41:25.813 bid = 112000.0 ask = 112010.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)     9999
Test3 (RTS-9.17,M1)      time = 2017.09.21 18:44:45.546 bid = 0.0 ask = 0.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
Test3 (RTS-9.17,M1)      time = 2017.09.22 09:45:00.446 bid = 0.0 ask = 0.0 last = 112000.0 volume = 1 TICK_FLAG_BID TICK_FLAG_ASK
 
fxsaber:

COPY_TICKS_INFO-tick history contains duplicate neighbours in the same trading session - bug.

Result

The result presented by you is not a bug of the CopyTicks function. CopyTicks gives exactly what is in the ticks database.

Why there are such backups in the tick database (exactly backups, not duplicates, because the time is different), we're trying to figure out

 
fxsaber:

COPY_TICKS_INFO-tick history contains duplicate neighbours in the same trading session - bug.

Result

Fibo server?
 
Andrey Dik:
Fibo server?

Metaquotes.

 

The script shows that the tick cache is not working properly

// Проверка тикового кеша
void OnStart()
{  
  MqlTick Ticks[];
  
  ArrayResize(Ticks, 0, 1 e5);
  
  // Закачали тики на машину
  const int Amount = CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, 1 e5);
  
  if (Amount > 0)
  {
    const long From = Ticks[0].time_msc;
    const long To = Ticks[Amount - 1].time_msc;
    
    Print(AccountInfoString(ACCOUNT_SERVER) + "\n" + _Symbol);
    Print(Amount);
    
    // Запрашиваем имеющиеся тики
    for (int i = 0; i < 1000; i++)
      if (CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, From, 1 e5) == -1)
      {
        Print(GetLastError());
        
        break;
      }

    Print("End");
  }
}


Result on one server

2017.10.17 10:43:00.807 MetaQuotes-Demo
2017.10.17 10:43:00.807 EURUSD
2017.10.17 10:43:00.807 100000
2017.10.17 10:43:02.489 End


And on the other

2017.10.17 10:42:16.027 ICMarkets-Demo
2017.10.17 10:42:16.027 EURUSD
2017.10.17 10:42:16.027 100000
2017.10.17 10:42:43.816 End


In first case 2.5 seconds, in second case 27.5 seconds. Why are there such heavy lags?

 
fxsaber:

In the first case, 2.5 seconds, in the second, 27.5 seconds. Why are there such heavy lags?

And you think that 1,000 CopyTicks queries should not take time?
Reason: