[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 262

 
dzhini:
¿Pueden decirme cómo determinar la coordenada de precio de un objeto gráfico de tipo OBJ_LABEL?

Utilice ObjectGet con los parámetros OBJPROP_XDISTANCE, OBJPROP_YDISTANCE
 

1 pregunta.Si hay un número 10 entre paréntesis para el nombre de un array, significa que hay 11 elementos en ese array

Pregunta 2. Debo asegurarme de que no hay ceros después del conjunto final de la matriz, pero todos los precios desde el conjunto de permisos hasta el conjunto final deben estar ahí . ¿Estoy haciendo el ArrayResize correctamente?

¡//global
price[10];
int =-1;
//-------------------
int start()
{
if(!TF_F_NewBar())return(0);
if(Allow_setting == true)
{
i++;
ArrayResize(price, i);//Supongo que la matriz price[10] seguirá siendo price[0] (¿está permitido?),
//es decir, un lugar de la matriz donde se escribe cero
. Así que con cada paso (barra) vamos a

//aumentar el tamaño de la matriz
price[i] = Close[1] ; // Escribo Close[1] en lugar de cero en este array de un lugar. Si esto se permite,
// entonces puede especificar el precio mínimo del array[0]
;
}
if(end_set== true)
{
Procesamiento de datos del array ;

i = -1; //después de procesar, volver a la posición original
}
}

Disculpas por poner el código de forma incorrecta como debe ser.

 
gince:

1 pregunta.Si hay un número 10 entre paréntesis para el nombre de un array, significa que hay 11 elementos en ese array


Esta matriz contiene 10 celdas con índices de 0 a 9. Significa que el primer elemento estará en la celda 1 con índice 0, por eso la sentencia for empieza por 0.

Pregunta 2. Debo asegurarme de que no hay ceros después del conjunto final de la matriz, pero todos los precios desde el conjunto de permisos hasta el conjunto final deben estar ahí . ¿Estoy haciendo el ArrayResize correctamente?

¿Quiere obtener los 10 precios de cierre de las últimas 10 barras en la matriz?

Lo siento, no he puesto el código de la forma correcta.

Siempre puedes modificar lo que has escrito, sólo tienes que hacer clic en "Editar".


 
paladin80:

¿Quieres formar los últimos 10 precios cerca de las últimas 10 barras?

Siempre puedes modificar lo que has escrito, sólo tienes que hacer clic en "Editar".


No, no 10, sino Allow_select a end_set. Puede ser 40 o 65. Tienes que asegurarte de que no hay ceros en la matriz después de end_set.
 
gince:
No, no 10, sino Allow_select antes de end_select. Puede ser 40 o 65. No debe tener ceros después de end_set en la matriz


Eso está bien, sólo hay que poner el array como dinámico al principio:

double цена[];

...

int init ()

{

…

ArrayResize (цена,0);

…

}

int start ()

{

…

}

 
gince:
No, no 10, sino Allow_select antes de end_select. Puede ser 40 o 65. No debe tener ceros después de end_set en la 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:

No sé cuántos elementos debe tener un array. Pueden ser 40 o 65. En una palabra, necesitamos una 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:

No sé cuántos elementos debe tener un array. Pueden ser 40 o 65. En una palabra, necesitamos una matriz dinámica

Déjame preguntarte desde el otro lado. ¿Por qué necesitas llenar el array con precios de cierre? el doble close[] en sí mismo ya es un array de precios de cierre.
 
paladin80:
Te preguntaré desde el otro lado. ¿Por qué necesitas llenar un array con precios de cierre? el doble close[] en sí mismo ya es un array de precios de cierre.
No me importa si está cerrado o abierto. Lo más importante es que son de ahora en adelante. Entonces los filtro. El filtrado debe hacerse en este periodo de ahora en adelante. Después de filtrar la matriz, vuelvo a hacer otra con datos diferentes. Y dibujo usando la última matriz. Por lo tanto, esta matriz por la que preguntaste es sólo una intermedia.
 
Ahora mismo, por cada barra, pone un cloze en el array. Y si no lo hago, entonces tengo que calcular de qué barra recoger los datos, hacer un bucle y filtrar. Y esto deja sólo a este último.
Razón de la queja: