Ordens Limites sofrem Spread? - página 2

 
paludo #:

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

Dependendo do funcionamento do seu EA e do seu nível de conhecimento em programação, dá pra reprogramar pra funcionar em conta Netting sim.

Eu já tinha feito algumas alterações, tipo:

- Removi os valores de Take Profit das minhas ordens e os gravei em uma variável, aí era só abrir uma ordem pendente inversa nesse mesmo nível.

- Como meu robô operava com uma quantidade de lotes variável, sempre que houvesse variação (por exemplo, estava com 2 contratos comprados e meu robô comprava ou vendia um contrato), meu EA detectava essa diferença e ajustava a quantidade de contratos da ordem inversa que estava funcionando como Take Profit.

- Meu robô também usava em algumas ocasiões ordens pendentes inversas (se o preço subir, vende, se descer, compra -> estratégia em caso de mercado lateral). Mas pelo que li (não cheguei a testar), a conta Netting não permite ter ordens opostas ao mesmo tempo. Então é só programar o robô pra abrir uma ou outra baseado na direção que o mercado está indo.

Mas o que me fez desistir foi que eu uso 3 robôs em cada ativo (rodo 3 robôs em WIN e 3 robôs em WDO). Cada um de maneira independente, pois as vezes um deles sai com resultado negativo no dia mas os outros compensam. A conta Netting não permite isso, pois não considera o Magic Number usado pra fazer a operação de compra ou venda (um robô não pode estar comprado e outro vendido -> um iria cancelar o outro).

No geral dá pra fazer sim, apesar de dar trabalho repensar em toda estratégia.

Rogerio Giannetti Torres #:

Opa Rafael.

 Tem como fazer um TakeProfit (fechando a entada) 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 ordem para operação ser fechada.


 Qual problema a BTG tinha?

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



Valeu pela informação! Eu ainda não vi esse erro, mas estou operando pela BTG relativamente a pouco tempo. Vou ficar de olho!

 

Pessoal, na página anterior eu postei alguns resultados da minha conta real rodando um robô em WIN, onde todo Take Profit era ativado mas era executado perdendo entre 5 e 10 pontos.

Fiz um teste no WDO e o resultado é o mesmo. Segue um print de ontem na conta real:

Todo TakeProfit tem 0.5 de "desconto", sem exceção. Alguns sofrem até 1 ponto inteiro. É como se a corretora ficasse com 0.5 em todo trade propositalmente...

Como meu robô faz muitas operações, no final do dia o resultado da conta demo e da conta real (rodando o mesmo robô) fica muito diferente. Mas vou abrir outro tópico pra discutir isso, pois o assunto já é outro, "diferença de resultados entre conta demo e real". Estou fazendo vários testes e levantando algumas informações interessantes.

Rafael Grecco #:

...

- Meu robô também usava em algumas ocasiões ordens pendentes inversas (se o preço subir, vende, se descer, compra -> estratégia em caso de mercado lateral). Mas pelo que li (não cheguei a testar), a conta Netting não permite ter ordens opostas ao mesmo tempo. Então é só programar o robô pra abrir uma ou outra baseado na direção que o mercado está indo.

...

Só corrigindo a informação acima: dá pra ter ordens pendentes inversas. É possível ter uma ordem pendente BUY e uma ordem pendente SELL ao mesmo tempo.

EDIT!

Resultado em WDO atualizado, acabou de acontecer, vejam a imagem abaixo:

Tem TakeProfit em WDO sofrendo 2 pontos inteiros de slippage. Isso são R$20,00 por mini-contrato. As duas últimas ordens dessa lista tiveram o TP ativaos em 5166, uma saindo em breakeven e outra com R$50,00 de lucro, ou seja, resultado final R$50,00.

Mas devido ao slippage, ambos os TakeProfit só foram executados 2 pontos abaixo, em 5164. Resultados de R$20,00 negativo e R$30,00, resultado final R$10,00 (onde era pra ser R$50,00).

Já da pra imaginar no final do dia que o resultado na conta Real é MUITO diferente da conta Demo, mesmo usando entrada em ordem limite (no livro) e TakeProfit em todas as ordens. Estou testando duas soluções diferentes, mas vou deixar pra compartilhar em outro tópico.

 
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

Meio atrasado na conversa mas sobre, "o take profit eh uma ordem limite". Isso depende do servidor da corretora e nao temos como influenciar, o que acontece eh que normalmente para facilitar o usuario eles deixam ser ordem a mercado.

Entretanto sempre na corretora eh bom testar, se tu abrir uma posicao. Vai ser chamado um X de margem, se tu puxar o TP da posicao para algum determinado valor e voce reparar que o X de margem eh maior. Entao sim, seu TP eh uma ordem limitada!

Sobre as imagens que postou elas ajudariam mais, se fosse na visao de ordem ou como deal para conseguir ver qual preco voce mandou e qual recebeu. Se foi a mercado por exemplo, vai aparecer market....

 
Ricardo Rodrigues Lucca #:

Meio atrasado na conversa mas sobre, "o take profit eh uma ordem limite". Isso depende do servidor da corretora e nao temos como influenciar, o que acontece eh que normalmente para facilitar o usuario eles deixam ser ordem a mercado.

Entretanto sempre na corretora eh bom testar, se tu abrir uma posicao. Vai ser chamado um X de margem, se tu puxar o TP da posicao para algum determinado valor e voce reparar que o X de margem eh maior. Entao sim, seu TP eh uma ordem limitada!

Sobre as imagens que postou elas ajudariam mais, se fosse na visao de ordem ou como deal para conseguir ver qual preco voce mandou e qual recebeu. Se foi a mercado por exemplo, vai aparecer market....

Obrigado pela informação! Mas eu confirmei que é "à mercado" mesmo. E a margem necessária para eu operar não varia com o tamanho do TP.

Mas já estou testando uma variação do meu robô que eu ajustei para operar em uma conta Netting, assim eu uso uma ordem limite contrária como TakeProfit, sem sofrer com slippage.

Esse robô ajustado está rodando em conta demo pra testar se não surgiu nenhum bug nos ajustes que eu fiz. Em breve vou rodar na conta real e comparar os resultados.

 

Boa tarde! Esse será meu último post sobre esse assunto aqui (eu disse que iria abrir um novo tópico, mas acho que não vale a pena). É uma leitura meio longa, então só vou deixar registrado aqui pra quem tiver interesse.

Depois de testar muitas configurações diferentes, comparando o resultado de conta demo x conta real, cheguei às seguintes conclusões (que podem ser óbvias para muita gente):


1- Se seu robô trabalha com alvos grandes e/ou faz poucas operações no dia, a diferença entre usar ordens limite ou à mercado será muito pequena.

Lembrando: Ordens limite ficam registradas no livro na B3 e não sofrem spread ou slippage. Ordens Stop e Take Profit são ordens à mercado!

Nesse caso, acho que compensa fazer um robô usando ordem à mercado (eu acho mais fácil/simples de programar) sem se preocupar com ordens limite. A diferença entre conta demo e conta real provavelmente será de poucos Reais.


2- Se seu robô trabalha com alvos curtos e/ou faz muitas operações no dia, a diferença entre usar ordens limite ou à mercado pode ser a diferença entre terminar o dia com lucro ou prejuízo.

Vou citar meu caso como exemplo: Meu robô faz muitas operações. Pode fazer mais de 50 operações em um dia, sempre com alvo relativamente curto (uma média de 100 pontos no WIN, por exemplo).

Cada ordem à mercado (como o Take Profit, que meu robô estava usando em todas as ordens) sofre um slippage entre 5 e 20 pontos. São pelo menos 5 pontos se a volatilidade está baixa e uns 20 se está alta (detalhe: sem considerar volatilidade em notícias de alto impacto, pois fica completamente imprevisível, não recomendo operar nessas horas).

Vou usar como média 15 pontos. Se meu robô fizer 50 operações, são 50 x 15 pontos = 750 pontos somente de slippage para cada mini-contrato. Obviamente meu robô não acerta 100% das operações. Vamos dizer que acerte 60%, sendo que 30% sai em breakeven (zerado) e 10% com prejuízo.

Cálculo teórico em uma conta demo:

Lucro = 30 operações x 100 pontos = 3000 pontos
Breakeven = 15 operações x 0 = 0 pontos
Prejuízo = 5 operações x 200 pontos = 1000 pontos
Resultado Final = 2000 pontos

Comparando com a conta real, vamos subtrair o slippage médio: 50 x 15 = 750.
Resultado Final = 1250 pontos

Isso é aproximadamente 60% do resultado da conta demo, somente por causa do Take Profit (que é a ordem à mercado).
Operando em WDO o resultado é ainda pior! Na conta real eu tive um lucro de aproximadamente 40% do resultado da conta Demo.

Se consideramos um dia em que na conta demo teve um resultado baixo, tipo 500 pontos, pode ter certeza que a conta Real ficou no negativo.


Soluções:


1- A solução simples e rápida foi aumentar um pouco o Take Profit do meu robô para compensar o slippage. Por exemplo: aumentar todo Take Profit em 15 pontos.

O resultado final de cada operação na conta Real acabou sendo o esperado (pois os 15 pontos adicionais eram "perdidos" com o slippage). Mas também como era de se esperar, alterou muito o resultado total, pois a porcentagem de acertos do robô caiu muito, ficando com um resultado abaixo do esperado.


2- A solução ideal é alterar todo Take Profit para uma ordem limite inversa (assim como as entradas, que no meu caso já eram ordens limite).

Mas essa solução tem alguns problemas/desafios:

- Tem que alterar toda a lógica do robô. A parte difícil é não alterar nenhum parâmetro que altere o resultado final
- Tem q alterar a conta para Netting (e arranjar uma nova conta Demo em modo Netting para testar e comparar o resultado)
- Só funciona para estratégias que podem usar ordem limite. Não funciona com cruzamento de indicadores pois costumam usar ordens à mercado e nem com estratégias de breakout, que costumam usar ordens stop.
- Só pode rodar um único robô por ativo

Eu acabei escolhendo só 1 robô (eu usava 3 robôs em cada ativo) pra reescrever. Depois de fazer todas as alterações e testar na conta Demo em modo Netting, coloquei pra rodar em conta Real modo Netting. Agora a conta demo e a conta Real rodam praticamente iguais. Por acaso hoje o resultado final foi 100% igual entre ambas.


Então a solução ideal para ter uma conta Real com a mesma performance da uma conta Demo é usar conta no modo Netting e fazer o robô trabalhar somente com ordens limite, tanto entradas quanto saídas.

 

Pessoal, eu sei que esse tópico já tem alguns meses, mas só queria deixar a seguinte informação:

Tem como fazer um TakeProfit com ordem limit em conta hedge, sim!

O artigo abaixo fala exatamente sobre isso, e a classe apresentada pelo artigo requer poucas alterações no código original.

https://www.mql5.com/en/articles/5206

Using limit orders instead of Take Profit without changing the EA's original code
Using limit orders instead of Take Profit without changing the EA's original code
  • www.mql5.com
Using limit orders instead of conventional take profits has long been a topic of discussions on the forum. What is the advantage of this approach and how can it be implemented in your trading? In this article, I want to offer you my vision of this topic.
Razão: