Errores, fallos, preguntas - página 2652
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
¿Por qué te peleas? ¿Por qué no hacemos algo útil juntos?
Stanislav publicó un script fantásticamente útil en KB. Crea fácilmente archivos con archivos MQL y recursos.
Tengo un EA con cientos de archivos mqh. Usando el script ahora puedo transferir fácilmente mi EA al código fuente, controlar las versiones y compartir con otros.
Gracias. Intentaré desglosarlo y comprobar las opciones con los eventos del gráfico.
Echa un vistazo al hilo, recientemente se trató el tema en detalle -https://www.mql5.com/ru/forum/327888
Anton Shpilyuk: 2) Циклом-перебором до тех пор пока дата не будет совпадать(минус - скорость работы) это так?
Sobre el tema de "obtener el índice de barras por tiempo copiado"
¡Horror, realmente lo es! La tarea consistía en obtener las barras del marco temporal M1 en el indicador, aunque el propio indicador funciona en el marco temporal M5.
1. tuvimos que inicializar el marco temporal deseado en OnCalculate() para cargarlo antes del inicio del indicador (después de la inicialización el FirstStartFlag = false;). Recuerda que en los indicadores, si no está cargado, dará -1 o no está completamente cargado, por lo que comprobamos cuánto está cargado, si no es suficiente, vamos al principio dereturn(0);
declarar la matriz MqlRates rates[]; al principio, dondecnt_bars*5; - recalcular el número de barras M5 en M1
Después, actualizamos los datos históricos de M1 en el cuerpo de la función requerida cada vez que realizamos cálculos:
Además, en el bucle de barras M5, hacemos un bucle incrustado de búsqueda del índice de la barra M1 correspondiente,siendo time[s] la barra M5 actual del marco temporal que se está procesando:
Y luego usamos este índice para encontrar los datos necesarios de la barra M1, en mi caso son rates[IndexRates-5].time y rates[IndexRates-k-4].close
Menos mal que este bucle anidado recorre las barras rápidamente, incluso en un historial de 90 días. Pero me gustaría poder buscar índices de barras en el array rates[].time como una búsqueda binaria utilizando la función ArrayBsearch
Breve resumen del fallo:
Cuando hay herencia de clases A <= B <= C <= D
y se implementan dos funciones de sobrecarga, por ejemplo, una con el parámetro A* y otra con el parámetro B*,
Cuando se pasa un objeto C* o D* a una función de este tipo, el MQL provoca un error de compilación "llamada ambigua a una función sobrecargada".
Pregunta: ¿Existe una solución más sensata para este error idiota que la presentada anteriormente?
Aquí vamos con más "Por qué MQL != C++"...
¿Por qué comentar algo si no se ha llegado al fondo del asunto?
¿Por qué comentar algo si no se ha llegado al fondo del asunto?
Porque hace tiempo que abrí un tema para esas aclaraciones (porque nadie como tú podría hacerlo por sí mismo).
¡Y luego que la diferencia de idiomas no tiene nada que ver con los errores o bugs!
El MQL está desmoralizando poco a poco:
Breve resumen del fallo:
Cuando hay herencia de clases A <= B <= C <= D
y se implementan dos funciones, por ejemplo, una para A* y otra para B*,
Al pasar un objeto C* o D* a una función de este tipo, el MQL provoca un error de compilación "llamada ambigua a una función sobrecargada".
Pregunta: ¿Existe una solución más sensata para este error idiota que la presentada anteriormente?
Pues bien, el STL no se transpone uno a uno. Hay que fijarse bien en los detalles. La forma más fácil es escribir toda la funcionalidad posible en los métodos abstractos de una clase base o interfaz, y en los descendientes - ya sea implementación o =delte. En este caso, es necesario pasar punteros o referencias del mismo tipo a los métodos de la clase base. Aunque hay un mal inevitable en la forma de una tabla virtual, pero es mejor arreglar la arquitectura de tal manera que no haya ramificaciones dinámicas_cast costosas en ninguna parte.