Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 18
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
Isso não é muito bom. Você provavelmente recebeu avisos na hora da compilação? Você precisa se livrar das causas dos avisos em tais casos, e não # de uma propriedade estrita
Eu completei meu saldo e agora não consigo encontrar o terminal com a conta real.
Quando #propriedade estrita foi soletrada, o compilador gerou erros em cada loop for() que as variáveis devem ter um tipo, então eu tive que soletrar int i e int p em cada loop. Depois disso, o compilador não gerou erros, mas a linha não foi construída. Quando removi o #property strict, o compilador não exigia declarar o tipo em cada laço, e a linha foi construída.
Um caso típico de exploração de erros implícitos na lógica. Uma vez que o compilador tenha se tornado "mais rígido", a auto-engano está desaparecendo lentamente.
Eu estava me perguntando por que havia tantos loops idênticos?
E por que você não se preocupa de forma alguma com o erro "out of array" ao executar o indicador no gráfico?
Por exemplo, aqui:
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
Eu completei meu saldo e agora não consigo encontrar o terminal com a conta real.
Quando #propriedade estrita foi soletrada, o compilador deu erros em cada loop for() que as variáveis devem ter um tipo, e assim eu tive que soletrar int i e int p em cada loop. Depois disso, o compilador não gerou erros, mas a linha não foi construída. Quando removi o #property strict, o compilador não precisava mais declarar o tipo em cada ciclo, e a linha foi construída.
a resposta é muito simples - você tem uma matriz trivial ultrapassada - e seu indicador deixa de funcionar por causa desse erro
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
você pode ver este erro no momento da execução - inicie o indicador e veja o arquivo de registro na guia Terminal - Especialistas:
Este é um caso típico de exploração de erros lógicos implícitos. ...
Um caso típico de exploração de erros implícitos na lógica. Uma vez que o compilador tenha se tornado "mais rígido", a auto-engano está desaparecendo lentamente.
Eu não parava de me perguntar, por que existem tantos loops idênticos?
E por que você não se preocupa de forma alguma com o erro "out of array" ao executar o indicador no gráfico?
Por exemplo, aqui:
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
Quanto aos mesmos ciclos, eu, devido a meu conhecimento limitado de programação e algoritmos, não pensei em nada melhor para selecionar o elemento da matriz a partir da dimensão necessária, o que era necessário para a substituição na fórmula.
a resposta é muito simples - você tem uma matriz trivial ultrapassada - e seu indicador deixa de funcionar por causa desse erro
{
for(int p=0; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
for(int i=1; i<n; i++)
{
for(int p=0; p<m; p++)
{
Mx[i][p]=sum_x[p+1][m-1]/(n-1);
My[i][p]=sum_y[p+1][m-1]/(n-1);
você pode ver este erro na etapa de execução - inicie o indicador e veja o arquivo de registro na guia Terminal - Especialistas:
Então como calcular a soma dos preços de fechamento em cada dimensão???
Quanto aos mesmos ciclos, devido a meu conhecimento limitado de programação e algoritmos, não consegui pensar em nada melhor para selecionar aquele elemento da matriz da dimensão desejada, que era necessário substituir na fórmula.
Por exemplo, assim:
for(int i=1; i<n; i++)
{for(int p=1; p<m; p++)
{
sum_x[i][p]=sum_x[i][p-1]+Price_CloseX[i][p];
sum_y[i][p]=sum_y[i][p-1]+Price_CloseY[i][p];
}
}
Você pode me dizer como corrigir este erro?
Para corrigir este erro, você precisa entender sua fórmula - o que, por que e como você está contando.
E só então você será capaz de elaborar seu algoritmo e eliminar o erro.
Pelo método "gut feeling" e não compreender sua fórmula - você eliminará o erro, mas fará um cálculo errado.
p.s. Explique em detalhes o que você está calculando -- comente seu código em detalhes -- e então entenderemos como corrigir o erro.