Posição na fila do book de ofertas?

 

Pessoal, bom dia.

É possível saber qual a posição na fila do book de ofertas que a sua ordem está?

Fiz uns testes aqui mas estou com algumas dúvidas e queria discutir com vocês.
No exemplo abaixo, a cada execução do BookEvent, é consultado o volume corrente em um determinado preço (onde foi posta a ordem). Se o volume diminuir, ele atualiza a posição na fila.

Mas como determinar a posição inicial na fila?
Quando você envia a ordem, temos que esperar a confirmação de que a ordem foi aceita. Se consultarmos o volume assim que a ordem foi aceita, esse volume indicaria a posição correta inicial da ordem?

Outra dúvida, pelo que li na documentação e nos artigos, quando você usa MarketBookGet, o tamanho do array que é retornado, depende da correta, de ativo, etc. Pelos testes rápidos aqui, na conta demo da XP, pro WINV16 o tamanho tá retornado 32. Ou seja, seriam 32 níveis de preço que estão no book (vamos supor 16 pra venda e 16 pra compra). Se o seu preço (onde foi posta a ordem) estiver fora desse intervalo, e ocorrer a diminuição do volume nesse preço (ordens que foram canceladas), você não vai conseguir "enxergar" essa mudança, correto?

void OnBookEvent(const string &symbol) {
  if(symbol == Symbol()) {
    MqlBookInfo last_bookArray[];
    if(MarketBookGet(Symbol(), last_bookArray)) {
      for(int i = 0; i < ArraySize(last_bookArray); i++) {
        MqlBookInfo curr_info = last_bookArray[i];
        if(curr_info.price == orderPrice) {
          if(isFirstTime) {
            pos = curr_info.volume - orderVolume;
            isFirstTime = false;
          }
          else
          if(curr_info.volume < pos) {
            pos = curr_info.volume;
          }
        }
      }
      PrintFormat("Pos: %d", pos);
    }
  }
}

Acho que na verdade o correto seria consultar as negociações realizadas.
Alguma outra forma mais adequada para isso?

Até

 
Rodrigo Pandini:

Pessoal, bom dia.

É possível saber qual a posição na fila do book de ofertas que a sua ordem está?

Olá Rodrigo Pandini,

Até onde me consta, infelizmente isso (ainda) não é possível no MetaTrader 5, uma vez que a ferramenta disponibiliza apenas os dados sintéticos de book.

Abraços,
Malacarne

 
Obrigado Malacarne.

Outra pergunta, você acha que é possível estimar o pior caso usando a solução acima e analisando junto com Times e Sales?
Por exemplo, assim que confirmado que a ordem foi colocada no book, lemos o volume total do nível preço correspondente da ordem.
Assumimos que essa é nossa posição inicial na fila.
A cada nova alteração no book de ofertas analisamos se o volume total está abaixo da posição inicial definida (ordens que estavam na frente formam canceladas) e atualizamos a posição estimada na fila que a ordem está.
Além disso, analisamos o Times and Sales e verificamos se algum negócio foi feito no nível de preço da ordem. Se houver, verificamos o volume executado no negócio e subtraímos da posição estimada da ordem.
Acha que daria para estimar dessa forma a posição na fila no "pior caso"?
 
Rodrigo Pandini:
Obrigado Malacarne.

Outra pergunta, você acha que é possível estimar o pior caso usando a solução acima e analisando junto com Times e Sales?
Por exemplo, assim que confirmado que a ordem foi colocada no book, lemos o volume total do nível preço correspondente da ordem.
Assumimos que essa é nossa posição inicial na fila.
A cada nova alteração no book de ofertas analisamos se o volume total está abaixo da posição inicial definida (ordens que estavam na frente formam canceladas) e atualizamos a posição estimada na fila que a ordem está.
Além disso, analisamos o Times and Sales e verificamos se algum negócio foi feito no nível de preço da ordem. Se houver, verificamos o volume executado no negócio e subtraímos da posição estimada da ordem.
Acha que daria para estimar dessa forma a posição na fila no "pior caso"?

Vc pode "simular" a posição da fila, se considerar que será o ultimo a ser executado: coloque sua saída 1 tick acima do seu gain. Se ele consumir a fila e beliscar 1 tick acima, pegará seu gain ou loss.

 
Rodrigo Pandini:
Obrigado Malacarne.

Outra pergunta, você acha que é possível estimar o pior caso usando a solução acima e analisando junto com Times e Sales?
Por exemplo, assim que confirmado que a ordem foi colocada no book, lemos o volume total do nível preço correspondente da ordem.
Assumimos que essa é nossa posição inicial na fila.
A cada nova alteração no book de ofertas analisamos se o volume total está abaixo da posição inicial definida (ordens que estavam na frente formam canceladas) e atualizamos a posição estimada na fila que a ordem está.
Além disso, analisamos o Times and Sales e verificamos se algum negócio foi feito no nível de preço da ordem. Se houver, verificamos o volume executado no negócio e subtraímos da posição estimada da ordem.
Acha que daria para estimar dessa forma a posição na fila no "pior caso"?

Rodrigo Pandini,

Tenho o mesmo problema. Quero colocar uma ordem no book e monitorar sua posição. Ou seja, saber o volume que está na "frente" da minha ordem num dado instante.

Acho que no máximo daria para fazer uma estimativa da posição considerando o DOM e Time & Trades. Mas seria uma estimativa, pois acho que não tem como obter as ordens canceladas.

Você evoluiu algo?

Saudações,

Rogério Labanca

 

Olá eu estou pensando em criar algo similar para operar em filas do mercado de opções, pois são bem lentas e temos como lucrar com consistência (com quase 0% de chances de perda) Mercado de opções em opções mais longe do dinheiro OTM, em geral, para mover 1 centavo pode levar horas, com isso nosso robô pode ficar bem posicionado na fila, ou caso erre o lado da fila podemos zerar a posição sem perdas. Quem utiliza esta estratégia é o DEDEN, mas faz tudo manualmente, para ter noção esse cara está a 15 anos consistente com essa técnica de fila... já operei manualmente, mas não dá para ficar o dia todo aguardando opções moverem 1 centavinho.... Procurei tudo que há no book mas não tem nada sobre filas.... pensei em monitorar essa fila através de algum tipo de monitonamento para "achar" a posição ...

Exemplo:

Se nossa ordem foi colocada no book, então eu armazeno o volume total em uma variável..

se o o volume diminui, sem antes ter algum aumento podemos deduzir que algumas ordens na frente foram executadas

se o volume aumenta entende-se que entrou alguém atrás na fila....

Mas a partir daqui que o problema surge agora se diminui o volume , não dá para saber se está saindo do inicio da fila ou do final...

estou simulando várias condicionais até achar uma que seja fidedigna para isso...

alguém teve sucesso ? vamos compartilhar com os amigos ? rsrs thanks

 
Nadiel Maia #:

Olá eu estou pensando em criar algo similar para operar em filas do mercado de opções, pois são bem lentas e temos como lucrar com consistência (com quase 0% de chances de perda) Mercado de opções em opções mais longe do dinheiro OTM, em geral, para mover 1 centavo pode levar horas, com isso nosso robô pode ficar bem posicionado na fila, ou caso erre o lado da fila podemos zerar a posição sem perdas. Quem utiliza esta estratégia é o DEDEN, mas faz tudo manualmente, para ter noção esse cara está a 15 anos consistente com essa técnica de fila... já operei manualmente, mas não dá para ficar o dia todo aguardando opções moverem 1 centavinho.... Procurei tudo que há no book mas não tem nada sobre filas.... pensei em monitorar essa fila através de algum tipo de monitonamento para "achar" a posição ...

Exemplo:

Se nossa ordem foi colocada no book, então eu armazeno o volume total em uma variável..

se o o volume diminui, sem antes ter algum aumento podemos deduzir que algumas ordens na frente foram executadas

se o volume aumenta entende-se que entrou alguém atrás na fila....

Mas a partir daqui que o problema surge agora se diminui o volume , não dá para saber se está saindo do inicio da fila ou do final...

estou simulando várias condicionais até achar uma que seja fidedigna para isso...

alguém teve sucesso ? vamos compartilhar com os amigos ? rsrs thanks

Mas se o volume diminuir, você não sabe se foi executado ou cancelado né?

Só olhando o volume...

15 anos de consistência... que bom né... Sem querer causar aqui, mas esse rapaz deve estar bem da vida...


Sucesso na sua empreitada! (e que venha a consistência para todos nós)

Razão: