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
Obrigado, mas preciso corrigir meu código também quando exact é true, pois não entendi direito esse parâmetro. A documentação em inglês do iBarShift está errada.
Acho que esse também é meu erro, o iBarShift deve retornar a barra que contém o horário especificado (não com o horário exato de abertura).
Posso usar sua função em minha biblioteca (com seus direitos autorais, é claro)? Se ela for mais rápida e correta, por que eu deveria reinventar a roda?)
Acho que esse também é o meu erro, iBarShift deve retornar a barra que contém o tempo especificado (não com o tempo exato de abertura).
Posso usar sua função em minha biblioteca (com seus direitos autorais, é claro)? Se ela for mais rápida e correta, por que eu deveria reinventar a roda?)
Obrigado, mas preciso corrigir meu código também quando exact é true, pois não entendi direito esse parâmetro. A documentação em inglês do iBarShift está errada.
O erro do mql5 está na função Bars(), e eu o relatei ao Service Desk.
A versão 880 corrigiu o erro em Bars(), e tudo está funcionando bem agora.
em m2 com m1, os valores em trudy, por algum motivo, têm valores diferentes de -1, e na barra zero há um retorno à primeira barra.
A função está incorreta em pelo menos dois pontos:
1) if(time>LastBar)
return(0);
Se exact=true, a lógica deve retornar -1 caso o tempo não pertença explicitamente à última barra, ou seja, se time>LastBar+PeriodSeconds(timeframe).
2) if(CopyTime(symbol,timeframe,time,1,checkcandle)==1)
...
return(-1);
Novamente, se exact=false, a barra mais próxima deve ser retornada, nesse caso Bars(symbol,timeframe)-1.
Acho que há um pequeno erro em seu código:
Se o último tick "abrir" uma nova barra, então if(time>LastBar) se tornará falso - porque agora time == LastBar
E mais tarde chegamos aqui:
E agora shift == 0, que retorna -1 em vez de 0!
Portanto, acho que isso:
deve ser alterado para
Calli
Acho que há um pequeno erro em seu código:
Se o último tique "abrir" uma nova barra, então if(time>LastBar) se tornará falso - porque agora time == LastBar
E mais tarde chegamos aqui:
E agora shift == 0 , que retorna -1 em vez de 0!
Portanto, acho que isso:
deve ser alterado para
Calli
Sua correção também funcionaria, mas o caso 'time==LastBar' é processado como um caso "normal".
A declaração
if(time>LastBar)foi adicionada como uma correção de erro se o tempo for maior que o tempo da barra atual 0.