Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 990
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Pregunta: ¿Por qué un Handel ajustado a un periodo no pasa valores aCopyBuffer en otros periodos? ¿Y qué hacer?
Si el problema estuviera en el desplazamiento del elemento del buffer de la matriz en un marco de tiempo diferente, resolvería el problema. Así que no está nada claro.
Pregunta: ¿Por qué un Handel ajustado a un periodo no pasa valores aCopyBuffer en otros periodos? ¿Y qué hacer?
Si el problema estuviera en el desplazamiento del elemento del buffer de la matriz en un marco temporal diferente, resolvería el problema. Así que no está nada claro.
Si el manejador se ha creado con éxito, se crea con los parámetros que se le han pasado durante su creación. Y dará los datos del indicador en cualquier marco temporal. Sin embargo, dará los datos del periodo de tiempo que hayas especificado durante la creación. Y para que se muestren correctamente en el marco temporal de trabajo, es necesario convertir los datos recibidos del mango del indicador al marco temporal en el que trabaja su indicador.
Estaba comprobando esto. Pero el PROBLEMA es que al fijar el handel a un periodo permanente, en
El valor del CopyBuffer en otros plazos NO ES TRANSFERIBLE. El valor estaba en el período de asa establecido y 0,0 (cero) en los marcos de tiempo más pequeños. Se movió en busca del buffer... cero. ¿Por qué no se pasa aCopyBuffer?
Lo tengo copiado...
Otra cuestión es lo que se copia :) Lo más probable es que esté solicitando que se copien más barras de las que hay en esa TF, imprima
Si el manejador se creó con éxito, se creó con los parámetros que le pasaste al crearlo. Y dará los datos del indicador en cualquier marco temporal. Pero dará los datos del plazo que se estableció durante la creación. Y para que se muestren correctamente en el marco temporal de trabajo, es necesario convertir los datos obtenidos del mango del indicador al marco temporal en el que trabaja su indicador.
¿He hecho el experimento correctamente?
Te di una dirección...
Estúdialo:
Lo tengo copiado...
Otra pregunta es qué es lo que se copia :) Lo más probable es que estés pidiendo que se copien más barras de las que hay en esa TF, imprime
kopeyka2:
Верно ли я провел эксперемент.?
...
... Incluso cuando se cambie a otro marco temporal, los valores deben ser del conjunto D1. Eso es exactamente lo que no veo. ¿O algo va mal? ¿Hay algo más que deba añadir a la hora de fijar un asa? Como no hay transferencia de búferes.
Simplemente, experimente con CopyByffer , lo que debe poner en él. Pero no está ahí.
No ha comprobado la disponibilidad de los datos, pero está intentando copiarlos. Mira el código de arriba - allí en segundo temporizador cada minuto y medio se accede al marco de tiempo no nativo - para mantener los datos actualizados. Y lo primero en el código es comprobar si los datos solicitados están disponibles. Si no están listos, entonces devuelve cero para el siguiente tick y el cálculo completo del indicador. Y cuando todos los datos han sido recibidos y calculados, y mostrados, la cantidad de datos calculados se devuelve al final - para no hacer el recálculo completo en el siguiente tick.
Gracias. Lo he leído todo. Seguiré buscando.
¿Qué buscas? El código de arriba funciona completamente. Puedes diseccionarlo como quieras. He señalado tu error: no compruebas la disponibilidad de los datos.
Incluso en esta línea aquí:
int lm=IBarShift(NULL,PERIOD_D1, iTime(NULL, PERIOD_CURRENT, limit));
¿Dónde está la comprobación de lo que devuelve iTime()? No hay control. Pero metes un resultado desconocido justo en iBarShift(). ¿Está seguro de que está dando a la función lo que espera?
Si el manejador se creó con éxito, se crea con los parámetros que se le pasaron durante su creación. Y pasará los datos del indicador en cualquier marco temporal. Sin embargo, dará los datos del plazo que se estableció durante la creación. Y para que se muestren correctamente en el marco temporal de trabajo, es necesario convertir los datos recibidos del mango del indicador al marco temporal en el que trabaja su indicador.
Eso es exactamente lo que pensé. La cuestión del malentendido es la palabra "parámetros". Así que empecé a mirar TODAS las variables que están involucradas en el handle --> CopyBuffer
1) Mi pregunta desde el principio era para cambiar la PANTALLA de tiempo para guardar los datos de la manija. Como en MT4.
Y de hecho resulta que sí:
SIEMPRE y en TODOS los plazos da el mismo valor de 10
Al no haber conseguido nada aquí, seguí adelante.
2) Y cito: "Obtiene los datos del buffer especificado del indicador especificado en la cantidad especificada en el array del buffer".
Es decir, al establecerel recuento a mano deberíamos tener un INTERVALO con los valores . ¡Y ahí están! ¡¡¡¡¡¡BUT!!!!!! Sólo cuando el período de la manija corresponde a
PERIOD_H1en la pantalla del monitor. Todos los valores se transmiten con claridad. Pero al pasar a otro marco temporal, NO hay datos en la pantalla.
¡¡¡¡NO se transmiten de ninguna manera!!!! Y mi pregunta era exactamente esa. ¡¡¡¡Y el número de barras no es tan importante aquí si NO están allí!!!!
He mirado el indicador sugeridoMTF_LRMA.mq5 pero es el mismo. Cambia a otro marco temporal en la pantalla y los datos pasan por el marco temporal de la pantalla. Lo necesito en una computadora de mano.
Por ejemplo: iClose(NULL, PERIOD_H1, 5); en todos los plazos dará el mismo valor: cierre en 5 barras en H1.
Hasta ahora todos los ejemplos estaban en la corrección dela cuenta del CopyBuffer. Pero la matriz está vacía.