[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 262

 
dzhini:
Você pode me dizer como determinar a coordenada de preço de um objeto gráfico do tipo OBJ_LABEL?

Usar ObjectGet com parâmetros OBJPROP_XDISTÂNCIA, OBJPROP_YDISTÂNCIA
 

1 pergunta.Se houver um número 10 entre parênteses para o nome de uma matriz, isso significa que há 11 elementos nessa matriz

Pergunta 2. Eu deveria me certificar de que não haja zeros após o fim do conjunto, mas todos os preços desde o conjunto de Permissão até o fim do conjunto deveriam estar lá . Estou fazendo o ArrayResize corretamente?

//global
price[10];
int i =-1;
//-------------------
int start()
{
if(!TF_F_NewBar())return(0);
if(Allow_setting == true)
{
i++;
ArrayResize(price, i);//I take it that the price[10] array will remain price[0] (is this allowed ?),
//i.e., um lugar na matriz onde se escreve zero
. Assim, a cada passo (barra), vamos

//acrescentar o tamanho da matriz
preço[i] = Close[1] ; // Eu escrevo Close[1] em vez de zero nesta matriz de um lugar. Se isto for permitido,
// então você pode especificar o preço mínimo da matriz[0]
;
}
if(end_set=== true)
{
Array data processing ;

i = -1; //after processing, return to original position
}
}

Pedimos desculpas por colocar o código no caminho errado, como deveria ser.

 
gince:

1 pergunta.Se houver um número 10 entre parênteses para o nome de uma matriz, isso significa que há 11 elementos nessa matriz


Tal matriz contém 10 células com índices de 0 a 9. Isso significa que o primeiro elemento estará na célula 1 com índice 0, é por isso que o para declaração começa com 0.

Pergunta 2. Eu deveria me certificar de que não haja zeros após o fim do conjunto, mas todos os preços desde o conjunto de Permissão até o fim do conjunto deveriam estar lá . Estou fazendo o ArrayResize corretamente?

Você quer obter 10 preços próximos das últimas 10 barras na matriz?

Desculpe, eu não coloquei o código da maneira correta.

Você sempre pode ajustar o que você escreveu, basta clicar em "Editar".


 
paladin80:

Você quer ajustar os últimos 10 preços perto das últimas 10 barras?

Você sempre pode ajustar o que você escreveu, basta clicar em "Editar".


Não, não 10, mas Allow_select to end_set. Pode ser 40 ou 65. Você tem que ter certeza de que não há zeros na matriz após o fim do jogo.
 
gince:
Não, não 10, mas Allow_select antes do fim_select. Isto pode ser 40 ou 65. Não deve ter zeros após o fim_de_série na matriz


Tudo bem, basta definir a matriz como dinâmica no início:

double цена[];

...

int init ()

{

…

ArrayResize (цена,0);

…

}

int start ()

{

…

}

 
gince:
Não, não 10, mas Allow_select antes do fim_select. Isto pode ser 40 ou 65. Não deve ter zeros após o fim_de_série na matriz

double цена[]; // динамический массив
int    начало=2; // 0 (ноль) это текущий, ещё не закрытый бар
int    конец=45;
int    количество;
//---
int init()
  {
   количество=конец-начало; // =43
   ArrayResize(цена, количество); // устанавливается размер массива - 43 ячейки
   return(0);
  }

//---
int start()
  {
    if(!TF_F_NewBar()) return(0);    
    if(Разрешить_набор == true)
    {
      for (int i=0; i<=количество-1; i++) // заполнить 43 ячейки с индексом от 0 до 42.
                                          // в ячейке 0 будет цена close для бара 2 и т.д.
      цена[i]=Close[i+начало];   
    }
   return(0);
  }
//---
 
paladin80:

Eu não sei quantos elementos uma matriz deve ter. Poderia ser 40 ou 65. Em uma palavra, precisamos de uma matriz dinâmica

double цена[]; // динамический массив

int i = -1;
//---
int init()
  {
   ArrayResize(цена, 0); // устанавливается размер массива минимальным - 1 ячейка
   return(0);
  }

//---
int start()
  {
    if(!TF_F_NewBar()) return(0);    
    if(Разрешить_набор == true)                // это сигнал по индюку
    {
      //Пришел новый бар и резрешение есть 
      i++.                                     //увеличиваем индех            
      ArrayResize(цена, i)
      цена[i]=Close[i];   
   }
   if(конец_набора== true)   // это сигнал по индюку
   {
      //----
      //работа с массивом
      //----
      Pазрешить_набор == false; 
      i= -1;
//А тут
надо что нибуть делать с бывшим массивом (уменшить, очистить или еще что то)      
   }
   return(0);
 }
//---
 
gince:

Eu não sei quantos elementos uma matriz deve ter. Poderia ser 40 ou 65. Em uma palavra, precisamos de uma matriz dinâmica

Deixe-me perguntar-lhe do outro lado. Por que você precisa preencher a matriz com preços fechados? o fechamento duplo[] já é em si uma matriz de preços fechados.
 
paladin80:
Vou perguntar do outro lado. Por que você precisa preencher uma matriz com preços próximos? o próprio fechamento duplo[] já é uma matriz de preços próximos.
Não me importa se é fechado ou aberto. O mais importante é que eles são, de agora em diante. Depois os filtrei. A filtragem deve ser feita neste período, de agora em diante. Quando tenho filtrado um array, refaço outro com dados diferentes. E eu desenho usando o último conjunto. Portanto, esta matriz sobre a qual você perguntou é apenas uma intermediária.
 
Agora mesmo, para cada barra, ele coloca um cloze na matriz. E se eu não fizer isso, então terei que calcular de qual barra coletar dados, ciclo, filtro. E isto deixa apenas este último.
Razão: