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
¿Es una clase puramente de prueba o realmente la vas a utilizar?
Elsegundo, estoy escribiendo de todos modos bajo MT4, incluso para mí - no funciona en el probador para algunos símbolos, si veo algo útil en MT4, voy a cambiar a MT5 utilizando MT4Orders - He comprobado mi "trabajo creativo" sin problemas con esta biblioteca
primero, quiero ver la idea de un OOP adecuado - es por eso que estoy probando, para ver lo que va a salir, hasta ahora va bastante desordenado.... ya veremos, tengo tiempo, aquí está el cargador que decidí hacer yo mismo ))))
Sé que no es la mejor manera de inicializar antes del inicio del código principal, o más bien yo solía pensar que sí, pero nunca lo he comprobado, no importa cuántas nuevas construcciones he tenido - en MQL todo está siempre disponible, incluso en el nivel de visibilidad global, vi a la gente de las fuentes ir directamente a la parte superior y escribirlo de esa manera:
y estas inicializaciones inválidas han estado funcionando durante años de compilación a compilación. Así que, los desarrolladores mimaron a la gente hasta el hueso ))))
SZZY: aquí en general, como siempre cuando se utiliza OOP - lo principal es dividir correctamente el problema en elementos complejos y no heredar de todo a la mano. No sé dónde "poner" la salida de texto de los errores - que necesita en todas partes, en cualquier clase y en cualquier lugar del programa, lo más probable es que usted tendrá que crear una clase base como@Vladimir Simakov mostró por encima de su código
pp 1-3 todo solucionable, PERO... OK, aquí con la estática ayudada, que sea así porque hay una ayuda, al menos algo que justifique su decisión, ahora el código es el siguiente:
creó 3 instancias de Cdeal, se metió en el registro:
...
¡hasta ahora todo funciona como está previsto!
Pero de todos modos, su versión original era mejor. No sacrifique la fiabilidad para ahorrar una línea de código )
¿Cuál? - Tengo la mitad del tema en mis variaciones ))))
pero sí, ¡tienes razón al cien por cien!
SZY:
la forma más sencilla y fiable - crear una instancia de la clase a través de new en OnInit() - y copiar todas las variables de entorno del terminal inmediatamente, pero no es la mejor manera - si planeo abrir una orden inmediatamente al inicio del constructor en este ejemplo, entonces esta instancia de la clase probablemente se borrará y luego posiblemente se volverá a crear - esto ya trae algunos problemas debido a las llamadas repetidas - empiezo a cargar el terminal de nuevo, de nuevo desperdiciando memoria.... en general, no se puede resolver de esta manera
ZZZY: tal vez otro día de experimentos, y eventualmente tomar el ejemplo de @Vladimir Simakov- todo está muy claro allí
He dibujado mi clase, que debería inicializar los campos una vez con valores constantes, y parece que funciona como se pretende:
No me gustan dos cosas:
1. Repito la llamada a SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP) - porque el orden de inicialización no está definido, es decir, no es seguro que primero se inicialice VolumeSTEP y sólo después se llame a GetDigitsInVolumeStep()
2. Quiero deshacerme del método estático static int GetDigitsInVolumeStep() - He visto un video en youtube diciendo que en la POO pura no se deben usar métodos estáticos, y ahora estoy luchando contra molinos de viento
el enlace al video, es esencialmente el mismohttps://youtu.be/lfdAwl3-X_c yhttps://youtu.be/zME4SOCHT0I
¿cómo puedo reescribir estos 2 puntos que no me gustan?
1. No hay nada malo en llamar a esta función dos veces.
2. ¿No te confunde que los que están en contra del uso de funciones estáticas no den el más mínimo argumento?
Es mejor que no veas vídeos de cualquiera, sino que leas libros.
2. ¿no te confunde que los que están en contra del uso de las funciones estáticas no den el más mínimo argumento?
Y eres el primero que me apoya en que el vídeo no se corresponde con nada de la práctica, ya escribí en otro hilo mi opinión sobre el vídeo - el ponente ni siquiera pudo responder a las preguntas de los alumnos
y eres el primero que me apoya en que el vídeo no se corresponde con nada de la práctica, escribí en otro hilo mi opinión sobre el vídeo - el reportero ni siquiera pudo responder a las preguntas de los estudiantes
No creo que la OOP consista en recortar las propias capacidades en aras de seguir ciegamente los postulados infundados de algunos bocachanclas de Internet, donde cada uno barre a su manera.
No creo que la OOP sea la reducción de las propias capacidades en aras de seguir ciegamente los postulados infundados de algunos bocazas de Internet, donde cada uno barre a su manera.
si has visto el vídeo, deberías entender que el objetivo es .... bueno, en general, tampoco entiendes nada y no eres lo suficientemente maduro - al menos así me lo explicó A100
SZZ: Experimentaré un poco más tarde con las interfaces, quizá aparezca alguna "entidad-belleza" ))))
He visto su vídeo sobre la estática, todo por escribir así:
Bueno, escribir un wrapper sobre una estática es un problema, ¿no?
class Stateless_with_state { Stateless q; Data d; call() {q::call(d);} };
Y a través de las plantillas es claramente más eficiente. Me ha gustado la pregunta del público https://www.youtube.com/watch?v=75U9eefFYoU#t=33m25s
ZS: Experimentaré con las interfaces un poco más tarde, quizá aparezca alguna "entidad-belleza" ))))
Comprobado si "Patrón OOP - Patrones de comportamiento - Estrategia" funcionará
2019.08.31 21:04:40.441 tst (EURUSD,H1) Estrategia_1::Estrategia_1
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_1::Algorithm
2019.08.31 21:04:40.442 tst (EURUSD,H1) Estrategia_2::Estrategia_2
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Estrategia_2::Algoritmo
Funciona sin problemas en mi opinión
comprobado si el "Patrón OOP - Patrones de comportamiento - Estrategia (Strategy)" funcionará
2019.08.31 21:04:40.441 tst (EURUSD,H1) Estrategia_1::Estrategia_1
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_1::Algorithm
2019.08.31 21:04:40.442 tst (EURUSD,H1) Estrategia_2::Estrategia_2
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Estrategia_2::Algoritmo
me funciona sin problemas
El operador new devuelve un puntero. Por supuesto, los desarrolladores metieron la pata con la desreferenciación implícita y por eso tu versión funciona, pero prefiero no colgarme de cosas indocumentadas.
2. Ciertamente no es C++, pero es muy similar, así que las listas de inicialización (no sé si de eficiencia) son kosher.