Ivan_Invanov: Geralmente, a julgar por sua resposta, você não entende realmente como o programa funciona. Portanto, parece ser uma pergunta estúpida. Assim como o comentarista anterior pensa que isso pára. Apenas pela experiência de programação em outras linguagens, acho que ele executa seu corpo em loop, e quando chega um evento, ele mergulha nele. Se o programa executa seu corpo em loop, isso explica porque o programa é escrito dessa forma.
Quando ocorre um evento de "novo tick", o programa é iniciado no manipulador OnTick(), executado até a conclusão e parado. Com a chegada de um novo tique tudo se repete desde o início. Se um novo tick chegou durante a execução do programa, e o programa ainda não terminou de processar o tick anterior (ainda está em execução), então este tick é pulado.
Os programas em MQL não são looped. Eles têm três pontos de entrada - OnInit(), OnDeinit() e OnTick().
Na inicialização, OnInit() é executado, depois quando um tick é recebido - OnTick(), quando a operação é concluída - OnDeinit().
Há outros manipuladores também. Mas é melhor abrir a ajuda em vez de pedir a alguém que a duplique aqui.
Для того чтобы mql5-программа могла работать, она должна быть скомпилирована (кнопка "Компилировать" или клавиша F7). Компиляция должна пройти без ошибок (допускаются предупреждения, которые необходимо проанализировать). При этом в соответствующей директории Эксперты, пользовательские индикаторы и скрипты прикрепляются к одному из открытых...
Se este exemplo for lançado em um gráfico (ou é o primeiro terminal a ser iniciado após a partida do sistema), tudo funciona bem. No registro, diz o seguinte:
Pelo menos símbolo = Símbolo() e cronograma = Período() de acordo com as mensagens de registro (mesmo durante a defasagem, quando o terminal reinicia). Como o iBars(símbolo, prazo), com símbolo e prazo absolutamente corretos, pode dar zero, enquanto iBars(Símbolo(), Prazo()) funciona bem, se os parâmetros em funções são os mesmos, de acordo com o log?
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
Como abro uma conta demo MT4 em MetaQuotes Demo? Costumava funcionar sem nenhum problema, agora na última página do diálogo diz: Registro, Espere um pouco, por favor, e neste estado permanece ocioso indefinidamente, os campos com login e senha permanecem vazios. Nenhuma mensagem em log. Tentou tanto a "demonstração" como a "real" e diferentes tipos de contas.
Quando ocorre um evento de "novo tick", o programa é iniciado no manipulador OnTick(), executado até a conclusão e parado. Com a chegada de um novo tique tudo se repete desde o início. Se um novo tick chegou durante a execução do programa, e o programa ainda não terminou de processar o tick anterior (ainda está em execução), então este tick é pulado.
Os programas em MQL não são looped. Eles têm três pontos de entrada - OnInit(), OnDeinit() e OnTick().
Na partida, OnInit() é executado, depois quando um tick é recebido - OnTick(), quando a operação é concluída - OnDeinit().
Há outros manipuladores também. Mas é melhor abrir a ajuda em vez de pedir a alguém que a duplique aqui.
Obrigado. Sim, eu entendo isso, é só que a função está escrita no corpo do programa. Talvez eu não tenha percebido que foi chamado em algum lugar.
Ivan_Invanov: Obrigado. Sim, eu entendo isso, é só que a função está escrita no corpo do programa. Talvez eu não tenha percebido que foi chamado em algum lugar.
Como podemos ver do que você está falando? Dê-nos um exemplo.
Ivan_Invanov: Obrigado. Sim, eu entendo, é apenas a função que está escrita no corpo do programa. Talvez eu tenha perdido uma chamada para isso em algum lugar.
Em mql4 as funções são escritas em qualquer ordem, acima não importa, abaixo pode parecer que funciona mais cedo ou mais tarde. Não existe tal coisa em C++ onde todas as funções podem funcionar somente em ordem de escrita e se você quiser chamá-la, ela deve ser definida antes do local de chamada caso contrário o programa trava. O homem me mostrou como escrever funções em ordem diferente, mas não me lembro como fazer isso em C++.
Saudações. Por favor, me ajude. Eu tenho esta pergunta. Se entendo corretamente. O programa é executado do início ao fim, mas pára quando ocorre um evento, por exemplo, um tick, a função ontick começa a ser executada, depois termina sua execução e o programa é executado novamente desde o início? Esta pergunta está relacionada ao seguinte, onde devo escrever, por exemplo, o tamanho do lote comercial, no corpo do programa ou na função de pen drive?
Eu olho para o bot oficial, que é como um exemplo no terminal, há um cálculo de lote no corpo do programa, e não entendo porquê.
Geralmente, a julgar por sua resposta, você não entende realmente como o programa funciona. Portanto, parece ser uma pergunta estúpida. Assim como o comentarista anterior pensa que isso pára. Apenas pela experiência de programação em outras linguagens, acho que ele executa seu corpo em loop, e quando chega um evento, ele mergulha nele. Se o programa executa seu corpo em loop, isso explica porque o programa é escrito dessa forma.
Quando ocorre um evento de "novo tick", o programa é iniciado no manipulador OnTick(), executado até a conclusão e parado. Com a chegada de um novo tique tudo se repete desde o início. Se um novo tick chegou durante a execução do programa, e o programa ainda não terminou de processar o tick anterior (ainda está em execução), então este tick é pulado.
Os programas em MQL não são looped. Eles têm três pontos de entrada - OnInit(), OnDeinit() e OnTick().
Na inicialização, OnInit() é executado, depois quando um tick é recebido - OnTick(), quando a operação é concluída - OnDeinit().
Há outros manipuladores também. Mas é melhor abrir a ajuda em vez de pedir a alguém que a duplique aqui.
Olá. Enquanto trabalhava no meu indicador, encontrei um bug ao reiniciar o terminal. Com base neste bug, fiz um pequeno código fonte para seus testes:
Se este exemplo for lançado em um gráfico (ou é o primeiro terminal a ser iniciado após a partida do sistema), tudo funciona bem. No registro, diz o seguinte:
2020.06.24 21:05:50.773 Loader::Loader symbol: EURUSD timeframe: PERIOD_H1
2020.06.24 21:05:50.773 Carregador::Barras carregadoras: 140433
2020.06.24 21:05:50.773 Loader::Loader Error: 0
2020.06.24 21:05:50.773 Loader::Loader bars (2): 140433
Mas se eu reiniciar o terminal com este indicador, recebo um erro:
2020.06.24 21:07:34.963 Carregador::Símbolo do carregador: EURUSD Prazo: PERÍODO_H1
2020.06.24 21:07:34.963 Loader::Barras Loader: 0
2020.06.24 21:07:34.963 Loader::Loader Error: 4401
2020.06.24 21:07:34.964 Loader::Loader bars (2): 140433
Símbolo e cronograma inicializados ok
2020.06.24 21:07:34.963 Carregador::Símbolo do carregador: EURUSD Prazo: PERÍODO_H1
Mas iBars(símbolo, cronograma) dá 0 por alguma razão
2020.06.24 21:07:34.963 Loader::Barras Loader: 0
Neste caso, aparece o erro 4401.
Mas iBars(Símbolo(), Período()) funciona bem.
2020.06.24 21:07:34.964 Loader::Loader bars (2): 140433
Pelo menos símbolo = Símbolo() e cronograma = Período() de acordo com as mensagens de registro (mesmo durante a defasagem, quando o terminal reinicia). Como o iBars(símbolo, prazo), com símbolo e prazo absolutamente corretos, pode dar zero, enquanto iBars(Símbolo(), Prazo()) funciona bem, se os parâmetros em funções são os mesmos, de acordo com o log?
Como abro uma conta demo MT4 em MetaQuotes Demo? Costumava funcionar sem nenhum problema, agora na última página do diálogo diz: Registro, Espere um pouco, por favor, e neste estado permanece ocioso indefinidamente, os campos com login e senha permanecem vazios. Nenhuma mensagem em log. Tentou tanto a "demonstração" como a "real" e diferentes tipos de contas.
UPD Tried one broker demo - a mesma coisa.
Quando ocorre um evento de "novo tick", o programa é iniciado no manipulador OnTick(), executado até a conclusão e parado. Com a chegada de um novo tique tudo se repete desde o início. Se um novo tick chegou durante a execução do programa, e o programa ainda não terminou de processar o tick anterior (ainda está em execução), então este tick é pulado.
Os programas em MQL não são looped. Eles têm três pontos de entrada - OnInit(), OnDeinit() e OnTick().
Na partida, OnInit() é executado, depois quando um tick é recebido - OnTick(), quando a operação é concluída - OnDeinit().
Há outros manipuladores também. Mas é melhor abrir a ajuda em vez de pedir a alguém que a duplique aqui.
Obrigado. Sim, eu entendo isso, é só que a função está escrita no corpo do programa. Talvez eu não tenha percebido que foi chamado em algum lugar.
Como podemos ver do que você está falando? Dê-nos um exemplo.
Como podemos ver do que você está falando? Dê-nos um exemplo.
Obrigado. Sim, eu entendo, é apenas a função que está escrita no corpo do programa. Talvez eu tenha perdido uma chamada para isso em algum lugar.
Em mql4 as funções são escritas em qualquer ordem, acima não importa, abaixo pode parecer que funciona mais cedo ou mais tarde. Não existe tal coisa em C++ onde todas as funções podem funcionar somente em ordem de escrita e se você quiser chamá-la, ela deve ser definida antes do local de chamada caso contrário o programa trava. O homem me mostrou como escrever funções em ordem diferente, mas não me lembro como fazer isso em C++.
Saudações. Por favor, me ajude. Eu tenho esta pergunta. Se entendo corretamente. O programa é executado do início ao fim, mas pára quando ocorre um evento, por exemplo, um tick, a função ontick começa a ser executada, depois termina sua execução e o programa é executado novamente desde o início? Esta pergunta está relacionada ao seguinte, onde devo escrever, por exemplo, o tamanho do lote comercial, no corpo do programa ou na função de pen drive?
Eu olho para o bot oficial, que é como um exemplo no terminal, há um cálculo de lote no corpo do programa, e não entendo porquê.
Meu lote é calculado da seguinte forma
está no início do Expert Advisor...e eu o coloco no final do código
Quando a função OnTick chama a variável Lots, então a EA a encontra e recalcula.
@Artyom Trishkin
Você é um moderador neste tópico?