Errores típicos y cómo afrontarlos en el entorno comercial - página 4

 
Artyom Trishkin:

¿Y si el pedido es cancelado por el servidor?

Entonces en el siguiente tick el EA verá que no hay posiciones, y todo estará bien. Pero no habrá duplicación.


Artyom Trishkin:

Creo que al contabilizar las órdenes de mercado, deberíamos devolver WRONG_VALUE, por ejemplo, las posiciones no pueden ser inferiores a cero. Esto será una señal de que hay una orden de mercado no registrada. Pero no sume el número de puestos.

Esto depende de la lógica de la ST específica.

En el caso más básico en el que se permite una operación en el mercado, se debe devolver cualquier valor distinto de 0. 1 también servirá.

 
Andrey Khatimlianskii:

Entonces en el siguiente tick el asesor verá que no hay posiciones y todo estará bien. Pero no habrá duplicación.


Depende de la lógica de la ST en particular.

En el caso más básico, cuando se permite una operación en el mercado, basta con devolver cualquier valor que no sea 0, 1 servirá.

Este (el Asesor Experto) ya recibirá, en este tick, un valor mayor que la cantidad de órdenes de mercado. Es decir, en realidad son dos, pero la función dará como resultado 3.

Creo que este no es un comportamiento normal. Siempre debemos descansar un número válido, sin posiciones virtuales, que pueden no estar ahí.

Al fin y al cabo, hay estrategias que requieren cálculos precisos para un número preciso y definido de posiciones, volúmenes, niveles agregados de stop/parada, etc.

 
Andrey Khatimlianskii:

Depende de la lógica de la ST en particular.

En el caso más primitivo, cuando se permite una operación en el mercado, basta con devolver cualquier valor distinto de 0, 1 también servirá.

Andrew, una función a la que se le pide cantidad o volumen o cualquier otro dato cuantitativo está obligada a dar su valor exacto.

No es que estemos jugando con juguetes :)

 
Artyom Trishkin:

Andrew, una función a la que se le pide cantidad o volumen o cualquier otro dato cuantitativo está obligada a dar su valor exacto.

Estás viendo un ejemplo concreto de un EA con una operación en el mercado, y está escrito de forma incorrecta el 99% de las veces. Todavía hay que llegar a los complejos.

Si realmente quieres, cambia el nombre de la función a IsPosition y hazla booleana: return(Res>0);

 
Andrey Khatimlianskii:

Se considera un ejemplo específico de un EA con una operación en el mercado y se escribe mal el 99% de las veces. Todavía hay que llegar a los complejos.

Si realmente quieres, cambia el nombre de la función a IsPosition y hazla booleana: return(Res>0);

Pues no... es un ejemplo de alguna función de biblioteca común "para todas las ocasiones"...

Por cierto, interesante propuesta de convertirla en una función booleana -siguiendo el ejemplo de muchas funciones estándar de mql5- con retorno del resultado de la ejecución como valor bool, y número de posiciones pasando el valor a una variable por referencia.

 
Artyom Trishkin:

Pues no..., se plantea un ejemplo de función de biblioteca genérica "para todas las ocasiones"...

Sí, universal.

 
fxsaber:

Sí, universal.

La solución que propones contiene una inexactitud en la cancelación del pedido por parte del servidor. Me gustaría discutir las opciones para manejar esta inexactitud. Sin ellos, la propuesta es cruda.
 
Artyom Trishkin:
La solución sugerida por usted contiene una inexactitud de cancelación de pedidos por parte del servidor. Me gustaría debatir sobre cómo hacer frente a esta inexactitud. Sin ellos la oferta es cruda.

Dejemos de lado la MT5 y pasemos a la MT4. Un EA está operando. De repente, el bróker comete un error técnico (no tú) y coloca una posición en tu cuenta, que pasa con éxito el filtro del Asesor Experto amigo o enemigo -Magia, Símbolo, etc. Segundos después, el corredor corrige su error: borra (ni siquiera cierra) su posición de su cuenta.

¿Se romperá su ST?


Recuerdo una situación en la que un gran broker amante de los Asesores Expertos hizo un gran trabajo. Por "error" ingresó una cantidad muy elevada en la cuenta. En consecuencia, el Asesor Experto abrió una posición con un lote muy grande. Entonces el corredor corrigió el "error": retiró el dinero acreditado incorrectamente. La cuenta se cerró con un stop loss.

 
fxsaber:

Dejemos de lado la MT5 y pasemos a la MT4. Un EA está operando. De repente, el bróker comete un error técnico (no tú) y coloca una posición en tu cuenta, que pasa con éxito el filtro del Asesor Experto amigo o enemigo -Magia, Símbolo, etc. Segundos después, el corredor corrige su error: borra (ni siquiera cierra) su posición de su cuenta.

¿Se estropeará su ST?


Recuerdo una situación en la que un gran broker amante de los Asesores Expertos hizo un gran trabajo. Por "error" ingresó una cantidad muy elevada en la cuenta. En consecuencia, el Asesor Experto abrió una posición con un lote muy grande. Entonces el corredor corrigió el "error": retiró el dinero acreditado incorrectamente. La cuenta se cerró mediante un stopout.

No estamos hablando del TS.
Una función que DEBE devolver lo que está físicamente en la cuenta.
Todo el resto "imagina" - debe estar en el balance del desarrollador de TS. Pero debería tener en su arsenal una función sencilla que no mienta y que, sin embargo, le permita conocer el estado incierto del entorno.
 

Artyom Trishkin:
Мы говорим не о ТС.

En el ejemplo estamos hablando de la situación específica de CT descrita. Y ahí la pregunta queda sin respuesta.

Una función que DEBE devolver lo que está físicamente en la cuenta.
El resto de "imaginaciones" deben estar en el balance del promotor del TC. Pero debería tener en su arsenal una función sencilla, que no mienta, y que al mismo tiempo dé la posibilidad de conocer el estado indefinido del entorno.

La función devuelve lo que está físicamente en la cuenta. Y miente exactamente lo mismo que mentiría en MT4. Es decir, todo es normal.