Ordens Limites sofrem Spread?

 

Fala pessoal, beleza?

Eu desenvolvi um robô pra operar WIN e WDO. Na conta demo eu usava execução a mercado já que lá a liquidez é infinita e o preço de execução é sempre igual ao preço de envio da ordem (sem sofrer spread).

Comecei a usar na conta real e fui fazendo uns ajustes, coloquei tudo com ordem limite pra não sofrer com isso, pois usando ordem limite nossas ordens ficam no livro de ofertas e só são executadas com preço igual ou melhor, certo? Nem o RPL da corretora entra em ação, pois as ordens já estão registradas na B3.

Bom, olhem só essa imagem abaixo:


Isso foi hoje, rodando em conta real.

Podem ver que todos ou meus T/P são atingidos, mas o preço de execução sempre está um pouco abaixo.

Pelo que entendo funciona assim:

Ordem a mercado: compramos/vendemos com a valor disponível na hora, pode ser melhor ou pior que o preço de disparo, depende da liquidez e do seu tempo de resposta até a corretora.

Ordem stop: é basicamente uma ordem a mercado, mas é disparada pela plataforma de negociação quando o preço atinge o valor programado - uma ordem de compra não pode ser colocada no livro acima do preço atual e vice-versa para venda.

Ordem limite: é uma ordem de venda acima do valor atual ou uma ordem de compra abaixo do valor atual. Esse tipo de ordem é registrada no livro (diretamente na B3) e só é executada quando o preço é atingido. Como a ordem já está no livro, não deveria ter spread e o tempo de resposta não deveria influenciar (apesar de minha plataforma VPS ter um ping de 3ms até a BTG, onde eu opero)

O TakeProfit é uma ordem limite, não é? Também deveria estar registrado no livro de ofertas. É normal essa discrepância que estou tendo nos resultados? Ou estou entendo as ordens limite de maneira errada? Ou simplesmente o TakeProfit não é uma ordem limite, mas sim de execução a mercado?

Agradeço quem souber responder!
Rafael

 
Rafael Grecco:

Fala pessoal, beleza?

Eu desenvolvi um robô pra operar WIN e WDO. Na conta demo eu usava execução a mercado já que lá a liquidez é infinita e o preço de execução é sempre igual ao preço de envio da ordem (sem sofrer spread).

Comecei a usar na conta real e fui fazendo uns ajustes, coloquei tudo com ordem limite pra não sofrer com isso, pois usando ordem limite nossas ordens ficam no livro de ofertas e só são executadas com preço igual ou melhor, certo? Nem o RPL da corretora entra em ação, pois as ordens já estão registradas na B3.

Bom, olhem só essa imagem abaixo:


Isso foi hoje, rodando em conta real.

Podem ver que todos ou meus T/P são atingidos, mas o preço de execução sempre está um pouco abaixo.

Pelo que entendo funciona assim:

Ordem a mercado: compramos/vendemos com a valor disponível na hora, pode ser melhor ou pior que o preço de disparo, depende da liquidez e do seu tempo de resposta até a corretora.

Ordem stop: é basicamente uma ordem a mercado, mas é disparada pela plataforma de negociação quando o preço atinge o valor programado - uma ordem de compra não pode ser colocada no livro acima do preço atual e vice-versa para venda.

Ordem limite: é uma ordem de venda acima do valor atual ou uma ordem de compra abaixo do valor atual. Esse tipo de ordem é registrada no livro (diretamente na B3) e só é executada quando o preço é atingido. Como a ordem já está no livro, não deveria ter spread e o tempo de resposta não deveria influenciar (apesar de minha plataforma VPS ter um ping de 3ms até a BTG, onde eu opero)

O TakeProfit é uma ordem limite, não é? Também deveria estar registrado no livro de ofertas. É normal essa discrepância que estou tendo nos resultados? Ou estou entendo as ordens limite de maneira errada? Ou simplesmente o TakeProfit não é uma ordem limite, mas sim de execução a mercado?

Agradeço quem souber responder!
Rafael

Então... O take Profit fica na corretora e dispara uma ordem a mercado quando é atingido.

Não fica no book de ofertas não.

Por isso algumas pessoas fazem seus robôs com saídas pendentes ao invés de a mercado.

Além do spread pode ocorrer o slippage. O take é acionado mas o movimento volta rápido e sua saída é pior do que o esperado.
 
Rafael Grecco


Olá Rafael,

algumas outras observações.

Ordem a mercado: compramos/vendemos com a valor disponível na hora, pode ser melhor ou pior que o preço de disparo, depende da liquidez e do seu tempo de resposta até a corretora.

--- -Na ordem a mercado você não informa o preço basta a quantidade e opcionalmente você pode definir os gatilhos de stop loss (SL) e take profit (TP)


Ordem stop: é basicamente uma ordem a mercado, mas é disparada pela plataforma de negociação quando o preço atinge o valor programado - uma ordem de compra não pode ser colocada no livro acima do preço atual e vice-versa para venda.

--- Um ordem BuyStop só pode ser colocada acima do preço ASK e SellStop abaixo do preço BID e como você disse são gatilhos disparados pelo servidor MT5(*).


Ordem limite: é uma ordem de venda acima do valor atual ou uma ordem de compra abaixo do valor atual. Esse tipo de ordem é registrada no livro (diretamente na B3) e só é executada quando o preço é atingido. Como a ordem já está no livro, não deveria ter spread e o tempo de resposta não deveria influenciar (apesar de minha plataforma VPS ter um ping de 3ms até a BTG, onde eu opero)

---- Ordens buyLimit podem sim ser colocadas acima do ASK e é uma ordem de execução imediata a mercado, modo de preenchimento FOK ou IOC e tem uma finalidade específica, confundiu né, então um exemplo concreto para clarear as ideias.

---- Vamos supor que você queira comprar 35000 ações de BOBR4, se você usar ordem a mercado esta seria executada comprando as ofertas no book ( de 16/12 )  até o preço de R$ 1,26 mas você não quer isso! Você quer pagar apenas 1,15 pelas ações, então você deve usar o buyLimit com um tipo de preenchimento:   Se for tipo FOK é preciso ter as 35000 ações ofertadas até o preço de R$ 1,15 para a ordem ser executada, senão a ordem é cancelada. Se for tipo IOC não precisa ter 35000 ações ofertadas até o preço de R$ 1,15 a ordem é parcialmente executada e o restante cancelado.

---- Do mesmo jeito, as ordens sellLimit podem sim ser colocadas abaixo do BID e é uma ordem de execução imediata a mercado, modo de preenchimento FOK ou IOC e tem a finalidade de limitar o preço de venda de seu ativo.

--- Ordem buyLimit , como você disse, abaixo do preço ASK é mesmo uma compra que será executada quando o mercado fizer uma compra no preço da ordem.  A ordem sellLimt é para venda e usa o preço BID.


O TakeProfit é uma ordem limite, não é? Também deveria estar registrado no livro de ofertas. É normal essa discrepância que estou tendo nos resultados? Ou estou entendo as ordens limite de maneira errada? Ou simplesmente o TakeProfit não é uma ordem limite, mas sim de execução a mercado?

--- Não, não é uma ordem limite.  O TakeProfit/StopLoss nas ordens do MT5 são gatilhos.



Em tempo: Verifique se a BTG corrigiu o MT5. Teste aí, na janela do WIN mostre o book e abra a aba <DIÁRIO>.

 
Ricardo Branco #:
Então... O take Profit fica na corretora e dispara uma ordem a mercado quando é atingido.

Não fica no book de ofertas não.

Por isso algumas pessoas fazem seus robôs com saídas pendentes ao invés de a mercado.

Além do spread pode ocorrer o slippage. O take é acionado mas o movimento volta rápido e sua saída é pior do que o esperado.

Rapaz, eu jurava que o TakeProfit era uma ordem limite. Então o meu problema está aí...

Mas pro robô fazer saída com ordem pendente (assim como a entrada), a conta tem que ser do tipo NET, certo? Para ter somente uma ordem ativa. Então se eu estiver comprado com X lotes, faço uma venda (pendente) com a mesma quantidade.

Eu uso conta HEDGE, onde cada ordem é administrada de maneira independente, pois meu robô pode ter até 3 ordens abertas simultaneamente.

Sabe se tem como fazer um TakeProfit usando ordem limite se a conta for tipo HEDGE? Senão o jeito vai ser reescrever meu robô pra funcionar de maneira um pouco diferente...

Rogerio Giannetti Torres #:

Em tempo: Verifique se a BTG corrigiu o MT5. Teste aí, na janela do WIN mostre o book e abra a aba <DIÁRIO>.

Qual problema a BTG tinha? Eu operava pela XP, mas os servidores lá estavam muito instáveis recentemente... eu até briguei com eles e me ressarciram R$2.000,00 por perdas que ocorreram por essas instabilidades. Vim pra BTG e aparentemente está tudo ok.

Como é fim de semana, não consigo ver nada. Vou ver se na segunda-feira eu noto algo estranho.


Obrigado pelas respostas! Mas ficam as perguntas:

- Tem como fazer um TakeProfit usando ordem limite se a conta for tipo HEDGE?

Qual problema a BTG tinha?

 
Rafael Grecco #:

Rapaz, eu jurava que o TakeProfit era uma ordem limite. Então o meu problema está aí...

Mas pro robô fazer saída com ordem pendente (assim como a entrada), a conta tem que ser do tipo NET, certo? Para ter somente uma ordem ativa. Então se eu estiver comprado com X lotes, faço uma venda (pendente) com a mesma quantidade.

Eu uso conta HEDGE, onde cada ordem é administrada de maneira independente, pois meu robô pode ter até 3 ordens abertas simultaneamente.

Sabe se tem como fazer um TakeProfit usando ordem limite se a conta for tipo HEDGE? Senão o jeito vai ser reescrever meu robô pra funcionar de maneira um pouco diferente...

Qual problema a BTG tinha? Eu operava pela XP, mas os servidores lá estavam muito instáveis recentemente... eu até briguei com eles e me ressarciram R$2.000,00 por perdas que ocorreram por essas instabilidades. Vim pra BTG e aparentemente está tudo ok.

Como é fim de semana, não consigo ver nada. Vou ver se na segunda-feira eu noto algo estranho.


Obrigado pelas respostas! Mas ficam as perguntas:

- Tem como fazer um TakeProfit usando ordem limite se a conta for tipo HEDGE?

Qual problema a BTG tinha?

Eu tinha essa dúvida e pesquisando no fórum br, no fórum em inglês e conversando com um programador eu fui informado de que não tem como fazer o TP ser uma ordem limite numa conta hedge, pois ele abrirá uma nova posição, mesmo usando uma função chamada PositionCloseBy o programador me disse que isso ainda poderia fazer a ordem sofrer spread/slippage. Para o TP ser executado exatamente no seu preço tem que ser numa conta netting utilizando uma ordem tipo limit.

Ao menos se nossas corretoras disponibilizassem subcontas para criarmos. Eu sei que na XP se conversar com um assessor ele talvez consiga criar uma subconta, mas aí tem que ter assessor, pagar corretagem, etc..

 
paludo #:

Eu tinha essa dúvida e pesquisando no fórum br, no fórum em inglês e conversando com um programador eu fui informado de que não tem como fazer o TP ser uma ordem limite numa conta hedge, pois ele abrirá uma nova posição, mesmo usando uma função chamada PositionCloseBy o programador me disse que isso ainda poderia fazer a ordem sofrer spread/slippage. Para o TP ser executado exatamente no seu preço tem que ser numa conta netting utilizando uma ordem tipo limit.

Ao menos se nossas corretoras disponibilizassem subcontas para criarmos. Eu sei que na XP se conversar com um assessor ele talvez consiga criar uma subconta, mas aí tem que ter assessor, pagar corretagem, etc..

Valeu pela resposta! É a resposta que eu esperava mas não a resposta que eu queria... esse meu robô eu estou trabalhando há anos, está rodando liso há meses, do jeito que eu queria.

Ter que fazer alterações profundas agora vai ser um saco, pois não é simplesmente alterar o TP por uma ordem limite, pois meu robô conta quantas ordens estão ativas no momento pra fazer alguns ajustes... e na conta NET sempre vai ter uma ordem só, vou ter q alterar a lógica pra contar a quantidade de lotes, mas a quantidade que meu robô opera também varia dependendo de uns fatores... caramba, vai dar uma trabalhão...

Bom, na BTG eu consigo alterar minha conta de HEDGE para NET. Só vou precisar de uma conta demo do tipo NET pra testar o robô ajustado. Na XP eu consigo ter mais que uma conta e apesar de eu ter assessor, eu não pago corretagem, então isso não vai ser problema. Obrigado pela dica!

 
Rafael Grecco #:

Valeu pela resposta! É a resposta que eu esperava mas não a resposta que eu queria... esse meu robô eu estou trabalhando há anos, está rodando liso há meses, do jeito que eu queria.

Ter que fazer alterações profundas agora vai ser um saco, pois não é simplesmente alterar o TP por uma ordem limite, pois meu robô conta quantas ordens estão ativas no momento pra fazer alguns ajustes... e na conta NET sempre vai ter uma ordem só, vou ter q alterar a lógica pra contar a quantidade de lotes, mas a quantidade que meu robô opera também varia dependendo de uns fatores... caramba, vai dar uma trabalhão...

Bom, na BTG eu consigo alterar minha conta de HEDGE para NET. Só vou precisar de uma conta demo do tipo NET pra testar o robô ajustado. Na XP eu consigo ter mais que uma conta e apesar de eu ter assessor, eu não pago corretagem, então isso não vai ser problema. Obrigado pela dica!

É eu tbm estou tendo que adequar meu robô a uma conta netting por causa disso hehe. No testador e na demo é executado certinho no preço do TP, mas na conta real sofre mt spread/slippage. Estraga a estatística do meu operacional..

sabe informar se na XP pode-se abrir quantas subcontas quiser com o assessor? ou apenas 2?

 
paludo #:

É eu tbm estou tendo que adequar meu robô a uma conta netting por causa disso hehe. No testador e na demo é executado certinho no preço do TP, mas na conta real sofre mt spread/slippage. Estraga a estatística do meu operacional..

sabe informar se na XP pode-se abrir quantas subcontas quiser com o assessor? ou apenas 2?

Cara, de cabeça eu não sei, pois nunca precisei abrir uma segunda conta. Mas não vejo necessidade de ter mais do que 2 se a ideia é ter uma conta cadastrada como Hedging e outra Netting.

Meu assessor está de férias e fiquei com o contato de um "reserva", então nem tenho como perguntar pra ele agora.

 

Bom, estudei um pouco sobre contas Netting (que eu nunca havia usado antes) e tem muitas limitações.

Vou ter que manter minha conta como Hedging mesmo e aceitar o spread/slipage do Take Profit.

Obrigado a todos que responderam minhas dúvidas!

 
Rafael Grecco #:

Bom, estudei um pouco sobre contas Netting (que eu nunca havia usado antes) e tem muitas limitações.

Vou ter que manter minha conta como Hedging mesmo e aceitar o spread/slipage do Take Profit.

Obrigado a todos que responderam minhas dúvidas!

amigo, quais limitações vc encontrou? pois estou na mesma situação que vc em passar meu EA para uma conta netting

 
Rafael Grecco #:



- Tem como fazer um TakeProfit usando ordem limite se a conta for tipo HEDGE?

Qual problema a BTG tinha?

Opa Rafael.

 Tem como fazer um TakeProfit (sic ... fechando a posição ) usando ordem limite se a conta for tipo HEDGE?

.............Não, não tem como, pois na ordem limite não tem como informar o ticket da posição a ser fechada.


 Qual problema a BTG tinha?

............ Acho que vc. já deve ter visto, o book fica congelado e dando msg de erro log.