Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 508
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
este é mais curto? bool barup=... WindowRedraw(); ainda executará - retirado de se
também pode ser mais curto ... ver meu arquivo
É como se a afirmação da pergunta fosse clara, não é? O objetivo é rubricar a mesma coisa.
Como você vai rubricar algo que ainda não existe? Depois que o objeto é criado, ele começa a existir, e é quando ele pode ser inicializado.
Eu lhe disse imediatamente - faça de um objeto um construtor paramétrico, e passe a ele os parâmetros necessários, que serão usados para inicializar o objeto recém-criado.
Você pode passar parâmetros através de uma estrutura, que você preenche com os dados necessários (constantes para todos esses objetos) no OnInit() do programa. Então, em OnTick(), por exemplo, ou em qualquer outro manipulador padrão, você cria seus objetos, mas quando você os cria você escreve o seguinte:
CMyObject object = novo CMyObject(a_a_estrutura_a_aqui com_parâmetros_de_set);
Ou, se os dados do objeto não mudarem de programa para programa e sempre tiverem os mesmos valores, então inicialize-os explicitamente com os parâmetros necessários no construtor através da lista de inicialização, como Igor disse acima:
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Qualquer pergunta de novatos sobre MQL4, ajuda e discussão sobre algoritmos e códigos
Ihor Herasko, 2018.03.28 17:31
Isto é feito na lista de inicialização, que está localizada na construtora da classe:
Como você vai rubricar algo que ainda não existe? Depois que o objeto é criado, ele começa a existir, e é quando ele pode ser inicializado.
Eu lhe disse imediatamente - faça de um objeto um construtor paramétrico, e passe os parâmetros necessários a ele, que serão usados para inicializar o objeto recém-criado.
Você pode passar parâmetros através de uma estrutura, que você preencherá com os dados necessários (constantes para todos esses objetos) no OnInit() do programa. Então, em OnTick(), por exemplo, ou em qualquer outro manipulador padrão, você cria seus objetos, mas na criação você escreve o seguinte:
CMyObject object = novo CMyObject(a_a_estrutura_a_aqui com_parâmetros_de_set);
Sim, estou vendo. Obrigado. Bem, de alguma forma apenas pensou que havia alguma solução para que quando um objeto é criado ele tenha alguns parâmetros pré-estabelecidos imediatamente, sem ter que passá-los para o construtor ou qualquer outra coisa. Através de alguma classe de pais ou algo assim.
Na minha classe tenho todos os tipos de coisas como parâmetros indicadores, etc. como parâmetros. Em geral, coisas que serão estáticas e as mesmas. Então por que eu deveria passar esses valores toda vez que eu crio um objeto?
Portanto, não passe adiante. Inicializar na lista de inicialização, como eu já mostrei. No momento da criação de uma instância da classe, o construtor da classe será automaticamente chamado, o que inicializará todos os membros da classe, especificados na lista de inicialização. Coloque a função Imprimir no método CCandle e você verá como o construtor é chamado sem nenhuma referência a ele.
Sim, estou vendo. Obrigado. Bem, de alguma forma apenas pensou que havia alguma solução, de modo que quando um objeto é criado ele tem alguns parâmetros pré-estabelecidos imediatamente, sem ter que passá-los para o construtor ou qualquer outra coisa. Através de alguma classe de pais ou algo assim.
Novamente. Você pode fazer isso sem transferir os dados para o construtor.
Portanto, não passe adiante. Inicializar na lista de inicialização, como eu já mostrei. No momento da criação de uma instância da classe, o construtor da classe será automaticamente chamado, o que inicializará todos os membros da classe, especificados na lista de inicialização. Coloque a função Imprimir no método CCandle e você verá como o construtor é chamado sem nenhuma referência a ele.
Eu não entendo, que diferença faz se os passa através do construtor ou através da função de inicialização?
Portanto, não passe adiante. Inicializar na lista de inicialização, como eu já mostrei. No momento da criação de uma instância da classe, o construtor da classe será automaticamente chamado, o que inicializará todos os membros da classe, especificados na lista de inicialização. Coloque a função Imprimir no método CCandle e veja como o construtor é chamado sem nenhuma referência a ele.
Com o que eles serão inicializados? Com que valores? Eu não entendo .
Suponha que eu tenha os valores iniciais nos parâmetros de entrada do Expert Advisor. Portanto, preciso passá-los para cada objeto da classe. Mas não para passá-los para cada objeto recém-criado.
como neste ciclo minha ordem de limite é excluída somente se após colocar uma ordem de limite na barra seguinte outra ordem de limite não foi colocada, ou seja, uma ordem de limite é excluída somente se for colocada e então seguida por duas barras sem ordens de limite
Com o que eles serão inicializados? Com que valores? Não está claro
Os que você escreve na lista de inicialização.
Suponha que eu tenha inicializado valores nos parâmetros de entrada do Expert Advisor. Portanto, preciso passá-los para cada objeto desta classe. Mas não para passá-los para cada objeto recém-criado.
Aqui está:
Se a executarmos, conseguimos: