![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ahora he rediseñado mi clase
Y añadió la herencia ... ( sospecho que puedo estar equivocado ) de la clase vr_MarketInfoLa clase vr_MarketInfo devuelve información sobre el punto, los dígitos del símbolo y comprueba el lote en busca de errores, y muchas otras cosas que necesito para el trabajo, incluyendo el mantenimiento de un registro en Excel y en un gráfico
Cuando se utiliza un método como el anterior se da una lista cuando se trabaja en Primer.Primer.Primer()
Me gustaría hacer algo más abreviado...
¿Dónde está la herencia? ¿Para qué sirve el puntero?
¿Dónde está la herencia? ¿Para qué sirve el puntero?
Escriba un libro de texto sobre MQL4+. Cooperen, conocedores, y escríbanlo. 50 dólares :)
Escriba un libro de texto sobre MQL4+. Cooperen, conocedores, y escríbanlo. 50 dólares :)
Todo fue escrito hace mucho tiempo.
MQL4 == C++ con ligeras limitaciones.
De hecho, ni el manual ni la documentación ofrecen detalles sobre cómo utilizar los punteros o el nuevo operador. Podemos adivinar o esperar a que pase el tiempo. O cuando alguien dice algo accidentalmente en algún lugar. Estoy sorprendido de cómo funcionan las cosas. También es interesante que salvo yo y el tópico VLadimir nadie parece necesitar nada. Aunque sigo creyendo que mucha gente no entiende este tema. Y por eso no se meten en esas cuestiones...
¿Qué tipo de detalles necesita? Hay un principio que se aplica en todas partes: mantener las cosas lo más sencillas posible. No te metas en el meollo de la cuestión sólo por estar en el meollo de la cuestión. Si un problema puede resolverse de forma sencilla, debe resolverse de forma sencilla.
Los punteros dinámicos son necesarios si su programa necesita trabajar dinámicamente con objetos: crear, eliminar durante la ejecución del programa. Si sabes de antemano cuáles y cuántos objetos se necesitan en el programa, no necesitas punteros dinámicos. Pero a menos que tengas muchos objetos, puedes simplemente crearlos en un bucle con new.
A mí por ejemplo me cuesta aprender la teoría, muéstrame un ejemplo y describe cómo las funciones definen el círculo, el cuadrado, el trapecio o el triángulo.
Uno de los artículos enlazados en el primer post tiene este ejemplo.
Una clase base con un método virtual. El descendiente tiene un método con el mismo nombre, en el que se realizan los cálculos.
A mí me cuesta aprender la teoría, muéstrame un ejemplo y describe cómo las funciones definen un círculo, un cuadrado, un trapecio o un triángulo...
Dejo el trapecio y el triángulo para mi propio trabajo:
Los punteros dinámicos son necesarios si el programa necesita trabajar dinámicamente con objetos: crearlos, borrarlos durante el funcionamiento del programa. Si se sabe de antemano cuáles y cuántos objetos se van a necesitar en el programa, no se necesitan punteros dinámicos. Pero a menos que tengas muchos objetos, es más fácil crearlos en un bucle con new.
Su clase es redundante en un 90%. Sólo dos funciones realizan el trabajo principal, éstas son openorders y consejo ¿Por qué se utiliza Sel, Buy SelStop, etc., cuando en realidad todas ellas sólo llaman a Openorders? Además, el tipo de orden se pasa como int, por lo que no está protegido. En lugar de int, es mejor utilizar su propia enumeración o el estándar ENUM_ORDER_TYPE. Y, en general, es mejor no utilizar nunca los números mágicos "1", "2", etc., sólo las enumeraciones. Esto evitará que envíe el valor de la orden izquierda a la función. La propia función de Openorders es demasiado grande. Obviamente, consta de dos bloques, el bloque de hacer un trato y el bloque de comprobar las condiciones. Cada uno de ellos debe ser como una función privada separada.
Es un buen comienzo, pero todavía hay mucho que aprender. La función de la punta se reescribiría mejor de la siguiente manera:
¿Qué detalles se necesitan? El mismo principio se aplica en todas partes: todo debe hacerse de la forma más sencilla posible. No hay que ir al desierto sólo para estar en el desierto. Si un problema puede resolverse de forma sencilla, debe resolverse de forma sencilla.
Los punteros dinámicos son necesarios si el programa necesita trabajar dinámicamente con los objetos: crear, borrar durante el funcionamiento del programa. Si se sabe de antemano cuáles y cuántos objetos se van a necesitar en el programa, no se necesitan punteros dinámicos. Pero excepto cuando hay tantos objetos, es más fácil crearlos en un bucle mediante new.