Comentarios sobre MQL5

 

Llevo mucho tiempo utilizando MQL4 y me alegró mucho saber que MQL5 introducirá por fin la programación orientada a objetos (OOP), porque podré escribir más rápidamente sistemas de análisis automatizados más flexibles. Pero no encuentro palabras para expresar lo mucho que me ha decepcionado. Me horrorizaba no poder operar completamente con punteros y trabajar con objetos de forma fácil y rápida, lo que es especialmente cierto para el desarrollo de sistemas, que son inútiles el 95% de las veces. Todos escribimos programas en MQL para probar alguna teoría, realizar algún análisis automático de datos para verificar una idea posteriormente y optimizarla, y hay que hacerlo muy rápido, porque la idea tiene que ser optimizada muchas veces. Incluso si te abstraes del lenguaje, el desarrollo de sistemas de trading o de análisis en este contexto es un trabajo ingrato, porque te pones a trabajar sabiendo que lo más probable es que no sea óptimo o incluso inútil. Qué podemos decir, si los desarrolladores de MQL5 nos han dado, según sus palabras, una herramienta súper segura, en la que es imposible dispararse, pero sobre la implementación de una simple idea o en otras palabras de un algoritmo elemental, hay que trabajar durante decenas de horas.

Bueno, desarrolladores de MQL5, he leído un párrafo interesante en el libro de Straustrup, y al instante recordé su "producto" en MQL5:

"La relación entre el lenguaje en el que pensamos (escribimos programas) y las tareas (soluciones) que podemos imaginar es muy estrecha. Por esta razón, restringir las capacidades del lenguaje para evitar errores de programación es, en el mejor de los casos, peligroso. Al igual que en el caso de las lenguas naturales, es muy beneficioso conocer al menos dos lenguas. Un lenguaje proporciona al programador un conjunto de herramientas conceptuales. Si estas herramientas son inadecuadas para la tarea en cuestión, simplemente se ignoran. El diseño de calidad y sin errores no puede garantizarse simplemente por la presencia o ausencia de características específicas en un lenguaje".

Así que, basándome en mis comentarios anteriores, lo que has programado por programar es completamente inadecuado para los propósitos que MQL pretende servir. Gracias por obligarme a ignorar simplemente una herramienta como OOP en MQL5.

 

Al menos debería dar algunos ejemplos.

¿Qué quieres decir con que no puedes operar completamente con punteros y trabajar con objetos de forma rápida y sencilla? Nunca he tenido ningún problema con esto al desarrollar esquemas a gran escala.

 

Pocos lenguajes modernos, manejables y seguros, permiten operar con punteros de forma "completa" (es decir, peligrosa). Especialmente en MQL4/MQL5, donde la seguridad y la controlabilidad deben ser primordiales.

Todo lo demás está presente y disponible. Y también hay punteros seguros.

Lo más probable es que no se haya dado cuenta, sino que haya hecho rodar su propio montón de pensamientos. No hay otra forma de llamar a esta corriente infundada.

 
Renat Fatkhullin:

Pocos lenguajes modernos, manejables y seguros, permiten operar con punteros de forma "completa" (es decir, peligrosa). Especialmente en MQL4/MQL5, donde la seguridad y la manejabilidad tienen que estar en primer lugar.

Todo lo demás está presente y disponible. Y también hay punteros seguros.

Lo más probable es que no se haya dado cuenta, sino que haya hecho rodar su propia pila de pensamientos. No hay otra forma de llamar a esta corriente infundada.

Por favor:

https://www.mql5.com/ru/forum/35326

https://www.mql5.com/ru/forum/1111/

¿Nombre un lenguaje ampliamente utilizado en el que no pueda asignar una dirección diferente a un puntero? ¿Nombre un lenguaje de uso común en el que no pueda asignar una referencia de un tipo a un objeto diferente del mismo tipo? ¿En qué otro lugar me vería obligado a describir un constructor o una función de copia debido a estas limitaciones de su lenguaje?

Y si la controlabilidad es primordial para usted, ¿por qué otras lenguas controladas no imponen restricciones similares?

Personalmente, para mí, lo más importante no es la seguridad y la controlabilidad, sino la rapidez con la que puedo poner en práctica la idea, esto es extremadamente justo en el contexto de las ideas de comercio, los que no están de acuerdo con esto, o bien sobreestimar el valor de sus sistemas, o programar por el bien de la programación, no un resultado específico.

 

Renat, tú mismo reconoces lo que escribí en el primer post y velas la pérdida de flexibilidad en la seguridad convirtiéndola en una ventaja innegable, aunque no es cierto en absoluto.

Битый указатель (именно указатель как сущность и рабочая единица языка) контролируется системой и безопасно обрабатывается, выдавая при необходимости рантайм ошибку, указывая на ошибку автора. А вот "физическая" ссылка не может быть проконтролирована, да ее и нет в языке (не путайте с передачей параметра по ссылке, где это лишь контролируемый системой метод связи).

Eliminar los enlaces peligrosos es el primer paso para crear un lenguaje seguro a partir del monstruo que es C++ hoy en día. Hemos eliminado las referencias a propósito,perdiendo deliberadamente laflexibilidad al deshacernos del autodisparo.

Dame la capacidad de dispararme en el pie, ya que sin esta capacidad me veo obligado a controlar la programación, y quiero controlar la idea que quiero implementar.
 
urusov:

Por favor:

https://www.mql5.com/ru/forum/35326

https://www.mql5.com/ru/forum/1111/

¿Nombre un lenguaje de uso común en el que no pueda asignar una dirección diferente a un puntero? ¿Nombre otro lenguaje ampliamente utilizado en el que no pueda asignar una referencia del mismo tipo a un objeto diferente? ¿En qué otro lugar me vería obligado a describir un constructor o una función de copia debido a estas limitaciones de su lenguaje?

Y si la controlabilidad es primordial para usted, ¿por qué otras lenguas controladas no imponen restricciones similares?

Personalmente, para mí, lo más importante no es la seguridad y la capacidad de control, sino la velocidad a la que puedo implementar la idea, es extremadamente justo en el contexto de las ideas de comercio, los que no están de acuerdo con esto, o bien sobreestimar el valor de sus sistemas, o programar por el bien de la programación, en lugar de un resultado específico.

¡Camarada! No traslade su desconocimiento del idioma al ámbito de responsabilidad de los desarrolladores. En MQL5 puedes asignar libremente varios objetos a punteros y pasar estos objetos como punteros. Al igual que en otros lenguajes modernos, como C# y Java, MQL5 tiene una comprobación de tipos explícita, y su conversión sólo puede llevarse a cabo dentro de la misma jerarquía de clases (herencia). De nuevo, se implementa exactamente el mismo comportamiento en otros lenguajes ampliamente utilizados como C# y Java.

 
urusov:

Renate, tú misma reconoces todo lo que escribí en el primer post y velas la pérdida de flexibilidad en la seguridad como una ventaja innegable, cuando no es así.

Dame la capacidad de dispararme en el pie, ya que sin esta capacidad me veo obligado a controlar la programación, y quiero controlar la idea que quiero implementar.
A juzgar por tus anteriores posts, has aprendido a dispararte en el pie con maestría. Ahora sólo queda aprender a programar.
 
Me gusta el 5-Rka. Lo más probable es que el que empezó no tuviera suficiente tiempo para entenderlo y sacara una conclusión precipitada. Es un poco complicado al principio, claro, pero merece la pena.
 
urusov:

Renate, tú misma reconoces todo lo que escribí en el primer post y velas la pérdida de flexibilidad en la seguridad convirtiéndola en una ventaja innegable, cuando no es así en absoluto.

Dame la oportunidad de dispararme en el pie, porque sin esta oportunidad tengo que controlar la programación, y quiero controlar la idea que quiero implementar.

Deberías educarte y pensar más en la seguridad.

No estoy admitiendo nada, pero he justificado en los enlaces anteriores (que se lanzan incluso sin referencia clara a un lugar concreto), qué, cómo y por qué se hizo en MQL4/MQL5. La experiencia práctica desde 2001 (cuando salió MQL) en el desarrollo de lenguajes de aplicación para plataformas de negociación nos permite entender claramente lo que se necesita para lograr un resultado global.


¿Quieres velocidad desenfrenada? Escribir en C++ e incluir DLL. Pero incluso en MQL5 nos hemos puesto al día con los compiladores nativos de C++: Prueba del nuevo compilador de MQL5 para plataformas x64 - ¡aceleración de 2 a 10 veces!

 
urusov:

¿Nombre un lenguaje ampliamente utilizado en el que no pueda asignar una dirección diferente a un puntero? ¿Nombre otro lenguaje ampliamente utilizado en el que no pueda asignar una referencia del mismo tipo a otro objeto? ¿En qué otro lugar me vería obligado a describir un constructor o una función de copia debido a estas limitaciones de su lenguaje?

Bueno, al menos mira en la biblioteca estándar https://www.mql5.com/ru/docs/standardlibrary y ve el código (en MQL5\Include\*) que opera completamente con referencias.

Evidentemente, usted no conoce el idioma en absoluto.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Renat, por favor revisa este hilo

https://www.mql5.com/ru/forum/60581/page2

Куда пропала история сигнала?
Куда пропала история сигнала?
  • www.mql5.com
Помогите разобраться, пропала история торговли сигнала (доходность, сделки и прочее). - Страница 2 - Категория: общее обсуждение