Errores, fallos, preguntas - página 2053

 

¿Por qué el compilador se salta esto? (MT4/MT5).

double x=1;
double a=1/(x*0);

Sólo en tiempo de ejecución aparece la división por 0.

 
Kirill Belousov:

¿Por qué el compilador se salta esto? (MT4/MT5).

Sólo en tiempo de ejecución aparece la división por 0.

Probablemente porque el compilador no calcula el valor, sólo traduce el código del programa a código máquina.

 
¿Qué pasa con la clasificación de las señales?

Estoy en el último lugar o en el medio
 

¿Qué pasa con la rejilla de Gann en MT5? ¿No puede mover los extremos de la línea de control a lo largo del eje Y?

 
En el probador de estrategias, cuando el código tiene sustituciones de autocompletar para las variables de instancia en forma de comentarios, entonces en la configuración de optimización super, pero después de la optimización los nombres reales de las variables están en la tabla. Es confuso: hay que buscar en el código todo el tiempo.
 

Estimada Administración.

Error en el informe 1653 del Probador de Estrategias de MT5

broker ActiveTrades

mi Asesor Experto primero abre una posición, luego modifica los stops (SYMBOL_TRADE_EXECUTION_MARKET)

Esto se muestra en los registros normalmente.

Pero al guardar el informe no hay paradas en el mismo.

SYMBOL_FILLING_MODE=3 SYMBOL_TRADE_EXEMODE=2 SYMBOL_EXPIRATION_MODE=7 SYMBOL_TRADE_MODE=4 SYMBOL_TRADE_STOPS_LEVEL=0 SYMBOL_TRADE_FREEZE_LEVEL=0 SYMBOL_ORDER_MODE=127 SYMBOL_START_TIME=0 SYMBOL_EXPIRATION_TIME=0 SYMBOL_SPREAD=5 SYMBOL_SESSION_DEALS=0
IE      0       09:43:35.667    Core 1  2017.08.01 02:10:00   market buy 0.01 EURUSD (1.18278 / 1.18283 / 1.18278)
JP      0       09:43:35.667    Core 1  2017.08.01 02:10:00   deal #2  buy 0.01 EURUSD at 1.18283 done (based on order #2)
 OH      0       09:43:35.667    Core 1  2017.08.01 02:10:00   deal performed [#2  buy 0.01 EURUSD at 1.18283]
LN      0       09:43:35.667    Core 1  2017.08.01 02:10:00   order performed buy 0.01 at 1.18283 [#2  buy 0.01 EURUSD at 1.18283]
EQ      0       09:43:35.667    Core 1  2017.08.01 02:10:00   ModifyOrders Modify  2 POSITION_TYPE=0 stoploss=1.17678 takeprofit=0.0 request.sl=1.17678 request.tp=0.0 POSITION_SL=0.0 POSITION_TP=0.0 SYMBOL_BID=1.18278 SYMBOL_ASK=1.18283 stops_level=0
OR      0       09:43:35.667    Core 1  2017.08.01 02:10:00   position modified [#2  buy 0.01 EURUSD 1.18283 sl: 1.17678]
DE      0       09:43:35.667    Core 1  2017.08.01 02:10:00   ModifyOrders Modify = 10009 symbol EURUSD volume 0.0 action 6 tp 0.0 sl 1.17678 type 0 price 0.0   Request completed
CL      0       09:43:35.667    Core 1  2017.08.01 02:10:00   Result = 10009 symbol EURUSD volume 0.0 action 6 tp 0.0 sl 1.17678 type 0 price 0.0   Request completed


Los campos Stop Loss y Take Profit están vacíos.


Esto ocurre sólo en SYMBOL_TRADE_EXECUTION_MARKET.

Aunque cuando cierro por Stop Loss, todo se configura correctamente...

 
Alexey Viktorov:

Probablemente porque el compilador no calcula el valor, sólo traduce el código del programa a código máquina.

Si el denominador es una constante, por ejemplo x/(5*0), el error se detecta en tiempo de compilación.

Es decir, el compilador no se limita a traducir el código, sino que realiza el cálculo.

Me parece que el compilador debería detectar un caso en el que el denominador es un producto en el que uno de los términos es 0 (constante), entonces el compilador debería producir un error de división por 0.

 
FileReadArray() no lee una matriz de datos cuando el tamaño del archivo supera los INT_MAX bytes.
 
Roffild:
FileReadArray() no lee la matriz de datos cuando el tamaño del archivo supera los INT_MAX bytes.

No es un FileReadArray, es un array que no puede ser mayor que ese tamaño. No es un error, esto es por diseño.

 
Kirill Belousov:

Si el denominador es una constante, por ejemplo, x/(5*0), el error se detecta en tiempo de compilación.

Es decir, el compilador no se limita a traducir el código, sino que realiza el cálculo.

Me parece que el compilador debería detectar un caso en el que el denominador es un producto en el que uno de los términos es 0 (constante), entonces el compilador debería producir un error de división por 0.

¿Conoce algún lenguaje y su compilador que pueda detectar estos errores?

Razón de la queja: