Backtest: Ordem de stop loss não é "executada" mesmo o preço atingindo o valor definido como stop loss
Estou com esse mesmo problema. Creio que seja dados de impossível acesso das corretoras.
Na conta Demo, funciona perfeitamente. Porém na conta real nada de acontecer.
Queria que abrisse e fechasse a casa tick/pip que eu colocasse a ordem de stop Loss.
Se souber de algo desse tipo, por favor me informe. E se eu souber te aviso.
Estou implementando uma estratégia simples, compra com a média ascendente e vende caso o candle feche abaixo da média. Então quando eu executo o backtest com a modelagem "Cada tick", ele executa da forma como é o esperado, imagem das operações que eu espero que o EA execute em anexo (mt5_cada_tick.PNG).
Porém se eu executo o mesmo backtest com a modelagem "Cada tick é baseado em um tick real" ele simplesmente não executa a ordem de stop loss. (Ver anexo mt5_tick_real.PNG)
Eu imaginei em um primeiro momento que por algum motivo teria pulado o stoploss, mas eu verifiquei os candles desse período de meia hora e com certeza esse stop deveria ter sido executado, além de outro detalhe que é o fato que essa ordem foi de fato executada no "fim do pregão", porém a ordem já havia sido enviada as 15h.
Alguém faz alguma ideia do que isso possa ser? Estou utilizando o contrato WIN$D, moeda em BRL.
Não encontrei outro caso de alguém que tenha passado por isso, desconfio que talvez seja os dados da corretora, acham que pode influenciar?
Estou com um problema parecido No modo de ticks reais. Coloco o stop, por exemplo, a 50 pontos no mi índice e quando o preço passa o stop, o prejuízo não bate com o valor pelo qual programei de stop loss. Já ate coloquei para rodar bem lentamente no momento que o preço ia pegar o stop, ele estava lá com 50 pontos certinho marcado na tela, mas quando aciona o stop em vez de dar um prejuízo de 10 reais, da um prejuízo de 3. ou seja, é como se o meu stop estivesse a 15 pontos.
Já desabilitei todas as funções de negociação que possivelmente pudessem estar sendo acionadas para fechar a operação, mas mesmo assim não resolveu.
O mesmo erro acontece com o takeprofit. Coloco a 120 pontos no mini índice, o valor da ordem aparece na tela certinho com o valor de 120 pontos, mas quando é executado no backtest de ticks reais, não pega o valor cheio. As vezes da 90 pontos e as vezes 80 pontos.
Até agora não entendi o motivo de estar acontecendo isso.
Estou com um problema parecido No modo de ticks reais. Coloco o stop, por exemplo, a 50 pontos no mi índice e quando o preço passa o stop, o prejuízo não bate com o valor pelo qual programei de stop loss. Já ate coloquei para rodar bem lentamente no momento que o preço ia pegar o stop, ele estava lá com 50 pontos certinho marcado na tela, mas quando aciona o stop em vez de dar um prejuízo de 10 reais, da um prejuízo de 3. ou seja, é como se o meu stop estivesse a 15 pontos.
Já desabilitei todas as funções de negociação que possivelmente pudessem estar sendo acionadas para fechar a operação, mas mesmo assim não resolveu.
O mesmo erro acontece com o takeprofit. Coloco a 120 pontos no mini índice, o valor da ordem aparece na tela certinho com o valor de 120 pontos, mas quando é executado no backtest de ticks reais, não pega o valor cheio. As vezes da 90 pontos e as vezes 80 pontos.
Até agora não entendi o motivo de estar acontecendo isso.
Os métodos de SL e TP do MT5 são Ordens à Mercado
não sabia disso, pensei que colocando ordem pendente ( TRADE_ACTION_PENDING ) resolveria meu problema. Então quer dizer que mesmo assim e, colocado buy/sell limit, as ordens de SL e TP serão a mercado? Não faz muito sentido
quando eu falo em valor cheio, estou me referindo a pegar a quantidade de pontos exata pelo qual especifiquei como ganho ou, no caso de loss, como perda.
e, com certeza não respeita fila no book :-)
não sabia disso, pensei que colocando ordem pendente ( TRADE_ACTION_PENDING ) resolveria meu problema. Então quer dizer que mesmo assim e, colocado buy/sell limit, as ordens de SL e TP serão a mercado? Não faz muito sentido.
- Faz sentido. É um mecanismo seguro de execução de Ordens. Se quiser TP exato, use Ordens Limitadas. para SL eu prefiro que seja à mercado, pois é o último recurso de uma posição perdedora. Usar Ordens Limitadas para SL pode ser perigoso. Mas, depende do mercado, ativo e liquidez.quando eu falo em valor cheio, estou me referindo a pegar a quantidade de pontos exata pelo qual especifiquei como ganho ou, no caso de loss, como perda.
- sim, entendi. SL e TP quase sempre não irão te dar isso. Mesmo com um mercado super-líquido. Tudo depende das condições do mercado naquele exato momento do disparo do SL/TP.
;)
Eu enfrento esse problema há vários anos.
Nunca consegui corrigir 100%, sempre que eu rodo backtest nos meus EAs acontece essas distorções, principalmente se tento rodar varios meses ou anos pelo single test (teste único), pois sempre vai existir um dia ou outro com problema.
Eu acredito que isso acontece por falhas nos dados fornecidos pelas corretoras.
Em determinados momentos do histórico, os valores do bid/ask são perdidos ou perdem a sincronia com as barras de 1 minuto. Então o MT5 entende que existe esse "gap" entre os preços, porém não existiu no mercado "ao vivo".
Os moderadores do forum costumam dar respostas padrão tipo: "Isso é normal do mercado", porém eu já fiz diversos testes e comparações, na maioria das vezes não foi distorção do mercado e sim na qualidade dos dados fornecidos pelas corretoras mesmo.
Uma forma que eu tento contornar esse problema é rodar o backtest em corretoras diferentes e depois comparar o resultado das operações. Infelizmente é muito mais trabalhoso, mas se você quiser se aproximar da realidade eu acredito ser a melhor maneira.
Acredito que os desenvolvedores do MT5 poderiam aperfeiçoar a leitura desses dados no backtest e quando o programa identificar esse tipo de distorção, tomaria a decisão mais próxima da realidade. Já tive alguns casos que o backtest deu diferença de quase mil pontos na saída da operação.
Enfim, enquanto isso continuamos dando nosso jeito, é aquele ditado: "quen não tem cão, caça com gato!" Rsrsrs
Eu enfrento esse problema há vários anos.
Nunca consegui corrigir 100%, sempre que eu rodo backtest nos meus EAs acontece essas distorções, principalmente se tento rodar varios meses ou anos pelo single test (teste único), pois sempre vai existir um dia ou outro com problema.
Eu acredito que isso acontece por falhas nos dados fornecidos pelas corretoras.
Em determinados momentos do histórico, os valores do bid/ask são perdidos ou perdem a sincronia com as barras de 1 minuto. Então o MT5 entende que existe esse "gap" entre os preços, porém não existiu no mercado "ao vivo".
Os moderadores do forum costumam dar respostas padrão tipo: "Isso é normal do mercado", porém eu já fiz diversos testes e comparações, na maioria das vezes não foi distorção do mercado e sim na qualidade dos dados fornecidos pelas corretoras mesmo.
Uma forma que eu tento contornar esse problema é rodar o backtest em corretoras diferentes e depois comparar o resultado das operações. Infelizmente é muito mais trabalhoso, mas se você quiser se aproximar da realidade eu acredito ser a melhor maneira.
Acredito que os desenvolvedores do MT5 poderiam aperfeiçoar a leitura desses dados no backtest e quando o programa identificar esse tipo de distorção, tomaria a decisão mais próxima da realidade. Já tive alguns casos que o backtest deu diferença de quase mil pontos na saída da operação.
Enfim, enquanto isso continuamos dando nosso jeito, é aquele ditado: "quen não tem cão, caça com gato!" Rsrsrs
Eu procuro sempre utilizar os candles fechados na criação dos setups, isso devido as corretoras não possuírem um histórico de ticks grande (salvam metade do dia anterior somente). Por isso busco sempre estratégias compatíveis com OHLC pela sua maior veracidade com o histórico disponível.
Outra situação que identifiquei que acontece, é a necessidade de encerrar as ordens antes do encerramento do pregão. Isso porque em muitos casos o pessoal acaba não considerando que o Backtest carrega a posição aberta para o próximo dia, e devido aos gaps de abertura, isso dá um resultado bem divergente.
É importante considerar uma latência quando utilizar uma estratégia que usa ticks, isso pelo impacto da fila do Book. O que diverge bastante quando executado no ambiente real e isso infelizmente o backtest não consegue te indicar.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Estou implementando uma estratégia simples, compra com a média ascendente e vende caso o candle feche abaixo da média. Então quando eu executo o backtest com a modelagem "Cada tick", ele executa da forma como é o esperado, imagem das operações que eu espero que o EA execute em anexo (mt5_cada_tick.PNG).
Porém se eu executo o mesmo backtest com a modelagem "Cada tick é baseado em um tick real" ele simplesmente não executa a ordem de stop loss. (Ver anexo mt5_tick_real.PNG)
Eu imaginei em um primeiro momento que por algum motivo teria pulado o stoploss, mas eu verifiquei os candles desse período de meia hora e com certeza esse stop deveria ter sido executado, além de outro detalhe que é o fato que essa ordem foi de fato executada no "fim do pregão", porém a ordem já havia sido enviada as 15h.
Alguém faz alguma ideia do que isso possa ser? Estou utilizando o contrato WIN$D, moeda em BRL.
Não encontrei outro caso de alguém que tenha passado por isso, desconfio que talvez seja os dados da corretora, acham que pode influenciar?