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
De um modo geral, é engraçado como isto se revela.
Num palpite, pensei que a função OnDenit é uma espécie de destruidora e a função OnInit é uma espécie de construtora de uma EA.
De facto, verifica-se que o OnInit é um evento múltiplo (dentro da vida útil do Expert Advisor). Não é então claro, porque é que precisamos de gerar explicitamente o evento OnDenit se sabemos que a EA não termina o seu funcionamento (por exemplo, em caso de mudança de período do gráfico)?
Quando os símbolos mudam, o Expert Advisor é carregado a quente para um arranque rápido e para salvar a base informativa da sua vida anterior.
Por exemplo, o Expert Advisor está no gráfico, acumulou as suas estatísticas e lógica, e depois é alterado no tempo e tem de trabalhar a partir do zero no arranque a frio.
E há mais uma questão.
A razão para a desinicialização de REASON_CHARTCHANGE - um símbolo ou um período gráfico foi alterado.
Explique por favor como é que um símbolo gráfico pode ser alterado sem eliminar um EA nele?
Yedelkin, Interessante, Renat
Obrigado pelos esclarecimentos.
Penso que também faz sentido incluir uma lista explícita de reinícios "quentes" e "frios" na documentação.
Se não houver reinicialização em cada OnInit, para a EA multicast teremos de usar uma muleta, que é uma bandeira global. :(
Publicarei o código um pouco mais tarde.
O Expert Advisor em qualquer caso não será apagado durante a inicialização normal, apenas será permitido negociar sob certas configurações de terminal (mas para isso o Expert Advisor deve compreender que o símbolo foi alterado...).
A propósito, isso faz-me lembrar. Tenho andado para perguntar aos programadores sobre essas configurações.
Renat, por favor faça duas caixas de verificação diferentes para desactivar o comércio ao alterar o prazo e o símbolo. Estas são duas alterações fundamentalmente diferentes.
Não gostaria que os meus EAs parassem de negociar quando mudam de prazo - é absolutamente desnecessário - de qualquer forma estão a processar cada carraça e não há problemas com ela.
Mas a mudança do símbolo é fundamentalmente importante. Gostaria de manter este bloqueio... mas agora estes dois ajustamentos estão, por alguma razão, sincronizados e regulados em conjunto.
Estou a resolver este problema de forma programática (armazenar o símbolo original numa variável estática e controlar as alterações no inite). Mas seria melhor se isto pudesse ser bloqueado a nível terminal.
Melhor ainda seria a possibilidade de mudar o calendário ou símbolo com um Expert Advisor em funcionamento. Porquê parar de negociar devido à estupidez-esquecimento?
Ou seja, seria muito melhor bloquear a comutação de prazos e/ou símbolos (separadamente!), se for especificado em configurações que é proibido quando o Expert Advisor está presente num gráfico.
// Com a transmissão de uma mensagem correspondente ao tentar fazê-lo.
Na verdade, isto também pode ser resolvido de forma programática (colocando à força o símbolo ou o prazo de volta no lugar), mas penso que você mesmo está interessado em configurações realmente fáceis de usar a nível de terminal.
MetaDriver:
Renat, por favor faça duas caixas de verificação diferentes para bloquear o comércio de alterações de prazos e de símbolos. Estas são duas alterações fundamentalmente diferentes.
Não quero que os meus EAs parem de negociar quando mudam de prazo - é absolutamente desnecessário - de qualquer forma, estão a processar cada carraça e não há problemas com isso.
Apoio a ideia, deve fazer duas carraças e uma separação nos códigos de razão da desinicialização (seria conveniente assim).
Mas bloquear a possibilidade de alterar o prazo, não sei como (sobre o símbolo), é demasiado para mim.
Isso faz-me lembrar. Há muito tempo que quero perguntar aos programadores sobre estas definições.
Renat, por favor faça duas caixas de verificação diferentes para bloquear o comércio em caso de mudança de prazo e mudança de símbolo. Estas são duas alterações fundamentalmente diferentes.
Sim, parece que a condição de alterar o símbolo e o prazo foram combinados para nada.
Eu também sou a favor de os dividir em duas condições. O bilhete já foi colocado no balcão de serviço.
Na verdade, estou a anexar o código para definir as ferramentas de trabalho para o multicooker. As críticas são bem-vindas. :)
Cada vez que um Expert Advisor tenta obter uma lista de instrumentos de trabalho.
A actualização da lista de instrumentos de trabalho ocorre em duas condições: 1) OnInit é accionada, 2) após o tempo que foi definido no parâmetro de entrada da EA.
Como vemos, uma muleta sob a forma de uma variável global(bool Initialize) é utilizada para detectar a próxima inicialização. Se houvesse uma inicialização da estática, esta não seria necessária.
Considero variáveis globais como o mal, bem como o operador incondicional do goto no seu tempo.
Na ausência de reinicialização em cada OnInit, para os multilaterais deve ser utilizada uma "muleta" sob a forma de bandeira global. :(
É melhor escrever o código cuidadosamente desde o início, sem deixar muletas sob a forma de variáveis estáticas intermédias.
Como solução, esconder tais dados dentro de uma classe. Se a turma está morta, o ambiente também está morto.
E, a nível global, deixar um mínimo de variáveis estáticas.
Na verdade, estou a anexar o código para definir as ferramentas de trabalho para o multicooker. As críticas são bem-vindas. :)
Como dica - colocar Symbol a nível global e zerá-lo no OnInit. Se a matriz estiver vazia, então é altura de inicializar.
E sem bandeiras adicionais.
Como dica, trazer Symbol para o nível global e zerá-lo no OnInit. Se a matriz estiver vazia, então é altura de inicializar.
E sem bandeiras adicionais.
Acho que estou paranóico. Não gosto de variáveis públicas (globais). Considero-o um muveton.
É possível especificar a activação do OnInit no interior do OnTick?
Por exemplo, posso declarar uma variável estática dentro do OnTick que armazena o número de inicializações da EA (se existir tal ou semelhante propriedade na MQL5)?
As variáveis globais são más, como o era o operador de goto incondicional nos tempos antigos.
Devo ser paranóico. Não gosto de variáveis públicas (globais). Acho que é um muveton.
1. Porquê? É necessário livrar-se de sintomas nocivos, e de forma decisiva.
2. Não nomeie variáveis, arrays e outras coisas com palavras-chave de linguagem consonantes ou semelhantes (mas o "Symbol" array é muito marcante, não se pode dizer se é um array ou outra coisa no seu código).
Renat:
A solução é esconder tais dados dentro da classe. Se a classe morre, o ambiente também morre.
E a um nível global, deixar um mínimo de variáveis estáticas.