Discussão do artigo "Automatização de estratégias de negociação em MQL5 (Parte 24): Sistema de negociação por rompimento da sessão de Londres com gerenciamento de risco e trailing stops" - página 2

Em que parte do código você pretendia usar a variável “MaxOpenTrades”? Ela está definida, mas nunca é referenciada.
Allan Munene Mutiiria #:

Quanto à sua segunda dúvida, o artigo explica isso, mas, supondo que o problema se deva a dados de teste insuficientes e para dar uma dica: quando o intervalo está sendo calculado, você sempre verá o status “Calculando...” até que haja dados suficientes para definir o intervalo da sessão de Londres ou qualquer outra sessão que você definir nas entradas. Supondo que você esteja usando as configurações padrão, com 3 horas antes da sessão de Londres, e que a data na captura de tela compartilhada seja 13 de fevereiro, duas barras após as 22h, o que equivale a 2 × 15 minutos = 30, o que resulta em 22h30, está fora do horário de cálculo do intervalo; portanto, os dados no painel devem continuar visíveis, já que o intervalo definido anteriormente ainda está em vigor, a menos que a primeira sessão ainda não tenha sido encontrada, e serão apagados assim que o cálculo do intervalo for concluído a partir da meia-noite. Veja abaixo:

Talvez seja necessário consultar a lógica abaixo para determinar o intervalo

e como ele é definido.

Veja a imagem abaixo; embora não saibamos o ano do seu teste, vamos considerar 2025. Se for 2020, como no seu caso, não temos dados de qualidade para esse ano; portanto, de qualquer forma, usaremos 2025 e, assim, o cálculo do intervalo deve começar à meia-noite.


Pela imagem, você pode ver que os dados às 23h55 ainda estão intactos. No entanto, quando chegar à meia-noite, devemos reiniciar. Veja abaixo.

Você pode ver que reiniciamos os dados à meia-noite para o cálculo do outro intervalo. Na verdade, quando o cálculo do intervalo é concluído, a visualização pode ajudar a entender o que realmente aconteceu. Por exemplo, no seu caso, usando as configurações padrão, veremos as barras de intervalo das 03h00 às 08h00, pois foi isso que definimos. Veja abaixo:

Espero que isso tenha esclarecido as coisas novamente. Você pode ajustar tudo de acordo com seu estilo de negociação. Para evitar os problemas que você está enfrentando, é recomendável usar dados de teste confiáveis. Obrigado.

Muito obrigado pela resposta completa.

Sim, eu li o artigo e segui as instruções para codificar minha própria versão até encontrar os problemas que descrevi. O que observei foi que o painel não atualizou, mesmo durante os horários padrão. Minha captura de tela tinha o objetivo de mostrar que, embora a caixa tivesse sido desenhada no gráfico e os dados tivessem sido coletados, o painel não havia sido atualizado. Além disso, não havia mensagens de erro nos logs relacionadas a preços ou níveis inválidos.

Adicionei mensagens de log à minha versão; a partir delas, percebo que o painel não é atualizado quando o intervalo é muito grande ou muito pequeno; então, isso pode ser parte do motivo.

Vou verificar novamente a qualidade dos dados de teste. E obrigado por indicar em qual par você fez o teste; certamente farei ajustes para os pares que escolhi.

Muito obrigado pela sua ajuda.

Kyle Young Sangster #:

Muito obrigado pela resposta detalhada.

Sim, eu li o artigo e segui as instruções para codificar minha própria versão até encontrar os problemas que descrevi. O que observei foi que o painel não atualizou, mesmo nos intervalos padrão. Minha captura de tela tinha o objetivo de mostrar que, embora a caixa tivesse sido desenhada no gráfico e os dados tivessem sido coletados, o painel não havia sido atualizado. Além disso, não havia mensagens de erro nos logs relacionadas a preços ou níveis inválidos.

Adicionei mensagens de log à minha versão; a partir delas, percebo que o painel não é atualizado quando o intervalo é muito grande ou muito pequeno; então, isso pode ser parte do motivo.

Vou verificar novamente a qualidade dos dados de teste. E obrigado por indicar em qual par você fez o teste; certamente farei ajustes para os pares que escolhi.

Muito obrigado pela sua ajuda.

Claro. De nada.

Obrigado por compartilhar seu código conosco.

Como eu mesmo já escrevi EAs dependentes de sessão, posso te dizer que o código só funciona se a sua corretora estiver sempre no fuso horário GMT+1 e também adotar o horário de verão britânico.

Em todos os outros casos, infelizmente, sua hora de início não está correta. Por quê? Porque a sessão de Londres começa às 8h, horário do Reino Unido. No inverno, são 8h GMT, e no verão, 7h GMT.

A função `TimeCurrent()` não retorna sua hora local, mas sempre a hora do servidor de negociação.