Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 850
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
Corrigir o indicador de curva. Pode traçar uma linha apenas no recálculo completo, que é feito por comando do menu de contexto.
Existe também um em mql4.
Obrigado.
Trabalhou-o com uma muleta). Precisava de actualizar o indicador após o arrastamento manual de uma linha vertical, a partir da qual leva o seu tempo. Usei a função de arrastar um objecto e coloquei nele a função de mudar o TF com um retorno ao inicial. Mas por alguma razão a actualização é atrasada, cerca de vários segundos. A função da comutação TF é demasiado lenta, não a compreendo.
Esta função é assíncrona. Apenas devolve o resultado do comando na fila do evento.
Para actualizar imediatamente, é necessário executar o comando ChartRedraw() após o comando de mudança de gráfico
Esta é, evidentemente, uma abordagem errada. Se quiser actualizar o gráfico apenas após a conclusão da mudança de linha, o ciclo de recálculo do indicador deve ser chamado não de OnCalculate() mas de ChartEvent() - a mudança da linha é capturada - a função de recálculo do indicador é chamada, que irá executar todo o ciclo de recálculo da linha com os novos dados (a linha é necessária para alguns dados, não é?).
Ou o indicador simplesmente não é feito correctamente e não actualiza a barra de zero sobre os dados actuais, e você chutou-a?
Qualquer pessoa pode ajudar a fixar o código EA no MT5?
Já li os manuais, mas não consigo vencer 2 vars. ao compilar.
declaração de 'xxxx' esconde a declaração global
и
possível perda de dados devido à conversão do tipo
Eu apenas fixei estupidamente os nomes das variáveis globais e fiz corresponder os tipos.
São 10.000.000 que pode cobrar - por ter superado a sua preguiça.
Apenas corrigiu sem rodeios os nomes das variáveis globais e alinhou os tipos.
Deves-me 10 000 000 por teres superado a tua preguiça.
Muito obrigado.
Tenho vergonha de mostrar como o consertei)
int CountTrades(posição longaID1)
Esta função é assíncrona. Apenas devolve o resultado do comando na fila do evento.
Para actualizar imediatamente, é necessário executar o comando ChartRedraw() após o comando de mudança de gráfico
Esta é, evidentemente, uma abordagem errada. Se precisar de actualizar o gráfico apenas após a conclusão da mudança de linha, o ciclo de recálculo do indicador deve ser chamado não de OnCalculate() mas de ChartEvent() - o deslocamento da linha é capturado - a função de recálculo do indicador é chamada, que irá realizar o ciclo completo de recálculo da linha com os novos dados (a linha é necessária para alguns dados, não é?).
Ou talvez o indicador tenha sido simplesmente incorrectamente actualizado e não actualiza a barra de zero nos dados actuais e fodeu-o?
O indicador conta as últimas barras não calculadas. E depois de arrastar a vertical, deve recalcular completamente após a leitura do novo tempo vertical. Escrevi sobre isso aqui e adicionei imagens de ecrã de como funciona.
Obrigado, vou tentar implementar a sua ideia. Geralmente não sou muito bom com indicadores, tenho lidado principalmente com Consultores Especialistas.
Esta função é assíncrona. Apenas devolve o resultado do comando na fila do evento.
Para actualizar imediatamente, é necessário executar o comando ChartRedraw() após o comando de mudança de gráfico
Esta é, evidentemente, uma abordagem errada. Se quiser actualizar o gráfico apenas após a conclusão da mudança de linha, o ciclo de recálculo do indicador deve ser chamado não a partir de OnCalculate() mas a partir de ChartEvent() - shift of the line - função de recálculo do indicador de chamada, que irá executar todo o ciclo de recálculo da linha com os novos dados (a linha é necessária para alguns dados, certo?).
Ou talvez o indicador não seja feito correctamente e não actualize a barra de zero nos dados actuais, e você chutou-a?
Fez o que aconselhou. Tudo funcionou na perfeição. Agora instantaneamente após arrastar o indicador é completamente redesenhado. Mais uma vez, obrigado.
Fiz o que me aconselhou. Tudo funcionou perfeitamente. Agora, imediatamente após arrastar o indicador é completamente redesenhado. Mais uma vez, obrigado.
De nada. Mas deve ser desenhado em OnCalculate(), ou não?
Quando é arrastado no gráfico, o indicador não está ciente de quaisquer alterações da linha, mas deve traçar a linha.
De nada. Mas deve ou não desenhar em OnCalculate()?
Quando se aplica a um gráfico, este não tem conhecimento de quaisquer movimentos da linha, mas deve traçar a linha.
Quando o indicador é anexado ao gráfico, uma linha vertical é criada no init() e algum tempo é inicialmente definido para ele, por exemplo Tempo[10]. Dupliquei o código emOnChartEvent() e OnCalculate(). Apenas no OnChartEvent eu recalculei por todas as barras.
Ao instalar o indicador no gráfico no init() é criada uma linha vertical e inicialmente é definida para algum tempo, por exemplo Tempo[10]. Eu duplicei o código em OnChartEvent() e OnCalculate(). Apenas no OnChartEvent eu recalculei por todas as barras.
Não seria melhor criar simplesmente a função Refresh(), por exemplo, com os parâmetros formais exigidos, e chamá-la quando necessário?
E a propósito, ao obter as taxas_total no indicador para além de OnCalculate() usando Bars() com um intervalo de datas, pode apanhar um pendurado do indicador:
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Analógico do iBarShift
Nikolai Semko, 2018.04.05 23:47
Até agora esta variante, mas agora quero adicioná-la para contornar este bug de pendências de função de Barras, sobre o qual já escrevi ao servicedesk.
A essência deste bug é que se na função Bars tantoo tempo_de_início como otempo_de_paragem estão dentro de uma barra ou estão no futuro (à direita da barra zero), então esta função fica suspensa por mais de 10 segundos.
Talvez eu faça uma versão adequada mais rápida mas mais pesada mais tarde.