[Os indicadores não são devidamente instanciados quando chamados/criados a partir de um Indicador de tempo de trabalho diferente. - página 2
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
Você está repetindo "falhar em instanciar", mas isso não é exato. O indicador é instanciado em todos os casos.
O problema é que os dados não estão disponíveis sincronicamente, você tem que lidar com eles. NÃO é um bug MT5, é uma CARACTERÍSTICA.
Proponho parar a discussão e esperar a resposta SD.
Talvez eu não tenha articulado corretamente que não importa quantos loops e espera, você não poderá acessar os dados indicadores (de diferentes TF) até após a primeira passagem de (*edit) OnCalculate();
Estou perfeitamente disposto a aceitar que posso estar errado, e é por isso que tenho uma recompensa de 10 dólares se você puder demonstrar o contrário. Por favor... prove que estou errado. Preciso de uma solução para este bug estúpido, desculpe, quero dizer "recurso".
Talvez eu não tenha articulado corretamente que não importa quantos loops e espera, você não poderá acessar os dados indicadores (de diferentes TF) até após a primeira passagem de (*edit) OnCalculate();
Estou perfeitamente disposto a aceitar que posso estar errado, e é por isso que tenho uma recompensa de 10 dólares se você puder demonstrar o contrário. Por favor... prove que estou errado. Preciso de uma solução para este bug estúpido, desculpe, quero dizer "recurso".
Por que você precisa dele no primeiro "passe"? Se os dados necessários não estiverem disponíveis, espere até que eles estejam, é tudo.
Porque estou desenvolvendo um indicador que requer o acesso de dados do mesmo indicador (mesmo símbolo) em um período de tempo diferente. Uma vez que não processará até após o segundo tick, isto significa que o indicador não funcionará off-line, e só funciona quando o segundo tick chegar.
Por que temos que nos comprometer por causa deste bug? O que há nele para você defendê-lo tão furiosamente?
Porque estou desenvolvendo um indicador que requer o acesso de dados do mesmo indicador (mesmo símbolo) em um período de tempo diferente. Uma vez que ele não processará até depois do segundo tick, isto significa que o indicador não funcionará offline, e só funcionará quando o segundo tick chegar.
Por que temos que nos comprometer por causa deste bug? O que há nele para você defendê-lo tão furiosamente?
???
Eu não defendo nada, e certamente não "com fúria". Por favor, fique calmo.
???
Eu não defendo nada, e certamente não "furiosamente". Por favor, fique calmo.
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
[MQL5 BUG] Os indicadores não são devidamente instanciados quando chamados/criados a partir de um Indicador de tempo de trabalho diferente.
Alain Verleyen, 2017.01.31 12:46
Ok, você não acredita em mim, esse é o seu direito, mas está errado
Posso apenas sugerir que você escreva para o ServiceDesk, e por favor informe aqui a resposta deles.
OK.
Coloquei este trabalho para o caso de alguém estar interessado em fazer uma tentativa.
https://www.mql5.com/en/job/57516
Isto significa que se os dados estiverem imediatamente disponíveis para um script ou EA, então eles estariam igualmente disponíveis para o Indicator (como neste caso não é uma questão de disponibilidade de dados). O Indicador simplesmente não está instanciando antes da segunda passagem do OnCalculate() (também conhecido como o primeiro tick)
Você entende a palavra "disponibilidade" também literalmente. Enquanto alguns dados podem existir na memória do terminal, o próprio terminal pode conter alguma lógica de sincronização que bloqueia atualizações para qualquer intervalo de tempo enquanto os dados subjacentes são verificados para um (provavelmente outro) intervalo de tempo. Ou eles podem bloquear solicitações de dados de um indicador até que ele termine sua própria criação (lembre-se que os indicadores são gerenciados pelos chamados handles, enquanto especialistas e scripts não o fazem) e isto é lógico para mim. Estes são apenas suposições, que eu fiz do ponto de vista dos desenvolvedores da MQ. Você pode perguntar a eles diretamente através do service desk.
Seu trabalho é impossível de ser realizado devido ao ponto 3:
3. Deve acessar o buffer na Inicialização
Isto é apenas contra a arquitetura e documentação do terminal:
Você não pode se referir aos dados indicadores logo após sua criação, pois o cálculo dos valores indicadores requer algum tempo
Por favor, leia também sobre a função CopyBuffer:
Nota
Ao solicitar dados do indicador, se as séries de tempos solicitadas ainda não tiverem sido construídas ou precisarem ser baixadas do servidor, a função retornará imediatamente-1, mas o processo de download/construção será iniciado.
Ao solicitar dados de um Expert Advisor ou script, odownload do servidor será iniciado, se o terminal não tiver esses dados localmente, ou a construção de uma série de tempos requerida será iniciada, se os dados puderem ser construídos a partir do histórico local, mas ainda não estiverem prontos. A função retornará a quantidade de dados que estarão prontos no momento da expiração do timeout.
Assim, especialistas e scripts são processados de forma síncrona até um timeout pré-definido, mas indicadores - de forma assíncrona.
Quanto à sua tarefa específica, ela pode ser feita facilmente de outra forma. Você não é o primeiro que constrói um indicador sobre indicador e quer que ele funcione off-line. Use um timer.
Experimentei-o. Não funcionou.
Postar pergunta mais específica com um código de amostra. Pode ser um buggy. A abordagem funciona para mim.