Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 115

 
sss20192:

El indicador tiene diferentes datos en la ventana de datos. Adjunto el EA al gráfico H1 y copia los datos de los marcos temporales M5 M15 y H1.


int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );
Los buffers (tienes ceros) y los arrays donde copiamos son todos iguales, empiezas con 1 elemento, copias 1 elemento, quizás la dirección del array también importa.

 
zfs:
Los buffers (tienes ceros) y los arrays donde copias son todos iguales, empiezas con 1 elemento, copias 1 elemento, quizás la dirección del array también importa.

Bueno, sí, el primer buffer indicador, en tres tamframes diferentes. Y hasta ahora estoy usando el mismo array para registrar los datos.

He intentado establecer ArraySetAsSeries true y false. Sin embargo, a veces aparecen en el registro datos extraños como -4,53e-32.

 

Señores, ¿podrían decirme cómo implementar esto?

Hay un array, se escribe un valor en él, y si contiene un valor similar, hay una explosión.

 
sss20192 De todos modos, a veces aparecen datos extraños como -4,53e-32 en el registro
En el lado positivo, deberíamos insertar comprobaciones tanto para el éxito de la creación de asas como para el éxito de la función CopyBuffer(). De lo contrario, aún no sabemos si este valor basura es el resultado de la ejecución exitosa de la función CopyBuffer() o la función no funcionó correctamente.
 
Top2n: Hay un array, se escribe un valor en él, y si contiene un valor similar, hay un fallo.
Los elementos de la matriz deben buscarse para que coincidan con el valor requerido. Si no se encuentra ninguna coincidencia, el valor se escribe en el array.
 
Yedelkin:
Debe intentar buscar los elementos del array para ver si coinciden con el valor requerido. Si no se encuentra ninguna coincidencia, escribe el valor en el array.
¿Y cómo comparar dos índices en un array?
 
Top2n:
¿Y cómo comparar dos índices en un array?

¿Lees el artículo con atención? >> Conceptos básicos de programación en MQL5 - Arrays

Tiene todos los detalles para todos los casos que tratan de arrays. Definitivamente debería ser suficiente para ti. ))

 
tol64:

¿Lees el artículo con atención? >> Conceptos básicos de programación en MQL5 - Arrays

Tiene todos los detalles para todos los casos que tratan de arrays. Definitivamente debería ser suficiente para ti. ))

Gracias a todos por su ayuda). No me despediré de ti)))
 
Yedelkin:
Amistosamente, debemos insertar en el código las comprobaciones para el éxito de la creación de asas y para el éxito de la función CopyBuffer(). De lo contrario, ni siquiera sabemos si este valor de la basura es el resultado de la ejecución exitosa de la función CopyBuffer() o la función no funcionó correctamente.

Comprobado. Las asas se crean normalmente, los índices son 10, 11, 12. Pero la función CopyBuffer genera el error ERR_INDICATOR_DATA_NOT_FOUND. Por qué puede ocurrir este error, los pares seleccionados están en la ventana de Market Watch, los gráficos de estos pares de divisas están abiertos.

Además, creo una variable, que muestra el resultado de la ejecución de CopyBuffer,

int aaa = CopyBuffer..., muestra el valor 1, como si se copiara un valor, como se define en la función.


Al copiar el buffer MA se muestra el mismo error, pero el valor se escribe en el array correctamente.

Por favor, muéstrenos un ejemplo de copia correcta del búfer

 
sss20192: Comprobado. Las asas se crean normalmente y tienen los índices 10, 11 y 12. Pero la función CopyBuffer genera el error ERR_INDICATOR_DATA_NOT_FOUND. Por qué puede ocurrir tal error, los pares seleccionados están en la ventana de Market Watch, los gráficos de estos pares de divisas están abiertos.

Además, creo una variable que muestra el resultado de la ejecución de CopyBuffer,

int aaa = CopyBuffer..., muestra el valor 1, como si se copiara un valor, como se define en la función.

Al copiar el buffer MA, se muestra el mismo error, pero el valor se escribe en el array correctamente.

Por favor, muéstrame un ejemplo de cómo copiar el buffer correctamente

Sí, el ejemplo de la copia del búfer es correcto en la descripción de la función CopyBuffer(). Preste atención a las líneas

//--- check if all data calculated
    if(BarsCalculated(ma_handle)<rates_total) 

//--- try to copy
    if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0) return(0);