Probador de guiones y asesores de MG4 - página 3

 
AlexeyVik:
Bueno, no voy a demostrar que es verdad. Para una persona que no esté familiarizada con la programación C++ y la POO en general es bastante complicado y en absoluto por meras palabras o creación de un mito. Por extraño que parezca, lo entendí todo en una semana y escribí lo que necesitaba. Este es un mito completamente diferente; esto demuestra que el aprendizaje de mql5 está disponible incluso para los no profesionales, como yo.
En cualquier OOP se puede programar algorítmicamente, y utilizar la propia OOP sólo como una envoltura. Cuando empecé a codificar en Java, tampoco entendía la POO al principio, pero no he visto ningún problema en particular. Los problemas surgen después, porque es muy difícil leer las materias primas en lenguajes algorítmicos. Es mucho más difícil utilizar las bibliotecas en los lenguajes algorítmicos, porque hay que atornillarlas antes de utilizarlas.
 
Reshetov:
Se puede programar algoritmicamente en cualquier OOP, pero utilizar la OOP sólo como una envoltura. Cuando empecé a codificar en Java, tampoco entendía la POO al principio, pero no vi ningún problema. Los problemas surgen después, porque es muy difícil leer las materias primas en lenguajes algorítmicos. El uso de bibliotecas en algoritmos es mucho más difícil, porque hay que atornillarlas antes de usarlas.
Yuri, ¿por qué me explicas lo fácil que es? Para una persona es sencillo, para otra es muy sencillo, y para alguien es inaccesible. No he dicho que sea imposible aprender... Sólo hablaba de las diferencias entre los idiomas... lo familiar y lo nuevo.
 
Renat:
No es diferente en absoluto. Son dos lenguajes idénticos con un único compilador.
En este sentido, C++ no es diferente de JavaScript. Y es verdad.
 
Integer:
En ese sentido, C++ tampoco es diferente de JavaScript. Y es verdad.

No puede ver nada más en nuestro foro.

Pero no hay responsabilidad. Puedes soltar lo que quieras.

 
AlexeyVik:
Yuri, ¿por qué me explicas lo fácil que es? A algunos les parece sencillo, a otros muy sencillo y a otros inaccesible.
Es difícil de entender si no hay documentación, ni ejemplos, ni artículos. Pero cuando lo tienes todo, y puedes preguntar en un caso problemático en el foro, es una excusa podrida para hablar de inaccesibilidad.
 
Reshetov:
Es difícil de entender si no hay documentación, ni ejemplos, ni artículos. Pero cuando todo está ahí, y se pueden hacer preguntas en un caso problemático en un foro, es una excusa podrida para hablar de inaccesibilidad.

Vete. Personalmente, puedo dominar este idioma sin ningún problema ni duda. Pero para alguien es inaccesible en virtud de su carácter, puedes escribirle cualquier cosa.

Sigo sin entender por qué entraste en un diálogo y expresaste una opinión sobre un tema completamente diferente.

 
Renat:

Lo que no se ve en este foro.

Por qué, no hay responsabilidad. Puedes decir cualquier cosa.

Sí, eso es. Especialmente utilizando la autoridad de su posición superior.

Todas las lenguas son iguales, excepto las extravagantes. Todos ellos pueden ser aprendidos en 21 días por cualquier tonto. Todos los for, while, if, switch pueden tener una notación diferente, pero en principio no hay ninguna diferencia. Lo importante no es la forma de escribir los operadores, sino la infraestructura con la que interactúa el lenguaje. En este sentido, MT4 y MT5 son dos mundos diferentes.

La diferencia en todo. Empezando por lo pequeño - con la numeración de las barras en el indicador, en MT4 de derecha a izquierda, en MT5 de izquierda a derecha. Continuando con el más significativo - la posición agregada y la organización de los datos del historial comercial. La mayor diferencia en lo que a menudo se requiere - en la forma de acceder a los datos de las cotizaciones y los indicadores, la copia de datos requiere la comprobación, la indexación de izquierda a derecha y de derecha a izquierda, el tiempo de la barra se incluye en el rango, o no. No hay que olvidar la discusión de la función iBarShift() en CodeBase.

En MT4, para asegurar el funcionamiento estable del EA bastaba con comprobar el valor de retorno de OrderSelect(), pero en MT5 es necesario hacer comprobaciones en cada paso, incluso en los datos del último tick. También hay algunas sutilezas de la programación de MT5, que sólo aprenderá después de haber sufrido mucho, porque hay muchas trampas.

 

Apoyo de todo corazón su opinión.

Ampliar la funcionalidad es por supuesto algo bueno, pero bajo el capó de MT5 deberíamos haber dejado las funciones de MT4 por compatibilidad. Por supuesto, sólo aquellos que se ajustan al marco del modelo de trading de MT5.

Para que las fuentes de MT4 sean portadas con cambios mínimos.

Aunque uso MT5 como probador de multidivisas, pero las llamadas a funciones irrazonablemente complejas me repelen.

Las mismas funciones para cambiar a MT5(https://www.mql5.com/ru/articles/81), ¿por qué no implementarlas en el propio núcleo?

¿Por qué hay que renombrar las funciones para convertir los tipos, por ejemplo

CharToStr - CharToString,  StrToDouble - StringToDouble

Parece ser elemental, pero... ¿Reformas por reformas?

O funciones para trabajar con el tiempo, por ejemplo

int Hour()
int HourMQL4()
  {
   MqlDateTime tm;
   TimeCurrent(tm);
   return(tm.hour);
  }

Función de obtención de datos de un gráfico

double iClose(string symbol,
              int timeframe,
              int shift)
double iCloseMQL4(string symbol,int tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   if(CopyClose(symbol,timeframe, index, 1, Arr)>0) 
        return(Arr[0]);
   else return(-1);
}

Hay cientos de ejemplos de este tipo.

Por supuesto que MT5 es más funcional, pero MT4 es más conveniente. ¡Y esto es a veces mucho más importante!

 
Integer:

Exactamente. Especialmente aprovechando la autoridad de la posición superior de uno.

La afirmación "C++ tampoco es diferente de JavaScript en este sentido" es una tontería en la línea de discutir la diferencia entre MQL4 y MQL5. Y alguien lo soltó.

La credibilidad se gana con un largo y duro trabajo. He cumplido con este volumen y sigo lo que digo.


Hay una diferencia en todo. Empezando por uno menor - la numeración de las barras en el indicador, en MT4 de derecha a izquierda, en MT5 de izquierda a derecha. Siguiendo con el más significativo: la posición agregada y la organización de los datos del historial comercial. La mayor diferencia en lo que a menudo se requiere - en la forma de acceder a las cotizaciones de datos e indicadores, la copia de datos requiere la comprobación, a continuación, la indexación de izquierda a derecha, a continuación, de derecha a izquierda, el tiempo de la barra se incluye en el rango, o no. No hay que olvidar la discusión de la función iBarShift() en CodeBase.

Qué situación tan extraña tenemos. Cualquier idioma puede ser aprendido por un maniquí en 21 días, pero la numeración de barras y el acceso a los datos se convierten en un problema.

Una vez más, los lenguajes son casi iguales, se diferencian en un pequeño número de funciones y tienen un compilador común. MQL4 tiene un enfoque anticuado para el manejo de datos que es inaceptable para los sistemas con un historial profundo y detallado. Utilice las nuevas funciones CopyXXX en MQL4 y será como en MQL5.


En MQL4 para asegurar la estabilidad del EA bastaba con comprobar el valor de retorno de OrderSelect(), y en MQL5 la comprobación es necesaria en cada paso, incluso en la recepción de datos del último tick. También hay algunas sutilezas de la programación de la MT5, que tendrá que aprender sólo después de haber tenido un montón de contratiempos, porque hay un montón de trampas.

En MQL4 y MQL5, es necesario comprobar los resultados de las funciones en todas partes.

En MQL4 muchos operadores simplemente ignoraban la comprobación y tomaban los datos tal cual. En MQL5 escriben lo mismo, y luego sus programas de forex se bloquean cuando se lanzan sobre CFDs, futuros o acciones, simplemente porque los autores fueron demasiado perezosos para comprobar los parámetros de los instrumentos o la disponibilidad de datos.

 
Nemser:

A pesar de que uso MT5, como probador de multidivisas, pero las llamadas a funciones innecesariamente complicadas son repulsivas.

Piensa en lo que proporcionan las nuevas funciones de acceso a los datos y por qué se hacen así.

MetaTrader 4 tiene una profundidad limitada del historial, marcos temporales separados y acceso directo a sus barras de símbolos a través de Open/High/Low/Close/Time[xxx]. Este acceso directo es muy caro de implementar en términos de recursos y coste de CPU. Considera que cada Asesor Experto tiene su propia copia local de estos datos para evitar conflictos con otros Asesores Expertos y con el propio terminal.

Con el creciente número de símbolos (por ejemplo, en MT5 puede tener entre 5 000 y 10 000 símbolos) y utilizando el historial profundo de un minuto como base de todos los plazos, es básicamente imposible utilizar los métodos de MT4. No hay suficiente memoria RAM, y copiar grandes trozos mata el rendimiento. Por eso MT5 ya no mantiene automáticamente una copia oculta y cara del gráfico para cada experto.

En su lugar, hemos pasado a funciones CopyXXX muy económicas en las que el desarrollador solicita exactamente al array local la cantidad de datos que necesita, no todo el gráfico disponible. Así, el manejo de los datos locales es lo más rápido posible (en lugar del antiguo y costoso Open/High/Low/Close/Time[xxx]), además de que el autor puede almacenar en caché esos datos y utilizarlos con moderación en la siguiente llamada. El ahorro de memoria y CPU es enorme. Además, la propia plataforma es especialmente práctica para gestionar grandes bases de datos, ya que el acceso a las mismas se realiza siempre bajo demanda (en lugar de un acceso directo no supervisado), lo que permite una gestión flexible de las cachés.

También hay que tener en cuenta que la simplicidad de las llamadas Open/High/Low/Close/Time[xxx] en MQL4 se limitaba al símbolo y al marco temporal actuales, y todos los demás datos para otros símbolos y marcos temporales se obtenían mediante las funciones iClose/iLow(...), lo que provocaba graves retrasos. La transición en MQL5 a un único modelo de función CopyXXX ha mejorado radicalmente la situación, permitiendo a los desarrolladores obtener los trozos de datos necesarios en una sola petición, y no realizar múltiples llamadas bloqueadas (piense en los bloqueos en cada una de las llamadas a iClose).


Las mismas funciones para cambiar a MT5(https://www.mql5.com/ru/articles/81), así que ¿por qué no implementarlas en el propio núcleo?

Estas no son nuestras funciones y este artículo tampoco. Este artículo es un conjunto de muletas monstruosas, pero liberado para mostrar la diferencia.

He explicado repetidamente la necesidad de utilizar las nuevas características de MQL5, no las horrendas muletas.


¿Por qué tienen que cambiar el nombre de las funciones de conversión de tipos, por ejemplo

aparentemente elemental, pero... ¿reformas por reformas?

Este es el enfoque correcto para construir una arquitectura lingüística de calidad. Los nombres de las funciones deben ser comprensibles y no un conjunto de abreviaturas.

El nuevo lenguaje y las cómodas funciones de autocompletar nos han permitido revisar el lenguaje y hacerlo más limpio.


O, por ejemplo, funciones de tiempo Obtener datos de un gráfico ¡Y hay cientos de ejemplos de este tipo!

Son ejemplos de muletillas (suelen decir "para hacer una amigdalectomía con agujeros glandulares") que no deben servir de comparación.

El material teórico se ha quedado obsoleto desde que MQL4 se redujo directamente a MQL5 y ahora MQL4 tiene un montón de funciones compatibles.


Por supuesto, MT5 es más funcional, pero MT4 es más conveniente. Y eso es a veces mucho más importante.

No estoy de acuerdo.

MetaTrader 5 es mucho más fácil de usar, tanto en términos de software como de lenguaje.

Razón de la queja: