Ficou sem alguma resposta ou entender alguma coisa sobre o MetaTrader/MQL? Pergunte aqui!

 
Vejo muitas perguntas sem respostas no fórum, e gostaria de reduzir algumas delas, embora existam várias perguntas repetitivas.
Então decidi criar essa thread para ajudar a quem ainda está com alguma dúvida, pois irei colocar ela como prioridade nas minhas respostas.
Antes de colocar a pergunta aqui, solicito apenas que estude e tente outras áreas do fórum, utilizando aqui como último recurso, justamente para filtrarmos de forma orgânica as perguntas repetitivas.
Sds.,
Rogério Figurelli
 
Oi Rogério, bom dia,
Por favor, gostaria de perguntar sobre recomendações para um backtest mais realista com ativos da B3. Entendo que quando se escolhe "1 minute OHLC" no StrategyTester, o Metatrader 5 acaba enviando para OnTick a ordem abaixo de preços, é isso?

Candle de alta: open, low, high e close
Candle de baixa: open, high, low e close

Entendo que isso acaba gerando uma distorção na simulação, pois não necessariamente o preço seguiu essa ordem de low-high ou high-close no candle. Para minimizar essas distorções, na entrada da operação com 1 minute OHLC cheguei a alterar a estratégia para tomar a decisão do sinal de entrada com base no MqlRates[1] (não usando valores do MqlRates[0], CSymbolInfo.Ask(), CSymbolInfo.Bid()), mas isso acaba limitando a estratégia. No caso de take profit e stop loss, entendo que não tem jeito de minimizar a distorção, concorda? Já que uma operação no StrategyTester pode dar take profit, enquanto na verdade ela poderia ter dado na realidade stop loss.

Nesse contexto, a única opção para usar no StrategyTester seria usar "Every tick based on real ticks"? Caso seja, você acha o histórico de ticks reais das corretoras brasileiras bom? Outro ponto, como os ticks reais demoram muito para serem testados, existe uma opção de rodar um backtest com múltiplas CPUs sem usar o otimizador (já que pelo otimizador não dá para ver no gráfico onde foi cada compra e venda)?

Obrigado.
 
Alexandre Costa:
Oi Rogério, bom dia,
Por favor, gostaria de perguntar sobre recomendações para um backtest mais realista com ativos da B3. Entendo que quando se escolhe "1 minute OHLC" no StrategyTester, o Metatrader 5 acaba enviando para OnTick a ordem abaixo de preços, é isso?

Candle de alta: open, low, high e close
Candle de baixa: open, high, low e close

Entendo que isso acaba gerando uma distorção na simulação, pois não necessariamente o preço seguiu essa ordem de low-high ou high-close no candle. Para minimizar essas distorções, na entrada da operação com 1 minute OHLC cheguei a alterar a estratégia para tomar a decisão do sinal de entrada com base no MqlRates[1] (não usando valores do MqlRates[0], CSymbolInfo.Ask(), CSymbolInfo.Bid()), mas isso acaba limitando a estratégia. No caso de take profit e stop loss, entendo que não tem jeito de minimizar a distorção, concorda? Já que uma operação no StrategyTester pode dar take profit, enquanto na verdade ela poderia ter dado na realidade stop loss.

Nesse contexto, a única opção para usar no StrategyTester seria usar "Every tick based on real ticks"? Caso seja, você acha o histórico de ticks reais das corretoras brasileiras bom? Outro ponto, como os ticks reais demoram muito para serem testados, existe uma opção de rodar um backtest com múltiplas CPUs sem usar o otimizador (já que pelo otimizador não dá para ver no gráfico onde foi cada compra e venda)?

Obrigado.

Olá  Alexandre Costa, boa tarde, boa pergunta, note que além da configuração escolhida, é importante compatibilizar o código de seu EA com ela. Por exemplo, se você vai utilizar "1 minute OHLC" minha recomendação é alterar o robô para processar apenas a cada novo candle em M1.
Tudo seria muito fácil se fosse só isso, entretanto, por mais ajustes que você faça nesse sentido, note que ordens pendentes e limites de S/L e T/P fazem parte da simulação também e são assíncronos, ou seja, podem ocorrer em qualquer tick. Dessa forma, a lógica é que quanto menores forem seus limites, mais suscetíveis a erros seus EAs estarão no backtesting "1 minute OHLC".
Sem dúvida utilizar o tick a tick, principalmente baseado em ticks reais, é a melhor alternativa para não depender do código de EA, e a qualidade das corretoras depende muito de ativo para ativo.
Para meus robôs, tanto B3 como Forex, prefiro desenvolver tecnologias específicas para isso, várias delas usando aprendizado de máquina, buscando endereçar esses problemas e também aferir melhor a qualidade de cada uma para cada caso específico, fazendo uma comparação das três modalidades (OHLC, tick virtual e tick real).
Espero que a resposta ajude, qualquer outro ponto é só avisar.
Sds.,
Rogério Figurelli

 
Rogerio Figurelli:

Olá  Alexandre Costa, boa tarde, boa pergunta, note que além da configuração escolhida, é importante compatibilizar o código de seu EA com ela. Por exemplo, se você vai utilizar "1 minute OHLC" minha recomendação é alterar o robô para processar apenas a cada novo candle em M1.
Tudo seria muito fácil se fosse só isso, entretanto, por mais ajustes que você faça nesse sentido, note que ordens pendentes e limites de S/L e T/P fazem parte da simulação também e são assíncronos, ou seja, podem ocorrer em qualquer tick. Dessa forma, a lógica é que quanto menores forem seus limites, mais suscetíveis a erros seus EAs estarão no backtesting "1 minute OHLC".
Sem dúvida utilizar o tick a tick, principalmente baseado em ticks reais, é a melhor alternativa para não depender do código de EA, e a qualidade das corretoras depende muito de ativo para ativo.
Para meus robôs, tanto B3 como Forex, prefiro desenvolver tecnologias específicas para isso, várias delas usando aprendizado de máquina, buscando endereçar esses problemas e também aferir melhor a qualidade de cada uma para cada caso específico, fazendo uma comparação das três modalidades (OHLC, tick virtual e tick real).
Espero que a resposta ajude, qualquer outro ponto é só avisar.
Sds.,
Rogério Figurelli

Oi Rogério,

Obrigado pelo retorno, por compatibilizar o EA com a configuração de backtest entendo que você está falando de nunca usar o índice 0 do array de MqlRates e indicadores (usar 1 ou algum índice mais antigo), além de não usar SL e TP muito curtos (para minimizar resultados errados), ou tem algo mais?

Obrigado!

 

Olá Rogerio, como vai? 


Busquei algumas respostas nos fóruns e tirei algumas dúvidas. No entanto, não encontrei outras. Poderia, por gentileza, me ajudar? 

Estou programando um EA simples (cruzamento de médias) apenas para testar as minhas habilidades. Estou tentando operar no mini dólar e mini índice .. no entanto, quando coloco no volume a quantidade 1, os resultados aparecem como se eu estivesse operando 100 contratos no dólar. O que poderia estar acontecendo? 

Desde ja, obrigado. 

 

Estou com um problema ao tentar utilizar minha conta real no Metatrader5, quando coloco o login e senha e escolho a conta real, no caso CLEAR-PRD, aparece as seguinte mensagem:

NO CONNECTION TO CLEAR-PRD

AUTHORIZATION ON CLEAR-PRD FAILED (ACCOUNT DISABLED)

Já a conta demo conecta normalmente.

Alguém já passou por este problema?

 
andersonborgeskfs:

Estou com um problema ao tentar utilizar minha conta real no Metatrader5, quando coloco o login e senha e escolho a conta real, no caso CLEAR-PRD, aparece as seguinte mensagem:

NO CONNECTION TO CLEAR-PRD

AUTHORIZATION ON CLEAR-PRD FAILED (ACCOUNT DISABLED)

Já a conta demo conecta normalmente.

Alguém já passou por este problema?

Rogério, boa tarde, fiquei na dúvida se outros podem tentar ajudar quando souber a resposta ou não para seu tópico? Pois você colocou que você vai responder então não sei se estou sendo intrometido rsrsrs. Se eu estiver pode puxar minha orelha viu.

Vou tentar ajudar nesse do Anderson:

Olá Anderson, boa tarde,

..."ACCOUNT DISABLED"... 

Na Clear, em Plataformas, quando você assina o MT5 tem um quadrinho pequenino ao lado "Renovação Automática". Se você não marcá-lo, sua assinatura é cancelada quando expira. E as datas são curtas.

A outra possibilidade é conta negativa. Se você tiver na Corretora com saldo negativo sem cobertura a mais de 15 dias, geralmente as plataformas são canceladas automaticamente.

Mas de qualquer forma, parece ser mais um problema a ser resolvido junto a Corretora.

Espero ter ajudado. Abraços.

 
Alexandre Costa:

Oi Rogério,

Obrigado pelo retorno, por compatibilizar o EA com a configuração de backtest entendo que você está falando de nunca usar o índice 0 do array de MqlRates e indicadores (usar 1 ou algum índice mais antigo), além de não usar SL e TP muito curtos (para minimizar resultados errados), ou tem algo mais?

Obrigado!

Olá  Alexandre Costa, não estou me referindo a nenhuma abordagem em específico, o que quero dizer por compatibilizar é evitar perder informações. Por exemplo, se para sua estratégia o processamento dos ticks faz grande diferença, então você tem que escolher entre utilizar o critério tick a tick no backtesting ou mudar seus algoritmos para processarem de outra forma.
Sds.,
Rogério Figurelli

 
VictorCosta67:

Olá Rogerio, como vai? 


Busquei algumas respostas nos fóruns e tirei algumas dúvidas. No entanto, não encontrei outras. Poderia, por gentileza, me ajudar? 

Estou programando um EA simples (cruzamento de médias) apenas para testar as minhas habilidades. Estou tentando operar no mini dólar e mini índice .. no entanto, quando coloco no volume a quantidade 1, os resultados aparecem como se eu estivesse operando 100 contratos no dólar. O que poderia estar acontecendo? 

Desde ja, obrigado. 

Olá  VictorCosta67, tudo bem e você? Para um melhor diagnóstico nessa situação seria necessário analisar seu código fonte. Seja como for, minha suspeita é que esse valor de volume esteja sendo forçado em alguma área do código (hard coded).
Sds.,
Rogério Figurelli

 
Ruy Christian Hoffmann:

Rogério, boa tarde, fiquei na dúvida se outros podem tentar ajudar quando souber a resposta ou não para seu tópico? Pois você colocou que você vai responder então não sei se estou sendo intrometido rsrsrs. Se eu estiver pode puxar minha orelha viu.

Vou tentar ajudar nesse do Anderson:

Olá Anderson, boa tarde,

..."ACCOUNT DISABLED"... 

Na Clear, em Plataformas, quando você assina o MT5 tem um quadrinho pequenino ao lado "Renovação Automática". Se você não marcá-lo, sua assinatura é cancelada quando expira. E as datas são curtas.

A outra possibilidade é conta negativa. Se você tiver na Corretora com saldo negativo sem cobertura a mais de 15 dias, geralmente as plataformas são canceladas automaticamente.

Mas de qualquer forma, parece ser mais um problema a ser resolvido junto a Corretora.

Espero ter ajudado. Abraços.

Olá  Ruy Christian Hoffmann, muito obrigado, sua resposta me parece que está correta, mas seja como for, ajuda e participação é sempre bem-vinda, seja o tópico que for nesse fórum.
Sds.,
Rogério Figurelli

 
Comprei VPS e meu saldo está bloqueado