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

 
fxsaber:

Me temo que esa es una lógica torcida. Pero podría estar equivocado, por supuesto. Sería interesante escuchar la lógica.

Arbitraje de más de 3 pies

 
Комбинатор:

Arbitraje de 3+ pies

Se pueden utilizar diferentes lógicas para este ST. Normalmente se trata de un envío asíncrono de tres órdenes. Pero, de hecho, hay variantes en las que se envía primero un OrderSend síncrono al símbolo más probable que sea fuerte. Y si el OrderSend termina en una posición abierta - se envían las dos órdenes OrderSendAsync menos probables.

En esta situación, puede parecer que la primera "posición" -la orden de mercado- necesita un mecanismo para determinar si la primera "posición" está incompleta. Pero el primer OrderSend pasa por una orden limitada al precio actual o ligeramente peor. Por lo tanto, no se considera una "posición". Las otras dos son órdenes de mercado, la mayoría de las veces. Y el hecho de contarlas como "posiciones" le permite evitar situaciones de reapertura de posiciones. En este caso, esta contabilidad no tiene efectos negativos.

 

En definitiva, tal y como yo lo entiendo, no habrá solución. Ni siquiera una solución, sino un principio de funcionamiento lógicamente correcto con el número de órdenes y posiciones.

Me refiero a la función utilizada para cualquier estrategia, otros dicen - para cada estrategia - una muleta diferente.

 
fxsaber:

Este ejemplo resultó ser mucho más genial. ¡El TP, que fue colocado por el propio corredor, fue redirigido! Y casi inmediatamente (estuve esperando 115 ms - aparentemente fue un error en MT5) después del re-registro, el broker colocó el siguiente TP, el cual fue ejecutado. Los comentarios de los pedidos no aparecen en la captura de pantalla. El color verde esORDER_REASON_TP. En consecuencia, la orden de rechazo tiene incluso ORDER_POSITION_ID.

No se trata de una orden de rechazo, sino de una orden normalmente ejecutada. Cuando se ejecuta, se obtiene el ID de posición.

Además, tenemos dos órdenes, una de las cuales no se ejecuta. Ahora la pregunta es: ¿cuántas posiciones (si estas órdenes no fueran órdenes de stop sino de posición), por lo tanto - cuántas posiciones le devolvería su enfoque? La respuesta es: una más, que es falsa. ¿Por qué lo harías entonces?

 
Artyom Trishkin:

Ya no se trata de una orden de rechazo, sino de una orden normalmente ejecutada. Cuando se ejecuta, es cuando se recibe el ID de posición.

Tienes una idea equivocada.


Una cosa más: hay dos órdenes, una de las cuales no se ejecutó. Ahora la pregunta es: ¿cuántas posiciones (si estas órdenes no fueran órdenes de stop sino de posición), entonces cuántas posiciones le devolvería su enfoque? La respuesta es: una más, que es falsa. ¿Por qué lo harías entonces?

Hagámoslo de nuevo. Supongamos que hay dos puestos vacantes. Y establezcamos el futuro orden de mercado de este tipo. La función devuelve 2+1=3. TS considera que hay tres posiciones y todo está bien. En 16 ms llega la rechaza. El TS comprueba cuántas posiciones - 2+0=2. ¡Y necesita tres! - envía otra orden de mercado. Entonces de nuevo 2+1=3. Y se ejecuta la orden, obteniendo 3+0=3.

 
Artyom Trishkin:

En general, según entiendo, no habrá solución. Ni siquiera una solución, sino un principio de funcionamiento lógicamente correcto con el número de órdenes y posiciones.

Me refiero a la función utilizada para cualquier estrategia, otros dicen - para cada estrategia - una muleta diferente.

No he cambiado de opinión. La función sigue siendo universal para el 99,9% de los EA y las plataformas de negociación.

 
fxsaber:

Tienes una idea equivocada.


Vamos a repasarlo de nuevo. Supongamos que hay dos puestos vacantes. Y ponemos este tipo de orden de mercado futuro. La función devuelve 2+1=3. El TS mira tres posiciones y todo está bien. En 16 ms llega la rechaza. El TS comprueba cuántas posiciones - 2+0=2. ¡Y necesita tres! - envía otra orden de mercado. Entonces de nuevo 2+1=3. Y se ejecuta la orden, obteniendo 3+0=3.

#896615 - rechazar, y NO tiene una posición de identificación.

Digámoslo de otra manera. Supongamos que hay dos puestos vacantes. Recibimos una señal para abrir una tercera posición, nos envía una solicitud de operación y obtenemos esta orden de mercado inversa. Si tenemos tres posiciones, nuestro EA pasará a enviar otras solicitudes de operación utilizando un símbolo diferente. La función devuelve 2+1=3. El TS mira tres posiciones y comienza a calcular los volúmenes, toma/paradas de tres posiciones más - por otro símbolo, envía órdenes de comercio para abrir por otro símbolo. Después de 16 ms llega la reoferta de uno de otro símbolo. TS mira cuántas posiciones - 2(actuales)+3(2 posiciones y un mercado de otro símbolo)=5. ¡Y deberían ser seis! - Envía otra orden de mercado para el símbolo actual a un precio completamente diferente y calcula el volumen y los despegues/paradas de las nuevas posiciones para el tercer símbolo. Luego se repite el mismo lío.

Y entonces nos rascamos la cabeza: ¿por qué se ha vuelto loco?

¿O cree que tiene que crear funciones para una sola -su- estrategia y lógica de construcción de ST? Te equivocas.

 
fxsaber:

No he cambiado de opinión. La función sigue siendo universal para el 99,9% de los EA y las plataformas de negociación.

No. Sólo para una lógica de comportamiento.

Y hay miles de ellos.

 
fxsaber:

No he cambiado de opinión. La función sigue siendo universal para el 99,9% de los EA y las plataformas de negociación.

La función debe devolver lo que se le pide. De forma clara e incondicional, y no para que el usuario decida lo que necesita después.

La lógica que sugiero debería ser la siguiente

  • Pregunta: ¿Cuántos puestos hay?
  • Respuesta: dos

... O debería ser así:

  • Pregunta: ¿cuántos puestos hay?
  • Respuesta: Un momento, aún no está claro
  • Esperando, entonces la pregunta: ¿cuántos puestos hay?
  • Respuesta: tres

Y tú sugieres:

  • Pregunta: ¿Cuántos puestos hay?
  • La respuesta es tres.
  • Ok, eso es lo que he esperado, sigue contando y abre en otro símbolo ... Al cabo de un rato: Qué mierda... Pregunta: ¿Cuántas posiciones?
  • Respuesta: dos.
  • Pregunta: ¿por qué ha dicho tres?
  • Respuesta: Pensé que podría necesitarlo más tarde
  • Pregunta: ¿cuántas posiciones para el otro símbolo
  • Respuesta: tres
  • ¿Sí? ¿Está seguro? Y así perdió dinero en el otro símbolo con la última respuesta ...
 
Artyom Trishkin:

El #896615 es rechazado y NO tiene una posición de identificación.

Lee el número que aparece en el tercer recuadro rojo de la izquierda en la captura de pantalla anterior.

Digámoslo de otra manera. Supongamos que hay dos puestos vacantes. Obtenemos una señal para abrir una tercera posición, enviamos una solicitud de operación y obtenemos esta orden de mercado redirigida. Si tenemos tres posiciones, nuestro EA pasará a enviar otras solicitudes de operación utilizando un símbolo diferente. La función devuelve 2+1=3. El TS mira tres posiciones y comienza a calcular los volúmenes, toma/paradas de tres posiciones más - por otro símbolo, envía órdenes de comercio para abrir por otro símbolo. Después de 16 ms llega la reoferta de uno de otro símbolo. TS mira cuántas posiciones - 2(actuales)+3(2 posiciones y un mercado de otro símbolo)=5. ¡Y deberían ser seis! - Envía otra orden de mercado para el símbolo actual a un precio completamente diferente y calcula el volumen y los despegues/paradas de las nuevas posiciones para el tercer símbolo. Luego se repite el mismo lío.

Y luego nos rascamos la cabeza preguntándonos por qué se ha vuelto loco.

Si no escribe y compone la lógica de comercio doblada, no sólo rayará su propia reputación. Tengo entendido que entre los corruptos TK, que probablemente inundaron el trabajo por cuenta propia, esto no es raro. Y como el dinero no huele, alguien los coge por el principio, si te piden una mierda, hazlo y olvídate. Nunca se ha escrito nada parecido en una pesadilla. Pero estoy seguro de que los autónomos saben mucho mejor que yo los grados de las heces entre los CT. Así que sí, para TCs inadecuados puede ser muy útil la opción propuesta por @Combinator- para hacer los pies fuera de TC, tan pronto como se encontró una orden de mercado con cero ID.

¿O crees que tenemos que crear funciones para una sola -tu- estrategia y lógica de construcción de la ST? Te equivocas.

Creo que tenemos que pensar, como mínimo. Y no crear un entorno adecuado para la cría de abominables TC. Lamentablemente, no soy capaz de formular un criterio para definir un fondo entre los CT. Para no herir a nadie, voy a invertir la visión del mundo - yo mismo en el fondo, y conocido TK flotará en las leyes de la física.


La receta, como se dice, es universal:

  1. Encontrarse con una orden de mercado con ID cero - salir inmediatamente.
  2. MT5-OrderSend se ha reescrito para que siempre devuelva un Result.deal distinto de cero - el código fuente se ha publicado en KB.
  3. Después de cada OrderSend o Sleep enviar al punto 1.
Con este planteamiento, cualquier TC (al 100%) funcionará.