Tp/Sl Offset existe no metatrader ? Pode ocorrer de "pular" os alvos e seguir no trade ?

 

Senhores, boa tarde!

Vendo alguns materiais de apoio, conheci o termo "Stop Offset", que seria aquele quando ocorre um gap entre um candle e outro e o valor do stop fica no meio do gap não tendo um tick com o valor exato do alvo.

Minha dúvida é:

1) no metatrader, se o preço esta acima do stop e/ou alvo a operação sera encerrada OU existe a possibilidade de "pular o sl/tp" e o trade seguir, ampliando ilimitadamente a distância dos alvos/stop ?

2) caso existir, como tratar ?

É uma situação que me gerou preocupação.


Abraços

Daniel

 
Daniel Andrejczuk:


Olá Daniel,

1) O SL/TP são ordens tipo start e estas ficam na "pedra" quando o preço GAP ultrapassa o SL/TP. 

2) Tratar os GAP deve fazer parte da estratégia.. Eu opero manualmente commodities agrícolas e todos dias, raras exceções, eu tomo um GAP, a favor ou contra na abertura.

 

Opa Rogério, obrigado pela atenção!


Então "SE É POSSÍVEL" pular o tp/sl, mesmo sendo raro tem que tratar.

Poderia compartilhar de qual linha de pensamento você usa para tratar essa situação ?


Obrigado,

Daniel

 
Rogerio Giannetti Torres:

Olá Daniel,

1) O SL/TP são ordens tipo start e estas ficam na "pedra" quando o preço GAP ultrapassa o SL/TP. 

2) Tratar os GAP deve fazer parte da estratégia.. Eu opero manualmente commodities agrícolas e todos dias, raras exceções, eu tomo um GAP, a favor ou contra na abertura.

Oi Rogério,

Fiquei confuso agora.

Vc quer dizer que, quando ocorre gap nessas commodities agrícolas, o SL deixa a ordem pendurada no book, em vez de executar a mercado pelo preço que estiver disponível na hora do disparo?

Nesses casos que vc observou, como foi preparado o stop-loss? Vc apenas preencheu o campo SL na própria ordem que abriu a posição? Ou vc pendurou uma segunda ordem pra fazer o papel de stop-loss? Se for o último caso, foi uma ordem STOP ou STOP LIMIT ?

Eu fiquei confuso porque, pra implementar um stop-loss seguro (sem risco de prejuízos ilimitados), as ordens teriam que ser do tipo STOP (ORDER_TYPE_BUY_STOP e ORDER_TYPE_SELL_STOP), que lançam ordem A MERCADO com execução total garantida (desde que o book não esteja vazio), e não STOP_LIMIT (ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT), que deixam ordens penduradas na pedra, certo? 

Se isso que vc relatou tiver acontecido com o SL automático, isso significa que o SL e o TP emitem ordens do tipo STOP_LIMIT  e não do tipo STOP, certo ? Isso me parece meio absurdo, pois seria um SL inseguro, com risco de prejuízos ilimitados.

 

Ordens SL/TP nativas do MT5 são sempre disparadas à mercado quando o Preço atinge esses limites.

O que pode ocorrer em momentos de alta volatilidade e número excessivo de ordens/seg é o seu SL/TP ser disparado com um super-spread (offset). Nunca testei se realmente o MT5 respeita o Offset...

 
Trader_Patinhas:


Bom dia,

Trader_Patinhas, como você sabe o SL/TP automático são ordens start que ficam no SERVIDOR MT5 e são emitidas BUY/SELL a mercado quando LAST=PREÇO (SL/TP).  Para simplificar a resposta que eu dei ao Daniel eu coloquei fica na "pedra" em aspas, pois na verdade quando ocorre um GAP "grande" fazendo com que o preço de abertura ultrapasse o SL/TP estas continuam penduradas no SERVIDOR  pois não aconteceu LAST=PREÇO.

Ao contrário do que você diz o SL automático não tem nada de inseguro, muito pelo contrário, pois dá a  você a oportunidade de decidir o que fazer, vide o caso recente de VALE3, vide o caso Joesley Batista em maio 2017...,  e também temos os eventos corporativos, aqui faço uma ressalva, quando ocorre evento corporativo tudo que estava ofertado/pendurado na B3 é cancelado pelo sistema da B3.  

Por fim GAPs podem ocorrem em todos ativos,  não é surpresa nenhuma você ter um SL/TP pendurado no MT5 ou nos HBs ... não conheço o TRYD e PROFIT para comentar, mas posso remendar que eles seriam loucos de alterar uma característica firmada há mais de 20 anos nos HBs.

PS: Deveria ter dado ao Daniel uma explicação completa, na pressa cometi um grande erro, ao usar ficar na pedra , mesmo em apas,  a interpretação seria de que uma ORDEM tipo LIMIT seria emitida. Fica aqui minhas desculpas
 

Muito obrigado pela contribuição de todos, ajudou a definir o que tenho que fazer!

A VLID3 diariamente no intraday tem muitos gaps, vou fazer alguns testes nesse ativo.

Abraço.

 
Flavio Jarabeck:

Ordens SL/TP nativas do MT5 são sempre disparadas à mercado quando o Preço atinge esses limites.

O que pode ocorrer em momentos de alta volatilidade e número excessivo de ordens/seg é o seu SL/TP ser disparado com um super-spread (offset). Nunca testei se realmente o MT5 respeita o Offset...

Sim isso é o que eu sempre imaginei. A ordem stop é sempre disparada a mercado mesmo.

O Rogério Giannetti acabou de esclarecer na resposta seguinte dele: ele quis dizer que a ordem continua pendente no servidor (pendente de ser disparada a mercado, não na pedra). Eu agora entendi, mas fiquei com uma outra dúvida, vou perguntar na resposta dele.

 
Rogerio Giannetti Torres:

Bom dia,

Trader_Patinhas, como você sabe o SL/TP automático são ordens start que ficam no SERVIDOR MT5 e são emitidas BUY/SELL a mercado quando LAST=PREÇO (SL/TP).  Para simplificar a resposta que eu dei ao Daniel eu coloquei fica na "pedra" em aspas, pois na verdade quando ocorre um GAP "grande" fazendo com que o preço de abertura ultrapasse o SL/TP estas continuam penduradas no SERVIDOR  pois não aconteceu LAST=PREÇO.

Ao contrário do que você diz o SL automático não tem nada de inseguro, muito pelo contrário, pois dá a  você a oportunidade de decidir o que fazer, vide o caso recente de VALE3, vide o caso Joesley Batista em maio 2017...,  e também temos os eventos corporativos, aqui faço uma ressalva, quando ocorre evento corporativo tudo que estava ofertado/pendurado na B3 é cancelado pelo sistema da B3.  

Por fim GAPs podem ocorrem em todos ativos,  não é surpresa nenhuma você ter um SL/TP pendurado no MT5 ou nos HBs ... não conheço o TRYD e PROFIT para comentar, mas posso remendar que eles seriam loucos de alterar uma característica firmada há mais de 20 anos nos HBs.

PS: Deveria ter dado ao Daniel uma explicação completa, na pressa cometi um grande erro, ao usar ficar na pedra , mesmo em apas,  a interpretação seria de que uma ORDEM tipo LIMIT seria emitida. Fica aqui minhas desculpas

Agora entendi, Rogério. Vc quis dizer que fica pendente de ser disparada a mercado (na memória do servidor, mas não na pedra), certo?

Entendi também a parte da segurança: em situações extremas (Joesley, Caminhoneiros, Brumadinho, etc.) pode ser melhor o stop não disparar mesmo (sei lá, pode ser melhor ou não, depende da velocidade com que o preço cair).

Mas o que está sendo surpresa pra mim é isso aqui: continuam penduradas no SERVIDOR  pois não aconteceu LAST=PREÇO

A condição para disparo da ordem a mercado no stop-loss é LAST==PREÇO ???

Eu sempre achei que fosse LAST <= PREÇO no SELL_STOP e LAST >= PREÇO no BUY_STOP. 

Ou seja, eu sempre achei que disparasse com qualquer preço que ultrapasse o nível de stop, sem necessariamente ter que ocorrer um negócio exatamente no nível do stop. Entendeu o que eu pensava? 

Eu estava iludido? Só dispara se houver algum negócio exatamente no preço do stop ?

Se for assim, então o SL raramente vai funcionar (será inútil na prática) em ativos de pouca liquidez e/ou cujo preço é alto em relação ao tick de preço (fundos imobiliários, ouro, commodities agrícolas, ações pouco líquidas com preço acima de uns R$ 50 a R$ 100, etc.).

Preciso esclarecer isso na minha mente, pois parece que estou partindo de uma premissa errada.

 
Trader_Patinhas:


Agora entendi, Rogério. Vc quis dizer que fica pendente de ser disparada a mercado (na memória do servidor, mas não na pedra), certo?

- Exatamente isso.

Eu estava iludido? Só dispara se houver algum negócio exatamente no preço do stop ?

- Parece que você estava equivocado, vou te ilustrar um exemplo de  SL/TP pendurados que ocorre com  CCM, BGI e ICF.  Esses ativos são de baixíssima liquidez , costumam ter um spread de mais de 3 ticks com 1,2 ou três contratos ofertados em ASK e BID, dito isso vamos exemplificar uma ordem de compra de BGI:  No DOM temos  1(um) contrato ofertado em ASK=150,70 e um contrato ofertado em BID=150,50. Sua ordem compra  BUY(1,"BGIK19",ASK,BID,0,"  "), ou seja o SL = BID ofertado. Se a oferta de 1 contrato que estava no BID for cancelada a próxima oferta BID será qualquer uma abaixo de 150,50  ou seja abaixo do seu SL e este ficará pendurado até que seja executado uma oferta a 150,50.

PS: Não é comum ofertas em commodities agrícolas serem canceladas,  mas no IND os cancelamentos de ofertas ocorrem em alta frequência (só tem robôs operando) e pasme o SL e o TP ficam lá pendurados!




 

Rogério,

Eu fiquei pasmo com essa informação que vc passou, pois vejo que há muito tempo tenho trabalhado com uma premissa errada.

Fui rever meus primeiros estudos e percebi que foi a própria documentação do MQL5 me ludibriou.

Veja só: no help do MT5, que foi a minha primeira fonte de estudo, a gente encontra isso:

  • Buy Stop — a trade order to buy at the "Ask" price equal to or greater than the one specified in the order. 

  • Sell Stop — a trade order to sell at the "Bid" price equal to or less than the one specified in the order.

Fonte: https://www.metatrader5.com/en/terminal/help/trading/general_concept

Foi nessa fonte que eu aprendi e solidifiquei na minha mente como funciona o trigger de uma ordem stop no MT5.

Desde então, e até ter lido sua resposta ontem, eu trabalhava com a premissa de que a ordem STOP dispara sempre que o preço de mercado ultrapassa o preço do stop (mesmo que "pule" esse preço).

Eu agora há pouco já estava me preparando para postar essa referência para te contestar, quando me deparei com uma ressalva que existe mais adiante nesse mesmo link:

  • For symbols with Exchange Stocks, Exchange Futures and Futures Forts calculation modes, all types of pending orders are triggered according to the rules of the exchange where trading is performed. Usually, Last price (price of the last performed transaction) is applied. In other words, an order triggers when the Last price touches the price specified in the order.

Ou seja, essa premissa que eu tinha na minha mente vale somente no Forex, mas não nos contratos futuros da B3, cujo calculation mode é "Exchange Futures".

Obrigado, Rogério, por ter me tirado da ilusão. 

A sorte é que até o momento eu só tenho usado meus robôs de scalping no dólar, que tem muita liquidez em cada nível de preço do DOM e é raro um nível de preço ser pulado por puro cancelamento de ordens, sem ter tido pelo menos 1 negócio executado (embora aconteça uma vez ou outra), de modo que, na prática, eu nunca cheguei a ter um stop "pulado" (pelo menos não que eu tenha notado).

Para rodar o mesmo algoritmo que uso no DOL em ativos menos líquidos, vou precisar, em adição ao SL ordinário, inserir via programação uma funcionalidade pra detectar que o SL foi "pulado" e, nesse caso, aplicar a mesma lógica de disparo do SL que ocorre no mercado Forex (disparar ordem a mercado se BID<=SL, ou se ASK>=SL, conforme a direção da posição). Preciso fazer isso para me proteger, pois um dos meus robôs se baseia em fluxo de ordens e faz scalpings muito curtos, com SL pertinho do preço de mercado e abrindo posição com um grande volume de contratos, de modo que posso ter um prejuízo colossal se o SL for "pulado" (não precisa ter nenhum Joesley ou Brumadinho, me refiro a variações de preço cotidianas mesmo).

Uma pergunta: como alguém que opera contratos futuros na B3 pode ter coragem de deixar um robô que gerencia risco pelo SL padrão do MT5 operando desassistido e "ir pro cinema", sabendo que o SL pode ser "pulado", deixando a posição à deriva? Vc faz isso? Se faz, como lida com isso?

Basic Principles - Trading Operations - MetaTrader 5
Basic Principles - Trading Operations - MetaTrader 5
  • www.metatrader5.com
is an instruction given to a broker to buy or sell a financial instrument. There are two main types of orders: Market and Pending. In addition, there are special Take Profit and Stop Loss levels. is the commercial exchange (buying or selling) of a financial security. Buying is executed at the demand price (Ask), and Sell is performed at the...
Razão: