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
Se pueden cometer errores, el material es bastante voluminoso.
El tema de la portabilidad (más concretamente, el tema de la escritura de una clase emuladora con métodos MQL4) fue abordado en otro artículo (esperamos que esté terminado). En el proceso de lectura del material, le pedimos al autor que escribiera un artículo en forma de libro de referencia para cubrir todas las funciones MQL4 (excepto el trading - pronto verán una de las soluciones para ellas), que proporcionara un análogo para cada una de ellas en MQL5, en general, que lo pusiera todo junto para que los que reescriben programas MQL4 pudieran encontrar rápidamente un análogo. Sobre el deseo irrefrenable, si hablamos del número de secciones consideradas - insistimos en cubrir todas las funciones (resultaron ser más de 250).
En cuanto a la comparación de funciones en algunas secciones, no se trataba exactamente de una comparación. Era necesario dar un análogo, aunque sea el mismo. Para todas las funciones. Así que parece que hay una comparación, pero se puede decir de la comparación que, por ejemplo, las funciones matemáticas son los mismos. Por cierto, como recomendación, probablemente sería útil mencionar esto al principio de cada sección, que es algo que hay que tener en cuenta.
Por esta razón (arquitectura de las funciones del emulador) el autor tenía algunas cosas no obvias en la implementación (por ejemplo para iLowest/iHighest globales Open[]...High[]..., que se declaraban globalmente de antemano y se hacían AsSeries en OnInit), que estaban implícitas como en el emulador, naturalmente para universalidad en las funciones es mejor usar arrays locales.
En cuanto al trabajo con indicadores técnicos, puede haber muchas preguntas, trabajar con ellos no debe ser como en MQL4 - es mejor crearlos manualmente en OnInit y hacer referencia a los descriptores, en lugar de crearlos cada vez en funciones locales. Pero el enfoque sugerido por el autor también funciona, porque el terminal no destruye inmediatamente los indicadores. Así que hay un montón de sutilezas.
Lo importante es que ahora hay algo que discutir, si encuentra errores (incluidos los causados por la estructura propuesta de funciones) - ofrecer sus variantes.
¡¡¡si este es un libro de referencia, que sea un libro de referencia!!!
o no es pescado y carne
¡por qué se utilizan arrays globales para cálculos intermedios!es posible asignar espacio para dichos cálculos dentro de una función. ¿por qué poner una referencia?
en algunas funciones se modifican tus atas.
otra vez el mismo yahigest!!! modificar el buffer global dentro de una funcion es atas!
Bueno, aunque ya se ha arreglado mientras escribía, pero seguro que este estilo se rastrea a lo largo del artículo.
Cuando el constructor de precios mcl4 acceda a estos arrays encontrará.....
a continuación tenemos 6 secciones de comparaciones
funciones mcl4 a mcl4
sólo comparaciones.
Entonces de la nada comienza
tabla de sustitución de funciones.
2 secciones
luego otra vez una comparación
3 secciones
luego las sustituciones
funciones
y luego otra vez....
Primero en la tabla está la función µl4 y luego 2 tipos de celdas.
que contiene un sustituto reescrito a mcl5.
o, 2 tipos de celdas, solo una funcion identica.
y esto es a lo largo de todo el articulo... entonces esto es una transferencia a µl4 o un libro de referencia.
¡deja una cosa!
también hay muchos fallos que llevarán a un estado de no funcionamiento.
porque ya he aprendido mucho sobre las peculiaridades de almacenar datos en arrays µl5.
y en muchas funciones será necesario, incluso diría que es necesario determinar el tamaño del array,
en algunas será necesario determinar el sentido de la indexación.
por la diferencia de procesamiento de datos en el entorno mcl4 y mcl5.
porque ya puedo sentir que compilará, pero no arrancará.
Desde luego, esa guía de la que hablas sería muy útil.
Hay un par de puntos interesantes en el artículo
pero no es ni pescado ni carne.
Deja sin reemplazos solo una función y su análogo en mql5.
esto será útil para una reescritura completa del indicador mql4 a mql5.
¡con todas las referencias a la documentación!
al diablo con estos burdos sustitutos.
por supuesto, perdon por una critica tan dura, pero publicar un articulo tan crudo cuando mas se espera.
con errores tan criticos.
qué se aprenderá de ello....
claramente una herejía...
Y por último, ¿por qué no hay archivos adjuntos?
Si se han movido tantas funciones, ¿por qué no hay un archivo .mqh?
donde estarían recogidas todas las funciones... especialmente 250 de ellas... copiar 1 por 1 para transferir mqh4 ....
vuelve a sugerir que el autor intenta ocultar algo deliberadamente.
Saludos Vasily.
...
porque ya me huelo que está compilando, pero no arranca.
...
Efectivamente, escribir una función que compilará sin errores no significa que puedas incluirla con seguridad en tu código. El mayor problema es traducir la lógica del programa. Es como traducir poesía: la has traducido al pie de la letra, pero no rima. Por eso no basta con traducir las funciones. La tarea de pasar de un idioma a otro no es tan sencilla como parece.
Veo una solución en forma de emulador con un mecanismo sencillo y claro para transferir indicadores, scripts y Asesores Expertos a MQL5. Actualmente estoy trabajando en ello.
¡¡¡Si es una guía, que sea una guía!!!
No es fish and chips.
....
Vasily, gracias por tu crítica constructiva, espero que el autor tenga en cuenta los deseos y proporcione variantes de funciones autosuficientes sin el uso de arrays globales.
El artículo estaba destinado a ser una referencia - para proporcionar correspondencias entre las funciones MQL4 y MQL5.
Esta es probablemente la razón de la impresión de que el autor está tratando de ocultar algo: explicaciones mínimas, muchas tablas, ningún ejemplo completo de uso. Pero esto es una especificidad del género.
Hay muchas sutilezas de trabajo con funciones, los detalles deben ser considerados en detalle y con ejemplos, pero estos son los temas de otros artículos - esperamos que aparezcan. El tema de la migración desde MQL4 está lejos de agotarse con este artículo, se están preparando muchos materiales interesantes que se publicarán pronto.
.
Debe entenderse de la siguiente manera: la implementación es demasiado complicada y no está justificada. Después de todo, el objetivo es abandonar por completo las funciones MQL4.
Exacto. Se trata de explicar qué (otros) medios deben utilizarse ahora, debido a qué cambios en la arquitectura del sistema. Dado que este material se da en forma de libro de referencia, es importante llenar todas las celdas del mismo con una "solución". Si no hay un análogo, entonces hay otro enfoque.
Es difícil leer un libro sobre cada indicador como mínimo.
Ni siquiera yo puedo presumir de ello.
... es importante llenar todas las casillas con "solución". La ausencia de análogos significa que existe otro enfoque.
Se añade la sección 17 con una referencia a la "solución".
Sugiere a qué características "sin análogos" prestar atención primero, porque no todas son tan relevantes y necesarias. Intentaré hacer cambios.
17 es bueno. Sobre el primer turno - no me corresponde a mí juzgar. Cada uno que convertirá mql4 a mql5 tendrá su propia cola. Para no perderme nada, yo simplemente rellenaría el orden de arriba a abajo, empezando por AccountFreeMarginCheck, AccountFreeMarginMode, ArrayCopyRates, ArrayDimension, etc (sólo quedan 9).
Estimado Vasily
Gracias por sus comentarios, las funciones de la sección 18 han sido actualizadas. Por favor, compruebe la versión actual.
El autor ha hecho mucho trabajo, puede haber errores, los arreglaremos juntos.
La función TFMigrate(int tf) es necesaria para sustituir los valores correctos de los plazos de MQL5. Por ejemplo, en MQL4 el valor numérico de la constante PERIOD_H1 es 60, y en MQL5 el valor numérico de PERIOD_H1=16385, es decir, TFMigrate(60)=16385.
En mi opinión, son necesarias dos funciones para trabajar con TF en condiciones de migración:
1. Convierte el número de segundos a TF - digamos ENUM_TIMEFRAMES SecondToPeriod (int Value);
2. Convierte el periodo en segundos - digamos int PeriodToSecond(ENUM_TIMEFRAMES Value).
Lo que hice con éxito en mi módulo de migración al principio (también hay una opción DLL).
PS
Para maximizar el cumplimiento con MQL4, yo personalmente me deshice de todos los períodos no estándar para ello