Comportamento estranho nos valores de Ask e BID providos pelo servidor demo XP

 

Pessoal,

bom dia.

Um comportamento estranho que tenho verificado na minha conta demo da XP. Anexo, envio um print do market watch do WINM25 para exemplificar.

O meu entendimento é que os valores de ask e bid são os melhores valores de compra e venda registrados no book, logo, a priori, não deveria haver, em nenhum momento, ticks de compra ou venda fora dos valores de ask e bid. No entanto, vejam que vários ticks ocorrem fora dos valores de ask e bid. Isso acontece direto (todos os segundos sempre tem ticks fora do range). Me utilizando dos elementos da estrutura MqlTick, me parece que existe um delay entre o "MqlTick.last" e os  "MqlTick.ask" e "MqlTick.bid".

Problemas que isso causa: Em simulações de experts, dependendo do código, uma entrada pode ser acionada por pelo "MqlTick.last", porém o simulador realiza entradas sempre pelo "MqlTick.ask" ou pelo "MqlTick.bid"Exemplo: No caso do print em questão, uma compra poderia ter sido disparada quando MqlTick.last = 137250, porém o simulador iria considerar a entrada em 137235, que é o valor do MqlTick.ask no momento. Ou seja, uma entrada 15 pontos mais vantajosa que o último preço negociado. Se for em trades de alta frequencia e de baixo objetivo, a simulação, mesmo utilizando realticks providos pela XP apresentará resultados errados.

Alguem saberia explicar o que ocorre?

struct MqlTick

{
   datetime time;        // time of this price update
   double   bid;         // current Bid price
   double   ask;         // current Ask price
   double   last;        // Last trade price
   ulong    volume;      // volume for Last price
   long     time_msc;    // time of this price update in milliseconds
   uint     flags;       // flags (which fields of the structure have changed)
   double   volume_real// volume for the Last price with increased accuracy
};
Arquivos anexados: