Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 986
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
No OnInit() chamar a série cronológica do símbolo: iTime(Símbolo,Prazo,1);
Logo no início de OnTick(), pedir a barra de tempo necessária das séries de tempos necessárias através do iFunc() correspondente, ou se( iTime(Símbolo,Prazo,10)==0) retornar;
Neste caso, o Conselheiro Especialista não detectará um novo bar e esperará pelo próximo tick.
No OnInit() solicitámos os dados das séries cronológicas, activando assim a paginação de dados.
Em OnTick() verificamos se o histórico minimamente necessário está disponível para a EA e se ainda não estiver disponível, esperamos pelo próximo tick.
E até que todos os dados requeridos pelo Conselheiro Especialista sejam recebidos, este esperará pelo próximo tick.
Assim que todos os dados necessários forem bombeados e obtidos, o Conselheiro Especialista começará a trabalhar com a nova barra e com o histórico necessário.
Para manter os dados em série actualizados, não se esqueça de aceder aos mesmos pelo menos uma vez de dois em dois minutos. Faça um segundo temporizador durante cerca de um minuto e meio (90 segundos) e nele, basta aceder a qualquer série de tempos do símbolo desejado, por exemplo iTime(Símbolo,Prazo,1); sem verificar os dados recebidos - basta "mover" o histórico. Então, todos os dados sobre o símbolo estarão sempre actualizados.
Claro que tentarei verificar a nova barra usando todas as TFs mas não é síncrona, isto não é MT4. O problema não é com a barra, mas com o não desempenho dos indicadores que são chamados a partir do indicador, que por sua vez é chamado a partir do Conselheiro Especialista.
Trabalho com actas, por isso a história deve estar sempre actualizada.
E, todas estas verificações são feitas para o teste e apenas atrasarão o trabalho numa conta real, porque tudo funciona mais lentamente aí do que nas condições estacionárias do testador, repito que numa conta real o indicador funciona correctamente.
Até agora, resolvi o problema verificando a prontidão dos indicadores, que falharam, antes do início do código principal
Mas esta abordagem não é universal, porque é necessário listar todos os indicadores, existe outro método mais universal para fazer o ambiente de teste funcionar correctamente?
Em OnTick() verificamos se o histórico minimamente necessário está disponível para o Consultor Especialista, e se ainda não estiver disponível - esperamos pelo próximo tick.
E até que todos os dados requeridos pela EA sejam obtidos, ela esperará pelo próximo tick.
Assim que todos os dados necessários forem bombeados e obtidos, o Conselheiro Especialista começará a trabalhar com a nova barra e com o histórico necessário.
Como se propõe verificar a disponibilidade do histórico, não compreendo...
Acrescentar esta linha antes da função MQL4
e funcionará em MT5.
Isso é genial. Muito obrigado!
Pode dizer ao MT5 que pode implementar tais botões, talvez já tenha um, partilhar o código ...
Prever escorregadelas e solicitações.
Olá, se os preços Ask and Bid da classe CSymbolInfo são mais ou menos claros, como obter por exemplo SessionInterest ou SessionBuyOrdersVolume ou SessionPriceLimitMin, dá zeros, não consigo entender porquê...
Olá, se os preços Ask and Bid da classe CSymbolInfo são mais ou menos claros, como obter por exemplo SessionInterest ou SessionBuyOrdersVolume ou SessionPriceLimitMin, dá zeros, não consigo entender porquê...
Se o servidor comercial difundir esta informação, irá recebê-la.
Em regra, esta informação é transmitida pelos corretores para símbolos de acções (não confundir corretores e centros de negociação).
Se um servidor comercial difundir esta informação, irá recebê-la.
Esta informação é geralmente difundida por Corretores para símbolos de troca (não confundir Corretores e centros de negociação).
Corretor Otkritie, o RTS Index Futures, presumo que deve transmitir pelo menos SessionPriceLimitMin e SessionPriceLimitMax (porque, tanto quanto sei, são os preços de abertura utilizados nas ordens de mercado). Será que a abertura não traduz... Prescrevo, por exemplo:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - do seu EA
Recebo apenas preços de pedido no diário de bordo
Por favor, ajude a escrever uma peça de código que determine correctamente a data da última barra com qualquer mudança em qualquer TF, exacta para a TF actual.
Este código funciona geralmente, mas apenas se a hora de início da barra actual coincidir com a barra real (arredondada ao minuto), uma vez que o meu gráfico actual é M1. E se não coincidir, então ocorrem diferentes percalços, dependendo das diferentes TFs. Por exemplo, preciso de saber a data de início do último bar M1 na última hora, se era 12 horas sem problemas, a hora será 12:59, mas se era 13 horas será 13:58 porque o bar horário abriu às 14:05 e não às 14:00 e a funçãoiBarShift devolveu o bar mais próximo às 14:00, ou seja, 13:59.
Acrescentado: fez isto, parece funcionar
Broker Opening, RTS Index Futures, presumo que deve transmitir pelo menos SessionPriceLimitMin e SessionPriceLimitMax (segundo sei, são utilizados em ordens de mercado através de preços de abertura ). Será que a abertura não traduz... Prescrevo, por exemplo:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - do seu EA
Recebo apenas preços de pedido no diário de bordo