Errores, fallos, preguntas - página 1887

 
Vladimir Karputov:

Por lo que veo, no has comprobado el código que te mostré. Qué tal esto: primero lo compruebas y luego vuelves a hacer la pregunta.

No necesito verificarlo, puedo ver que devuelve lo que debe.

Me refería al primer uso de la función

 
Alexandr Bryzgalov:

No necesito verificarlo, puedo ver que devuelve lo que necesito

Me refería a la primera variante del uso de la función


Bien, entonces. Vamos por la cola.

1. PositionGetInteger:

La función devuelve la propiedad solicitada de una posición abierta previamente seleccionada mediante la función...

Es decir, antes de utilizar PositionGetInteger, hay que seleccionar la posición.


2. Seleccionamos la posición utilizando el PositionGetTicket:

Valor de retorno.

La papeleta de la posición. En caso de una ejecución fallida devuelve 0.


¿Y dónde tienes una comprobación (después del bucle) de que se ha devuelto desde PositionGetTicket? No hay comprobación, y ahí, por cierto, se devuelve "cero" -es decir, PositionGetTicket se disparó con un error- lo que equivale a seleccionar una posición que no existe. Luego, sin comprobar el resultado de PositionGetTicket, se intenta obtener su propiedad de la posición inexistente. Y ahí, en las propiedades de la posición inexistente, o bien basura o bien datos de estructuras nulas.


Resumiendo: sin comprobar si el PositionGetTicket devuelve "cero", no se puede ir más allá.

 
Vladimir Karputov:


Bien, entonces. Vamos por la cola.

1. PositionGetInteger:

La función devuelve la propiedad solicitada de una posición abierta previamente seleccionada mediante la función...

Es decir, primero hay que seleccionar la posición antes de utilizar PositionGetInteger.


2. Seleccionamos la posición mediante el PositionGetTicket:

Valor de retorno.

La papeleta de la posición. En caso de una ejecución fallida devuelve 0.


¿Y dónde tienes una comprobación (después del bucle) de que se ha devuelto desde PositionGetTicket? No hay comprobación, y ahí, por cierto, se devuelve "cero" -es decir, PositionGetTicket se disparó con un error- lo que equivale a seleccionar una posición que no existe. Luego, sin comprobar el resultado de PositionGetTicket, se intenta obtener su propiedad de la posición inexistente. Y ahí, en las propiedades de la posición inexistente, o bien basura o bien datos de estructuras nulas.


En resumen: si no se comprueba que el PositionGetTicket devuelve "cero", no se puede ir más allá.

Gracias, muy detallado y útil.
 
Vladimir Karputov:


Bien, hagamos esto. Vamos por la cola.

1. PositionGetInteger:

La función devuelve la propiedad solicitada de una posición abierta previamente seleccionada mediante la función...

Es decir, primero hay que seleccionar la posición antes de utilizar PositionGetInteger.


2. Seleccionamos la posición mediante el PositionGetTicket:

Valor de retorno.

La papeleta de la posición. En caso de una ejecución fallida devuelve 0.


¿Y dónde tienes una comprobación (después del bucle) de que se ha devuelto desde PositionGetTicket? No hay comprobación, y ahí, por cierto, se devuelve "cero" -es decir, PositionGetTicket se disparó con un error- lo que equivale a seleccionar una posición que no existe. Luego, sin comprobar el resultado de PositionGetTicket, se intenta obtener su propiedad de la posición inexistente. Y ahí, en las propiedades de la posición inexistente, o bien basura o bien datos de estructuras nulas.


Resumiendo: si no se comprueba que el PositionGetTicket devuelve "cero", no se puede ir más allá.

no hace falta que te expliques )

Esa no es la cuestión.

leer correctamente: ¿es correcto que una función devuelva el mismo valor para diferentes situaciones?

¿está bien que la función haga eso?
 
Vladimir Karputov:

Resumiendo: si no se comprueba que PositionGetTicket devuelve "cero" no se puede seguir adelante.

Puedes

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bichos, errores, preguntas

fxsaber, 2017.05.12 11:19

es lógico hacer una comprobación (PositionGetInteger(POSITION_TICKET) > 0).
 
Alexandr Bryzgalov:

esa función para diferentes situaciones devuelve el mismo valor?

¿es correcto que la función haga esto?
Por desgracia, sí.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bichos, errores, preguntas

fxsaber, 2017.05.12 11:29

Sí, pero cualquier otro valor también sería engañoso.
 
Alexandr Bryzgalov:

1. no tienes que dar explicaciones).

ese no es el punto

2. Lee bien: ¿es correcto que una función devuelva el mismo valor para diferentes situaciones?

¿está bien que una función haga esto?


1. Usted es una persona maleducada que también ha cometido un error en su código, pero no quiere admitirlo.

2. La función funciona de forma absolutamente correcta. Porque (PositionGetInteger(POSITION_TYPE)) sólo puede devolver 2 valores - o POSITION_TYPE_BUY oPOSITION_TYPE_SELL. Pero sin seleccionar una posición (y no se selecciona - no se comprueba qué es exactamente lo que se ha seleccionado) exigir algo de (PositionGetInteger(POSITION_TYPE)) es una imprudencia.


En resumen: cuando tu código está escrito con un error lógico - simplemente no tienes derecho a exigir algo de las funciones del sistema.

 
Vladimir Karputov:

En resumen: cuando su código está escrito con un error lógico - simplemente no tiene derecho a exigir nada de las funciones del sistema.

Un buen ejemplo es cuando la pregunta nunca fue respondida.
 
Vladimir Karputov:


1. Eres un maleducado que ha cometido un error en el código pero no lo admite.

2. La función funciona de forma absolutamente correcta. Porque (PositionGetInteger(POSITION_TYPE)) sólo puede devolver DOS valores - o POSITION_TYPE_BUY oPOSITION_TYPE_SELL. Pero sin seleccionar una posición (y no se selecciona - no se comprueba qué es exactamente lo que se ha seleccionado) exigir algo de (PositionGetInteger(POSITION_TYPE)) es una imprudencia.


En resumen: cuando tu código está escrito con un error lógico, simplemente no tienes derecho a exigir algo a las funciones del sistema.

Lo siento, no es mi culpa que alguien no pueda ver el tema.

Se reconoce que hay un error deliberado en el código.

Y sé cómo arreglarlo.

Pero la cuestión es diferente.

 

¿Por qué la función PositionGetInteger(POSITION_TYPE) devuelve un valor de compra (igual a 0) en lugar de un valor de error (igual a 0) si los parámetros de entrada no son correctos?

Razón de la queja: