El problema de la transferencia de MT4 a MT5. O, más precisamente, la incapacidad de ejecutar algunos algoritmos en MT5 sin'err. - página 10
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 extraño, pero no se me había ocurrido hacerlo antes:
Se desharía de una masa de comprobaciones de errores, como la asignación de memoria.
no es una opción, el EA se eliminará del gráfico, y sólo hay que "salir al SO" antes del siguiente tick desde cualquier lugar del programa
Lo más probable es que se pueda envolver elegantemente todo en una macro, para llamar de forma segura a las funciones relacionadas con la falta de disponibilidad de datos en el tick actual, aquí hay un "dummy"
para la legibilidad del código sería bueno escribirlo así:
¿Es realista tratar de envolver una macro y "salir al sistema operativo" en caso de fallo?
¿es realista envolver este Try en una macro y "salir al SO" en caso de fallo?
¿No?
A menudo escribo todo tipo de mínimos al principio de una función, con undefine al final. Naturalmente, si la acción se repite a menudo, de lo contrario no tiene sentido.
Y te equivocas con el aborto, es perfecto con algunos errores.
¿No?
¡Sí!
pero lo ideal sería que lo quisiera en su lugar:
así:
no es cuestión de hacer la firma de la función Open() diferente... Pero de esta forma conseguiré lo que realmente me gustaría. ;)
----------------------
PD: como opción incluso las variables descritas globalmente Tryerror o bool Tryresultar harían - el propósito de una línea "llamada segura", si esta llamada terminó con una salida de error del cuerpo OnTick()
así:
Dudo que sea posible, incluso en los pluses (puedes lanzar una excepción, pero es poco probable). Pero las cosas suceden, tal vez alguien sorprenda ...
Así que, de un vistazo rápido:
que es probablemente el máximo en esta situación.
Totalmente tonto, puedes hacerlo, ¿no?
No lo he compilado, pero debería funcionar.
Soy tan estúpido que no puedo evitarlo, ¿verdad?
No lo he compilado, pero debería funcionar.
¡¡¡Shaitan la máquina!!! ¡Funcionó!
error comprobado y simulado ( shift>5 )
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 0 : 1.115010
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 1 : 1.114670
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 2 : 1.114590
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 3 : 1.114400
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 4 : 1.115240
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) 5 : 1.115450
2019.07.31 16:58:48.154 tst1 (EURUSD,H1) Error: algo va mal
¡Impresionante! Y el código de la macro resultó ser realmente sencillo
¡GRACIAS! - Definitivamente eres un mago).
Por favor, siéntase libre de usarlo.
La macro anterior tiene una desventaja - el tipo de helper está codificado, no se puede pasar a la función Try que devuelve la cadena y luego el doble sin crear dos macros. Tengo un interés deportivo: cómo evitarlo (escribir una macro para todos los tipos. En µl sin opciones, en c++, aunque no es realmente necesario allí, pero aún así)? ¿Nadie está dispuesto a sugerir su propia variante (bueno, hay que mantenerse en forma, después de todo)?
Puede utilizarlo.
La macro anterior tiene una desventaja: el tipo helper es rígido, no se puede pasar una función que devuelva una cadena a Try
¿Por qué no? ¡El signo + nunca ha sido cancelado!
así es como he peinado su macro, y como pienso utilizarla:
ahora el parámetro de la macroEXCEPT es una acción de excepción, funciona bien como return o simplemente ; - si decides no imprimir en el registro, pero no dejes el cuerpo de OnTick()
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 0 : 1.113350
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 1 : 1.114180
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 2 : 1.115110
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 3 : 1.115010
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 4 : 1.114670
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) 5 : 1.114590
2019.07.31 19:01:28.353 tst1 (EURUSD,H1) double Open(int) : error #999 algo va mal Txt
Bueno, es decir, es así:
La gente aquí no parece apostar. Oh, vamos.