Discussão do artigo "Que testes deve passar o robô de negociação antes da publicação no Mercado" - página 15
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Olá.
Como posso verificar se tenho espaço suficiente em disco?
Agora esta mensagem.
Na terceira tentativa, ele passou sem fazer nenhuma alteração
Olá.
Como posso verificar se tenho espaço suficiente em disco?
Agora esta mensagem
Na terceira tentativa, ele foi aprovado sem que nenhuma alteração fosse feita
Nesse caso, a mensagem não está totalmente correta. O problema estava na RAM.
A memória do servidor foi adicionada.
Nesse caso, a mensagem não está totalmente correta. O problema estava na RAM.
A memória do servidor foi adicionada.
Muito obrigado.
Terminal MT5. Corretora RoboForex, instrumento - CFD AAPL.
Na primeira execução no testador de robôs 2021.05.05.05 16:30:00 recebi a mensagem " failed market buy 0.1 AAPL [Market closed] ", erro 4756, retcode 10018.
Dia útil - quarta-feira, horário de negociação, tick às 16:30:00 passa, por que razão o mercado está fechado - não está claro.
A verificação de mercado fechado não está na lista de verificações obrigatórias, ou seja, (teoricamente) a validação das corujas seria aprovada.
Mas!
Se, depois de receber esse erro, você não atrasar o tempo em 2 a 3 horas, ele não será aprovado - o erro crítico "Stack is full" será recebido e o testador será encerrado. Mesmo que seja aprovado, não gosto muito de erros no registro. Não deveria haver nenhum.
Analisei cuidadosamente todas as funções - não encontrei como obter o evento " Market closed ". Parece que ele não existe.
Pergunta para o autor do artigo:
- Como lidar com isso?
Se houver uma função que ajude a evitar esse erro, por favor, avise-me, ficarei grato.
Na negociação real, alguns minutos antes do fechamento do dia e de 5 a 10 minutos após o início de um novo dia, quase todas as corretoras fecham a negociação. Mas as cotações continuam. Portanto, o Expert Advisor, se abrir no mercado e houver um sinal permissivo, emite folhas de erros. É bom que essa "quebra de fumaça" não seja trabalhada no testador.
Analisei cuidadosamente todas as funções - não encontrei como obter o evento " Market closed ". Parece que ele não existe.
Pergunta para o autor do artigo:
- Como lidar com isso?
Se houver uma função que ajude a evitar esse erro, por favor, avise-me, ficarei grato.
Na negociação real, alguns minutos antes do fechamento do dia e de 5 a 10 minutos após o início de um novo dia, quase todas as corretoras fecham a negociação. Mas as cotações continuam. Portanto, o Expert Advisor, se abrir no mercado e houver um sinal permissivo, emite folhas de erros. É bom que essa "quebra de fumaça" não seja trabalhada no testador.
As cotações aparecem, mas não há ticks. OnTick() funciona somente se houver outro tick.
As cotações estão chegando, mas não há ticks. OnTick() funciona somente se houver outro tique.
Para esclarecer:
- estamos falando do testador
- a abertura da sessão de CFD ocorre, via de regra, com um gap menor ou maior, mas gap, ou seja, o preço de abertura calculado pelo robô está no nível de "open yesterday"
- no primeiro tick, exatamente às 16:30:00, o robô tenta abrir uma negociação.
É aqui que acontece o problema: - exatamente às 16:30:00. o mercado ainda está fechado.. Talvez por uma fração de segundo. Mas o testador, nesse momento, está lançando uma folha de erros até que a pilha transborde. O gráfico permanece no primeiro tick.
Resolvi esse problema da seguinte forma:
- defina a distância do preço atual para o preço de abertura.
- quando ocorre um erro, eu redefino a variável do preço de abertura. Ele obtém o valor novamente, mas por 50-100 pips do preço atual.
- ocorre apenas um erro e, em seguida, ele é negociado normalmente.
Mas essa é uma solução meio que indireta. Há algumas outras opções:
- adicione o horário de abertura da sessão à barra de menu e comece a negociar com um atraso de 5 a 10 minutos
- controle o tempo entre o fechamento da primeira barra e a abertura da barra zero. Se houver uma lacuna, faça um atraso.
Nesse caso, isso ajuda a evitar muitos erros. Mas isso não resolve o "problema da meia-noite". As corretoras fecham as negociações por 10 a 15 minutos, mas as cotações ainda estão fluindo, o robô tenta negociar e gera repetidamente o erro "Market is closed".
É impossível evitar isso com as ferramentas disponíveis.
Se houvesse uma função que detectasse a disponibilidade real do mercado, não haveria problemas.
Ah, sim, sobre o OnTick. É verdade, mas...
A partir do OnTick, chamo a função Trade() apenas uma vez por minuto na abertura de uma nova barra e, mais adiante no código , em vez de retornar, tenho uma chamada repetida para Trade(), nem sempre tudo o que é necessário é executado em um único tick, ou seja, na minha variante, após abrir ou fechar uma negociação, o código rola pelo menos mais uma vez. Aparentemente, esse é o motivo pelo qual o código fica preso no erro "Market is closed" (O mercado está fechado)
Para esclarecer:
- trata-se do testador
- a abertura da sessão de CFD ocorre, via de regra, com um gap menor ou maior, mas gap, ou seja, o preço de abertura calculado pelo robô está no nível de "open yesterday"
- no primeiro tick, exatamente às 16:00, o robô tenta abrir uma negociação.
Talvez seja melhor dar uma olhada na especificação?
Por que o primeiro tick às 16:00 se o horário do primeiro tick é às 16:30?
Não seria melhor dar uma olhada na especificação?
Por que o primeiro tique às 16:00 se a hora do primeiro tique é 16:30?
Sim, é claro que é 16:30
Obrigado por notar o erro de digitação - corrigi o texto.
Adicionei uma linha a OnTick().
Esse problema específico foi resolvido - coloquei um contador de erros na função de abertura de negociações e, na execução anual, não há erros.
Isso significa que são apenas essas frações de segundo (ou segundos/minutos) ao abrir uma sessão.
Mas eu ainda gostaria de ter uma função que informasse sobre a disponibilidade do mercado.
Gostaria de saber se as pessoas que se dão ao trabalho de superar os problemas do testador automático,
usam seus robôs?
É que, às vezes, são resolvidos erros que, na vida real, causariam pelo menos uma repreensão nas revistas.
Posso entender quando o testador automático dá dicas sobre lotes estranhos/etapas/itens/balance_in_1 cent....
...mas a coisa que o robô teve que pisar na operação normal - tentativas de fazer algo fora da sessão de negociação, ou o sinalizador trading_forbidden - é como?
Você nunca executou seu robô, exceto o testador local????