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

 

Estoy duplicando la pregunta aquí, nadie responde en los indicadores...

He empezado a estudiar MQL5. No tengo experiencia en programación y por eso tengo algunas preguntas y dudas. Algunos de ellos pueden ser resueltos por mí mismo, analizando ejemplos y en parte por "intuición", pero algunos aspectos son difíciles de entender de inmediato. Empecé a estudiar una cosa sencilla: tener dos tolinas mostradas en la ventana principal del gráfico. Dibujo el Cierre para el instrumento actual y el adicional (relacionado, la nota seguirá) para el marco de tiempo actual por 1000 barras hacia atrás. El instrumento relacionado es los futuros de la siguiente serie, es ilíquido y siempre tiene algunas lagunas en los datos, es decir, el número de operaciones no es tan frecuente como en la serie principal de futuros. Parece que la tarea está cumplida, pero hay errores. No puedo decir si el suavizado es útil, por lo que he utilizado iMA con el periodo 1, para que si es necesario se pueda suavizar sin necesidad de volver a trabajar.

Estas son las preguntas:

1. Al compilar, cuando copio el buffer iMA a un array, veo una advertencia "posible pérdida de datos debido a la conversión de tipos". ¿Qué es esto y por qué, de qué tipo de conversión estamos hablando? Las líneas se dibujan con normalidad y no parece faltar nada.

2. después de que el indicador haya funcionado y las líneas de los dos instrumentos aparezcan en la ventana del gráfico principal, veo que no están sincronizadas. Es decir, el primer instrumento es normal y corresponde al gráfico de velas de la ventana principal. La segunda (menos líquida) tiene huecos y, por lo tanto, se va "apretando", provocando la desincronización. Necesito que se sincronice en el tiempo de alguna manera. Esto está muy por encima de mis capacidades. Tengo que verlo visualmente para entender lo que falta.

Aquí hay una captura de pantalla de cómo se ve. La línea amarilla es lo que hay que sincronizar con respecto a la línea verde. De modo que la línea amarilla, en la que los huecos en las fechas son sólo "conexiones" de los valores anteriores con los siguientes, en lugar de un apretón con fechas perdidas. El código está en el archivo adjunto.

Archivos adjuntos:
 
ottenand:

Estoy duplicando la pregunta aquí, nadie responde en los indicadores...

He empezado a estudiar MQL5. No tengo experiencia en programación y por eso tengo algunas preguntas y dudas. Algunos de ellos pueden ser resueltos por mí mismo, analizando ejemplos y en parte por "intuición", pero algunos aspectos son difíciles de entender de inmediato. Empecé a estudiar una cosa sencilla: tener dos tolinas mostradas en la ventana principal del gráfico. Dibujo el Cierre para el instrumento actual y el adicional (relacionado, la nota seguirá) para el marco de tiempo actual por 1000 barras hacia atrás. El instrumento relacionado es los futuros de la siguiente serie, es ilíquido y siempre tiene algunas lagunas en los datos, es decir, el número de operaciones no es tan frecuente como en la serie principal de futuros. Parece que la tarea está cumplida, pero hay errores. No puedo decir si el suavizado es útil, por lo que he utilizado iMA con el periodo 1, para que si es necesario se pueda suavizar sin necesidad de volver a trabajar.

Estas son las preguntas:

1. Al compilar, cuando copio el buffer iMA a un array, veo una advertencia "posible pérdida de datos debido a la conversión de tipos". ¿Qué es esto y por qué, de qué tipo de conversión estamos hablando? Las líneas se dibujan con normalidad y no parece faltar nada.

2. después de que el indicador haya funcionado y las líneas de los dos instrumentos aparezcan en la ventana del gráfico principal, veo que no están sincronizadas. Es decir, el primer instrumento es normal y corresponde al gráfico de velas de la ventana principal. La segunda (menos líquida) tiene huecos y, por lo tanto, se va "apretando", provocando la desincronización. Necesito que se sincronice en el tiempo de alguna manera. Esto está muy por encima de mis posibilidades. Tengo que verlo visualmente para entender lo que falta.

Aquí hay una captura de pantalla de cómo se ve. La línea amarilla es lo que hay que sincronizar con respecto a la línea verde. De modo que la línea amarilla, en la que los huecos en las fechas son sólo "conexiones" de los valores anteriores con los siguientes, en lugar de un apretón con fechas perdidas. El código está en el archivo adjunto.


El mango del indicador debe ser de tipo int. Ejemplo ver aquí:CopyBuffer

int  CopyBuffer( 
   int       indicator_handle,     // handle индикатора 
   int       buffer_num,           // номер буфера индикатора 
   int       start_pos,            // откуда начнем  
   int       count,                // сколько копируем 
   double    buffer[]              // массив, куда будут скопированы данные 
   );
 
Vladimir Karputov:


El indicador debe ser de tipo int. Ejemplo ver aquí:CopyBuffer

Cierto, se me pasó ese punto, el error de compilación ha desaparecido, ¡gracias!

Pero el principal problema en este momento es la diferencia de tiempo, sigue siendo relevante. Sin su solución será imposible realizar, por ejemplo, operaciones matemáticas entre las herramientas, que pienso probar.

 
ottenand:

Cierto, se me pasó ese punto, el error de compilación ha desaparecido, ¡gracias!

Pero el principal problema en este momento, la cuestión del tiempo, sigue siendo relevante. Sin resolverlo, sería imposible, por ejemplo, realizar operaciones matemáticas entre instrumentos, algo que pienso probar.


Yo en tu lugar empezaría con una codificación adecuada, lo que pasa es que tu estilo ahora es el "cuádruple" temerario, es decir, no hay comprobaciones, todo es al azar.

Comienza a fijar OnInit():

  1. después de obtener la manija, usted necesita comprobar para la corrección
  2. si todo es correcto, devuelve NO "0", sino "INIT_SUCCEED".
Todo esto está en el ejemplo deiMA. Sólo entonces podremos seguir adelante.

 
Vladimir Karputov:


Si yo fuera tú, empezaría por escribir el código correctamente, lo que pasa es que tu estilo es ahora un "cuaternario" temerario, es decir, sin comprobaciones, todo a capricho.

Comienza a corregir OnInit():

  1. después de obtener la manija, usted necesita comprobar para la corrección
  2. si está bien, no devuelve "0" sino "INIT_SUCCEED".
Todo esto está en el ejemplo deiMA. Sólo entonces podrás seguir adelante.

¿Quién te ha dicho, amigo, que no puedes grapar en un cinco y escribir maravillosamente en un cuatro?

No se trata de la PLATAFORMA, se trata de la cabeza del escribano particular...

El profesor Preobrazhensky tenía razón cuando decía que no está en los armarios, sino en las cabezas...


 
Vladimir Karputov:


Si yo fuera tú, empezaría a escribir el código correctamente, lo que pasa es que tu estilo es ahora un "cuaternario" temerario, es decir, no hay comprobaciones, todo es a la ventura.

Comienza a corregir OnInit():

  1. después de obtener la manija, usted necesita comprobar para la corrección
  2. si está bien, no devuelve "0" sino "INIT_SUCCEED".
Todo esto está en el ejemplo deiMA. Sólo entonces podrás seguir adelante.

Bueno, ahora sabré cómo se llama mi estilo) Cierto, estoy empezando desde la versión 5, desde cero)

Gracias, he corregido los puntos 1 y 2. Toda la pega está en el bloque de cálculo. Voy a pensar cómo prescribir la posición de las barras de dos instrumentos de acuerdo con el tiempo. De lo contrario, hay un retraso y la misma advertencia #4806.

Archivos adjuntos:
 
ottenand:

Bueno, ahora sabré cómo se llama mi estilo) Realmente, estoy empezando desde la versión 5, desde cero)

Gracias, he arreglado los puntos 1 y 2. Todo el inconveniente está en el bloque de cálculo. Pensaré en cómo prescribir la ubicación de las barras de dos instrumentos en función del tiempo. De lo contrario, un retraso y la misma advertencia #4806.

¡Correcto! Así, por ejemplo, en M1 en los futuros "A" hay barras a 13 minutos, 14 minutos y 15 minutos. Pero los futuros "B" tienen barras a los 13 minutos y a los 15 minutos solamente, es decir, un hueco. Hay artículos en alguna parte, busca la palabra "agujero".
 
Vladimir Karputov:
¡Así es! Porque, por ejemplo, los futuros M1 "A" tienen barras a los 13 minutos, 14 minutos y 15 minutos. Pero los futuros "B" tienen barras a los 13 minutos y a los 15 minutos solamente, es decir, un hueco. Hay artículos en alguna parte, busca por la palabra "agujero".
A eso me refiero) El error #4806 parece ser la razón. Vale, lo buscaré).
 

Buenas tardes.

¿Puede decirme cómo encontrar el precio de la línea de tendencia para la barra actual? Lo he intentado mediante ObjectGetDouble, pero no da el resultado deseado. Ejemplo de código:

   ObjectCreate(0,"O_Resistance",OBJ_TREND,0,UpTime_2[0],UpFractal_2,UpTime_1[0],UpFractal_1);
   ObjectMove(0,"O_Resistance",0,UpTime_2[0],UpFractal_2);
   ObjectMove(0,"O_Resistance",1,UpTime_1[0],UpFractal_1);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_RAY_RIGHT,true);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_COLOR,O_Resistance_Color);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_STYLE,O_Resistance_Style);
   ObjectSetInteger(0,"O_Resistance",OBJPROP_WIDTH,O_Resistance_Width);


double O_ResistancePrice = ObjectGetDouble(0,"O_Resistance",OBJPROP_PRICE,0); // при любом баре дает координату изначальной точки луча, а нужна цена
                                                                              // соответствующая текущему бару или первому
 
MaksGroup:

Buenas tardes.

¿Puede decirme cómo encontrar el precio de la línea de tendencia para la barra actual? Lo he intentado mediante ObjectGetDouble, pero no da el resultado deseado. Ejemplo de código:

ObjectGetValueByShift() (sólo MT4), ObjectGetValueByTime()(MT4, MT5)