matriz estática ? - página 4

 
Para i=barras no segundo laço imprime todos os elementos da matriz, mas não os valores, e todos = 0

Estou confuso

tirou o final i... no primeiro loop oops. mas não teve efeito

 

Com uma pequena mudança, seu código parece fazer algo . . .

2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[0]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[1]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[2]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[3]= 0,8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[4]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[5]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[6]= 0,8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[7]= 0,8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[8]= 0

Quando você leu o Livro sobre Arrays, você viu onde ele dizia isso ?

"Ao declarar um array, o tipo de dados, nome do array e número de elementos de cada dimensão deve ser especificado:"

 
RaptorUK:

Com uma pequena mudança, seu código parece fazer algo . . .

2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[0]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[1]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[2]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[3]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[4]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[5]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[6]= 0,8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[7]= 0,8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[8]= 0

Quando você leu o Livro sobre Arrays, você viu onde ele dizia isso ?

"Ao declarar um array, o tipo de dados, nome do array e número de elementos de cada dimensão deve ser especificado:"

Sim, eu fiz

Meu entendimento foi que a dupla v1[] decidiu o tipo de dados globalmente e antes do início()
Então [i] inicializou a matriz dizendo-lhe quantos elementos estão na matriz neste caso 1 dimensão com elementos = Barras, entretanto o número muda durante a criação de i--.
certo ?

Então, se está desincrevendo o número de elementos, como o buffer armazena e afixa o indicador se o número de elementos não está mais lá ?
Ou acho que devo dizer o que acontece com os elementos à medida que eles são desincrevidos [i] ?
Será que eles simplesmente desaparecem ? Eles ainda estão armazenados na v1[i] para serem referenciados ou desapareceram ?

Se eu conseguir descobrir isso, talvez eu consiga entender como referenciá-los ou se eles desapareceram, então eu consigo descobrir como segurá-los para uso.
O que eu não entendo é que a outra afirmação parece ser capaz de referenciar v1[i]=v1[i+1] Portanto, como pode referenciar v1[i] se nesse ponto v1[i] = 0 quando eu imprimo neste ponto.

Este tipo de referência faz sentido para = 0 em algum sentido porque se o array estiver vazio, então ele imprimirá o array vazio como 0, já que não há elementos no array.

Não tenho certeza se realmente o entendi, mas continuo pensando sobre isso e lendo o documento repetidamente.

Agora considerando as barras, se as barras tiverem mais de 1 número associado a ela, então a dimensão poderia ser diferente do que eu estou pensando.
Portanto, acho que vou ler mais sobre isso também para ter certeza de que entendo o que realmente sou.

Eu tinha pensado que era apenas uma única contagem de números como em Bar=o número de barras no gráfico
Quando imprimo Barras, isso me dá 1002 na tabela de 5min e estou pensando que esta é uma dimensão única.


Vou continuar trabalhando nele.

 

Se você quiser fazer um Array maior (ou menor) você precisa usar o ArrayResize. . um Array é como qualquer outra variável . . é só que pode haver muitos deles que você pode acessar facilmente . .

Copie este código e execute-o como um script, qual você acha que será a saída?

//+------------------------------------------------------------------+
//|                                                  TestArray.mq4   |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      ""


// #property indicator_chart_window



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
   {
   double test[];
   
   test[39] = 45.6;
   Print("test[39]= ",test[39] );
   

      return(0);
   }
//+------------------------------------------------------------------+

     
 
2011.09.21 07:54:26 nenhum EURUSD,M5: retirado
2011.09.21 07:54:26 nenhum EURUSD,M5: sem motivo 0
2011.09.21 07:54:26 nenhum EURUSD,M5: inicializado
2011.09.21 07:54:26 nenhum EURUSD,M5: test[39]= 0
2011.09.21 07:54:26 nenhum EURUSD,M5: inicializado


Isto é o que o script produz Eu o copiei exatamente

Eu apenas cliquei duas vezes e ele correu e isto é o que aparece na guia dos especialistas

A revista do script apenas diz
2011.09.21 07:54:26 Script nenhum EURUSD,M5: removido
2011.09.21 07:54:26 Script nenhum EURUSD,M5: carregado com sucesso

Eu achei que deveria ver 45.6 como a saída ? estou errado ?

Eu criei minha própria matriz fixa[5] = {1,2,3,4,5}

E parecem ser capazes de imprimir[5] ou imprimir[3] etc.

deixe-me colocar o aparelho e ver o roteiro novamente





 

OK, bom . . agora edite esta linha . .

. . e tente novamente.

double test[];

to

double test[40];
 
2011.09.21 08:07:58 nenhum EURUSD,M5: razão uninit 0
2011.09.21 08:07:58 nenhum EURUSD,M5: deinicializado
2011.09.21 08:07:58 nenhum EURUSD,M5: teste[39]= 45.6


Droga, tenho que voltar em poucas horas.

Talvez eu possa pensar um pouco mais sobre isso enquanto dirijo

 

Não há realmente nada em que pensar . . .

"Ao declarar uma matriz, o tipo de dados, nome da matriz e número de elementos de cada dimensão deve ser especificado:"

Você precisa declarar o número de elementos da matriz . .

 

Interessante
Eu pensava que a declaração do número de elementos era feita com v1[i] ? desde i=Bars eu pensava que era o mesmo que dizer v1[Barras] que é o que quer que seja esse número


Se não for declarado eu não entendo como o indicador saberia o que é v1[i] se eu também não puder referenciá-lo ?
Este mesmo script funciona na versão do indicador e o armazena no buffer da v1[] então como ele sabe como referenciar o buffer a fim de traçar a linha ?

Atualmente, está trabalhando no indicador. Este é um assunto diferente?

 

Sim, os amortecedores indicadores são tratados de forma diferente das matrizes comuns.

v[i] não é declarar o Array, é apenas um dos elementos . . mas duplo v[]; é um array com elementos zero . . então v[qualquer coisa] sempre = 0