SL e TP sendo executados com 1 tick de diferença em ordens limit

 

Ola a todos, estou desenvolvendo um robo para operar o mini-dolar e percebi uma situação estranha e gostaria de saber se isso tem a ver com o meu robo ou se é uma característica da B3.

Quando envio uma ordem limit ja com o SL e o TP, percebi que quando o meu SL ou TP é executado ele pega um preço com 1 tick contra a minha posição, ou seja se coloco um stop de 1.5 pontos eu tomo 2 pontos de loss, e o inverso também acontece se coloco um TP de 1.5 pontos eu tomo 1 ponto de gain. 

Alguém sabe me dizer porque isso acontece?


Muito Obrigado.

 

Isso acontece devido a dinâmica da mudança de preço, pelo spread e pelo tempo de execução entre o preço base que você pegou para fazer os cálculos e o preço do momento da execução.

 

É porque o TP e o SL disparam ordens a mercado (compram pelo preço ASK e vendem pelo preço BID).

No caso do TP, vc pode substitui-lo por uma ordem limite, eliminando essa perda de 1 tick de spread.

No caso do SL, não tem jeito, vc sempre vai ter que sair a mercado perdendo 1 tick.

 

Olá!

Este tipo de problema é bastante recorrente. O tamanho do slippage que você pode levar, tanto no seu TP quanto no seu SL, depende da volatilidade do mercado naquele momento.

Para contornar esse tipo de problema, eu desenvolvi uma classe de colocação de ordens limite, inclusive para SL. Minha correlação entre TP ideal / TP real antes era de 80% devido aos slippages. Hoje eu consegui convergir para um valor bem próximo a 100%. Da mesma forma, meu SL ideal / SL real girava em torno de 105% (ou seja, em geral, meu stop loss era 5% maior do que eu havia projetado). Hoje, consegui trazer para um valor bem próximo de 100%. 

Se você possui robôs scalpers como eu, esse tipo de solução traz ganhos imediatos. Para trades mais longos, isto é, aqueles que miram mais pontos não sei se valeria tanto à pena.

 
GustavoFonseca92:

Olá!

Este tipo de problema é bastante recorrente. O tamanho do slippage que você pode levar, tanto no seu TP quanto no seu SL, depende da volatilidade do mercado naquele momento.

Para contornar esse tipo de problema, eu desenvolvi uma classe de colocação de ordens limite, inclusive para SL. Minha correlação entre TP ideal / TP real antes era de 80% devido aos slippages. Hoje eu consegui convergir para um valor bem próximo a 100%. Da mesma forma, meu SL ideal / SL real girava em torno de 105% (ou seja, em geral, meu stop loss era 5% maior do que eu havia projetado). Hoje, consegui trazer para um valor bem próximo de 100%. 

Se você possui robôs scalpers como eu, esse tipo de solução traz ganhos imediatos. Para trades mais longos, isto é, aqueles que miram mais pontos não sei se valeria tanto à pena.

Como vc consegue implementar um stop-loss seguro com ordem limite? 

Se uma ordem limite comum for enviada à bolsa a um preço melhor que o de mercado, ela será executada imediatamente a preço de mercado.

Pra funcionar como stop-loss, terá que ser uma ordem do tipo "stop limit". Nesse caso, acho muito inseguro, pois, se o mercado passar rápido pelo stop-loss, a ordem pode não ser executada.

Somente uma ordem stop a mercado garante saída imediata se o preço atravessar o stop-loss (a não ser que o mercado entre em leilão, aí já era!).

Como vc implementa o seu SL com ordem limite?

 
Trader_Patinhas:

Como vc consegue implementar um stop-loss seguro com ordem limite? 

Se uma ordem limite comum for enviada à bolsa a um preço melhor que o de mercado, ela será executada imediatamente a preço de mercado.

Pra funcionar como stop-loss, terá que ser uma ordem do tipo "stop limit". Nesse caso, acho muito inseguro, pois, se o mercado passar rápido pelo stop-loss, a ordem pode não ser executada.

Somente uma ordem stop a mercado garante saída imediata se o preço atravessar o stop-loss (a não ser que o mercado entre em leilão, aí já era!).

Como vc implementa o seu SL com ordem limite?

Descobri uma forma.

Mas nem sempre consigo colocar ordem limite. Para isso utilizo, ordem a limite como um fusível. Caso ela falhe, dentro de uma tolerância de tempo, eu jogo uma ordem a mercado como emergência.

Razão: