Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 600
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 não é um clube telepático. Você não anexou seu código, então cabe a você decidir onde colocar a exclusão.
Errado.
Bem, aqui está o código, o que mais você precisa? E se estiver incorreto?
Obrigado.
Você tem tudo isso misturado. O planejamento incorreto da tarefa é exatamente o que leva a estas conseqüências.
Se os objetos são criados em uma classe, ela deve apagá-los em seu destruidor após a conclusão. Outras classes, por outro lado, antes de colocar um ponteiro em um objeto, devem verificar sua validade. E, em princípio, não deveria haver uma relação tão entrelaçada. É um pouco emaranhado. Complicado não significa qualidade. Tudo deve ser transparente e rastreável. Antes de mais nada, para você.
Vamos antes mostrar o código.
Aqui, estou lendo alguns dados de um arquivo no início do programa.
Isto é, eu crio um objeto CCandleCondition *candle_cond na iteração e depois o adiciono à coleção de velas_uma_regras.
Aqui está o método AddCondition da classe CCandlesOneRules:
O CCandleRule é apenas uma classe de contêineres para condições. Adiciono condições às regras e regras do CCandlesOneRules, que por sua vez ao CCandlesOneRules....
Mas isto enquanto o loop falha na partida e falha com erro de memória fora da memória. E não há muitas destas condições, apenas 7 são lidas antes de parar. Se reduzirmos o número de dados no arquivo lido, ele funciona, sem nenhum erro, objetos não apagados e assim por diante.
Vamos ter uma melhor exibição do código.
Estou começando a perder a paciência.
Onde está a definição do método Add?
A julgar pelo código, você tem uma completa falta de compreensão do que está fazendo.
Estou começando a perder a paciência.
Onde está a definição do método Add?
A julgar pelo código, você tem um completo mal-entendido do que está fazendo.
CCandleOneRules, CCandlesOneRules, CCandleRule são todas as classes herdadas do CArrayObj.
A julgar por suas respostas genéricas, você simplesmente não entende minhas perguntas. Na matriz com CArrayObj você ainda não respondeu da maneira correta. Mais uma vez, vou repetir esse problema. Há uma classe, no método de classe os objetos globais da classe são adicionados ao array (objeto do tipo CArrayObj), que é declarado neste método. Neste método, algumas ações são realizadas nesta matriz. Após a conclusão, o objeto da matriz não é necessário, os membros da matriz são necessários. Como se livrar corretamente deste objeto de matriz, mantendo os membros da matriz? Se você não se livrar dele, você receberá uma mensagem como objetos não removidos no diário de bordo. Eu lhe dei minha solução; você a disse de forma incorreta. Como é correto? Como posso colocar a exclusão no OnDeinit (ou no método de classe Deinit que será chamado a partir do OnDeinit), se este objeto de matriz é visível apenas dentro do método de classe?
Além disso, se os objetos forem apagados apenas no OnDeinit, você também pode ficar sem memória...
Olá colegas.
Por favor, me ajude com esta pergunta. Onde devo usar a função ArraySetAsSeries() para especificar a ordem de numeração dos elementos no buffer de indicadores? Nos indicadores, que são pré-instalados no terminal, tenho notado com freqüência que ele é usado dentro da OnCalculate(). Mas o tampão indicador é declarado globalmente. Não é lógico usar o ArraySetAsSeries() dentro do OnInit() para uma única chamada neste caso? Ou por causa do reabastecimento do buffer indicador com novos elementos a ordem de numeração pode ser perdida e é necessário chamar o ArraySetAsSeries() cada vez dentro da OnCalculate()? Quero escrever um código ideal sem chamadas de função desnecessárias, quando não for necessário. Serei grato pela ajuda.
Olá colegas.
Por favor, me ajude com esta pergunta. Onde devo usar a função ArraySetAsSeries() para especificar a ordem de numeração dos elementos no buffer de indicadores? Nos indicadores, que são pré-instalados no terminal, tenho observado com freqüência que ele é usado dentro da OnCalculate(). Mas o tampão indicador é declarado globalmente. Não é lógico usar o ArraySetAsSeries() dentro do OnInit() para uma única chamada neste caso? Ou por causa do reabastecimento do buffer indicador com novos elementos a ordem de numeração pode ser perdida e é necessário chamar o ArraySetAsSeries() cada vez dentro da OnCalculate()? Quero escrever um código ideal sem chamadas de função desnecessárias, quando não for necessário. Serei grato pela ajuda.
IMHO, eu escreveria indicadores sem estas funções (se de zero, é claro). Para amortecedores - em OnInit(), para séries de tempo - em OnCalculate().
E, para falar em código ideal, é preciso saber quanto tempo esta função leva para ser executada. Portanto, o perfilador deve ir primeiro, e só depois as questões de desempenho.
IMHO, eu escreveria indicadores sem estas funções (se do zero, é claro). Mas para amortecedores - em OnInit(), para séries de tempo - em OnCalculate().
E, para falar de código ideal, você precisa saber quanto tempo esta função leva para ser executada. Portanto, o perfilador deve ir primeiro, e só depois as questões de desempenho.
Essa é a conclusão para a qual eu estava inclinado. Obrigado pela dica.
Boa tarde. Tenho uma pergunta: por que, quando aplico as barras de pressão no MACD, eu tomo os valores da linha de sinal e não o histograma em si?
Boa tarde. Tenho uma pergunta: por que quando aplico as barras de pressão no MACD, eu tomo os valores da linha de sinal e não o histograma em si?
Você tem a possibilidade de especificar qual buffer gráfico usar para o cálculo?